com.phloxui
Version:
PhloxUI Ng2+ Framework
929 lines (928 loc) • 68.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, Output, EventEmitter } from '@angular/core';
import { I18N } from '../../../../../decorator/I18N.decorator';
import { Option } from '../../../../../decorator/Option.decorator';
import { EventUtils } from '../../../../../share/utils/EventUtils';
import { CLICK_EVENT, BEFORE_CLICK_EVENT, FOCUS_EVENT, BEFORE_FOCUS_EVENT, LOST_FOCUS_EVENT, BEFORE_LOST_FOCUS_EVENT } from '../../../../../share/CustomEventType';
import { AbstractI18NApplicable } from '../../../../../share/AbstractI18NApplicable';
import { NeedFocusService } from '../../../../../service/NeedFocusService.service';
var /** @type {?} */ TYPE_NAME = "material-button";
var /** @type {?} */ DEFAULT_BUTTON_ICON = 'favorite';
var MaterialButton = /** @class */ (function (_super) {
tslib_1.__extends(MaterialButton, _super);
function MaterialButton(elementRef, needFocusService) {
var _this = _super.call(this) || this;
_this.elementRef = elementRef;
_this.needFocusService = needFocusService;
_this.beforeClickEvent = new EventEmitter();
_this.clickEvent = new EventEmitter();
_this.beforeFocusEvent = new EventEmitter();
_this.focusEvent = new EventEmitter();
_this.beforeLostFocusEvent = new EventEmitter();
_this.lostFocusEvent = new EventEmitter();
_this.icon = DEFAULT_BUTTON_ICON;
_this.type = "mat-button";
_this.color = "basic";
return _this;
}
/**
* @return {?}
*/
MaterialButton.prototype.ngOnInit = /**
* @return {?}
*/
function () {
};
/**
* @param {?} changes
* @return {?}
*/
MaterialButton.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
var _this = this;
setTimeout(function () {
_this.initEventHandlers();
}, 20);
};
/**
* @param {?} styleClass
* @return {?}
*/
MaterialButton.prototype.setStyleClass = /**
* @param {?} styleClass
* @return {?}
*/
function (styleClass) {
this.styleClass = styleClass;
};
/**
* @return {?}
*/
MaterialButton.prototype.getStyleClass = /**
* @return {?}
*/
function () {
return this.styleClass;
};
/**
* @return {?}
*/
MaterialButton.prototype.isDisable = /**
* @return {?}
*/
function () {
return this.disabled;
};
/**
* @param {?} disable
* @return {?}
*/
MaterialButton.prototype.setDisable = /**
* @param {?} disable
* @return {?}
*/
function (disable) {
this.disabled = disable;
};
/**
* @return {?}
*/
MaterialButton.prototype.isDisableRipple = /**
* @return {?}
*/
function () {
return this.disableRipple;
};
/**
* @param {?} disableRipple
* @return {?}
*/
MaterialButton.prototype.setDisableRipple = /**
* @param {?} disableRipple
* @return {?}
*/
function (disableRipple) {
this.disableRipple = disableRipple;
};
/**
* @param {?} type
* @return {?}
*/
MaterialButton.prototype.setType = /**
* @param {?} type
* @return {?}
*/
function (type) {
this.type = type;
};
/**
* @return {?}
*/
MaterialButton.prototype.getType = /**
* @return {?}
*/
function () {
return this.type;
};
/**
* @return {?}
*/
MaterialButton.prototype.getColor = /**
* @return {?}
*/
function () {
return this.color;
};
/**
* @param {?} color
* @return {?}
*/
MaterialButton.prototype.setColor = /**
* @param {?} color
* @return {?}
*/
function (color) {
this.color = color;
};
/**
* @return {?}
*/
MaterialButton.prototype.getLabel = /**
* @return {?}
*/
function () {
return this.label;
};
/**
* @param {?} label
* @return {?}
*/
MaterialButton.prototype.setLabel = /**
* @param {?} label
* @return {?}
*/
function (label) {
this.label = label;
};
/**
* @return {?}
*/
MaterialButton.prototype.getButtonIcon = /**
* @return {?}
*/
function () {
return this.icon = this.icon === 'favorite' ? DEFAULT_BUTTON_ICON : this.icon;
};
/**
* @param {?} buttonIcon
* @return {?}
*/
MaterialButton.prototype.setButtonIcon = /**
* @param {?} buttonIcon
* @return {?}
*/
function (buttonIcon) {
this.icon = buttonIcon;
};
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
MaterialButton.prototype.onClick = /**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
function ($event, fireEvent) {
var _this = this;
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
EventUtils.handleBrowserEvent(this, 'beforeClickEvent', $event, fireEvent, function ($event) {
// doEvent
}, function ($event) {
// emitBeforeEvent
// emitBeforeEvent
_this.emitBeforeClickEvent($event);
}, function ($event, result) {
// emitAfterEvent
// emitAfterEvent
_this.emitClickEvent($event);
}, function ($event) {
// doPrevented
});
};
/**
* @param {?=} $event
* @return {?}
*/
MaterialButton.prototype.emitBeforeClickEvent = /**
* @param {?=} $event
* @return {?}
*/
function ($event) {
var /** @type {?} */ eventData = null;
// emit event
var /** @type {?} */ data = eventData;
var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_CLICK_EVENT, this, data, $event);
if (this.beforeClickEvent !== null && this.beforeClickEvent !== undefined) {
this.beforeClickEvent.emit(ev);
}
};
/**
* @param {?=} $event
* @return {?}
*/
MaterialButton.prototype.emitClickEvent = /**
* @param {?=} $event
* @return {?}
*/
function ($event) {
var /** @type {?} */ eventData = null;
// emit event
var /** @type {?} */ data = eventData;
var /** @type {?} */ ev = EventUtils.newCustomEvent(CLICK_EVENT, this, data, $event);
if (this.clickEvent !== null && this.clickEvent !== undefined) {
this.clickEvent.emit(ev);
}
};
/**
* @return {?}
*/
MaterialButton.prototype.getI18NKey = /**
* @return {?}
*/
function () {
if (this.i18nKey === null || typeof this.i18nKey === 'undefined' || this.i18nKey === '') {
// lower case first charactor
var /** @type {?} */ className = this.constructor.name;
return className.charAt(0).toLowerCase() + className.slice(1);
}
return this.name;
};
/**
* @param {?} $event
* @return {?}
*/
MaterialButton.prototype.onFocusing = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
this.needFocusService.setFocusingComponent(this, $event);
};
/**
* @param {?} $event
* @return {?}
*/
MaterialButton.prototype.onLostFocusing = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
this.needFocusService.resetFocusingComponent($event);
};
/**
* @param {?} $event
* @return {?}
*/
MaterialButton.prototype.doFocus = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
if (this.type === "mat-button") {
if ($(this.elementRef.nativeElement).find('button.mat-button:focus').length <= 0) {
$(this.elementRef.nativeElement).find('button.mat-button').focus();
}
}
else if (this.type === "mat-raised-button") {
if ($(this.elementRef.nativeElement).find('button.mat-raised-button:focus').length <= 0) {
$(this.elementRef.nativeElement).find('button.mat-raised-button').focus();
}
}
else if (this.type === "mat-stroked-button") {
if ($(this.elementRef.nativeElement).find('button.mat-stroked-button:focus').length <= 0) {
$(this.elementRef.nativeElement).find('button.mat-stroked-button').focus();
}
}
else if (this.type === "mat-flat-button") {
if ($(this.elementRef.nativeElement).find('button.mat-flat-button:focus').length <= 0) {
$(this.elementRef.nativeElement).find('button.mat-flat-button').focus();
}
}
else if (this.type === "mat-icon-button") {
if ($(this.elementRef.nativeElement).find('button.mat-icon-button:focus').length <= 0) {
$(this.elementRef.nativeElement).find('button.mat-icon-button').focus();
}
}
};
/**
* @param {?} $event
* @return {?}
*/
MaterialButton.prototype.doLostFocus = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
if (this.type === "mat-button") {
if ($(this.elementRef.nativeElement).find('button.mat-button:focus').length > 0) {
$(this.elementRef.nativeElement).find('button.mat-button').blur();
}
}
else if (this.type === "mat-raised-button") {
if ($(this.elementRef.nativeElement).find('button.mat-raised-button:focus').length > 0) {
$(this.elementRef.nativeElement).find('button.mat-raised-button').blur();
}
}
else if (this.type === "mat-stroked-button") {
if ($(this.elementRef.nativeElement).find('button.mat-stroked-button:focus').length > 0) {
$(this.elementRef.nativeElement).find('button.mat-stroked-button').blur();
}
}
else if (this.type === "mat-flat-button") {
if ($(this.elementRef.nativeElement).find('button.mat-flat-button:focus').length > 0) {
$(this.elementRef.nativeElement).find('button.mat-flat-button').blur();
}
}
else if (this.type === "mat-icon-button") {
if ($(this.elementRef.nativeElement).find('button.mat-icon-button:focus').length > 0) {
$(this.elementRef.nativeElement).find('button.mat-icon-button').blur();
}
}
};
/**
* @return {?}
*/
MaterialButton.prototype.initEventHandlers = /**
* @return {?}
*/
function () {
var _this = this;
if (this.type === "mat-button") {
$(this.elementRef.nativeElement).find('button.mat-button').focus(function ($event) {
_this.onFocusing($event);
});
$(this.elementRef.nativeElement).find('button.mat-button').blur(function ($event) {
_this.onLostFocusing($event);
});
}
else if (this.type === "mat-raised-button") {
$(this.elementRef.nativeElement).find('button.mat-raised-button').focus(function ($event) {
_this.onFocusing($event);
});
$(this.elementRef.nativeElement).find('button.mat-raised-button').blur(function ($event) {
_this.onLostFocusing($event);
});
}
else if (this.type === "mat-stroked-button") {
$(this.elementRef.nativeElement).find('button.mat-stroked-button').focus(function ($event) {
_this.onFocusing($event);
});
$(this.elementRef.nativeElement).find('button.mat-stroked-button').blur(function ($event) {
_this.onLostFocusing($event);
});
}
else if (this.type === "mat-flat-button") {
$(this.elementRef.nativeElement).find('button.mat-flat-button').focus(function ($event) {
_this.onFocusing($event);
});
$(this.elementRef.nativeElement).find('button.mat-flat-button').blur(function ($event) {
_this.onLostFocusing($event);
});
}
else if (this.type === "mat-icon-button") {
$(this.elementRef.nativeElement).find('button.mat-icon-button').focus(function ($event) {
_this.onFocusing($event);
});
$(this.elementRef.nativeElement).find('button.mat-icon-button').blur(function ($event) {
_this.onLostFocusing($event);
});
}
};
/**
* @param {?=} $event
* @return {?}
*/
MaterialButton.prototype.emitBeforeFocusEvent = /**
* @param {?=} $event
* @return {?}
*/
function ($event) {
// emit event
var /** @type {?} */ data = null;
var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_FOCUS_EVENT, this, data, $event);
if (this.beforeFocusEvent !== null && this.beforeFocusEvent !== undefined) {
this.beforeFocusEvent.emit(ev);
}
};
/**
* @param {?=} $event
* @return {?}
*/
MaterialButton.prototype.emitBeforeLostFocusEvent = /**
* @param {?=} $event
* @return {?}
*/
function ($event) {
// emit event
var /** @type {?} */ data = null;
var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_LOST_FOCUS_EVENT, this, data, $event);
if (this.beforeLostFocusEvent !== null && this.beforeLostFocusEvent !== undefined) {
this.beforeLostFocusEvent.emit(ev);
}
};
/**
* @param {?} $event
* @return {?}
*/
MaterialButton.prototype.emitLostFocusEvent = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
var /** @type {?} */ data = null;
var /** @type {?} */ ev = EventUtils.newCustomEvent(LOST_FOCUS_EVENT, this, data, $event);
if (this.lostFocusEvent !== null && this.lostFocusEvent !== undefined) {
this.lostFocusEvent.emit(ev);
}
};
/**
* @param {?} $event
* @return {?}
*/
MaterialButton.prototype.emitFocusEvent = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
var /** @type {?} */ data = null;
var /** @type {?} */ ev = EventUtils.newCustomEvent(FOCUS_EVENT, this, data, $event);
if (this.focusEvent !== null && this.focusEvent !== undefined) {
this.focusEvent.emit(ev);
}
};
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
MaterialButton.prototype.onLostFocus = /**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
function ($event, fireEvent) {
var _this = this;
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
EventUtils.handleBrowserEvent(this, 'beforeLostFocusEvent', $event, fireEvent, function ($event) {
// doEvent
// doEvent
_this.doLostFocus($event);
}, function ($event) {
// emitBeforeEvent
// emitBeforeEvent
_this.emitBeforeLostFocusEvent($event);
}, function ($event, result) {
// emitAfterEvent
// emitAfterEvent
_this.emitLostFocusEvent($event);
}, function ($event) {
// doPrevented
// Reset focus on DOM
setTimeout(function () {
_this.doFocus($event);
}, 5);
});
};
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
MaterialButton.prototype.onFocus = /**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
function ($event, fireEvent) {
var _this = this;
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
EventUtils.handleBrowserEvent(this, 'beforeFocusEvent', $event, fireEvent, function ($event) {
// doEvent
// doEvent
_this.doFocus($event);
}, function ($event) {
// emitBeforeEvent
// emitBeforeEvent
_this.emitBeforeFocusEvent($event);
}, function ($event, result) {
// emitAfterEvent
// emitAfterEvent
_this.emitFocusEvent($event);
}, function ($event) {
// doPrevented
// Reset focus on DOM
setTimeout(function () {
_this.doLostFocus($event);
}, 5);
});
};
/**
* @return {?}
*/
MaterialButton.prototype.getData = /**
* @return {?}
*/
function () {
};
/**
* @param {?} data
* @return {?}
*/
MaterialButton.prototype.setData = /**
* @param {?} data
* @return {?}
*/
function (data) {
};
/**
* @param {?} child
* @return {?}
*/
MaterialButton.prototype.addDataChild = /**
* @param {?} child
* @return {?}
*/
function (child) {
};
/**
* @param {?} child
* @return {?}
*/
MaterialButton.prototype.removeDataChild = /**
* @param {?} child
* @return {?}
*/
function (child) {
};
/**
* @param {?} dataParent
* @return {?}
*/
MaterialButton.prototype.setDataParent = /**
* @param {?} dataParent
* @return {?}
*/
function (dataParent) {
if (this.dataParent !== null && typeof this.dataParent !== 'undefined') {
if (typeof this.dataParent.removeDataChild === 'function') {
this.dataParent.removeDataChild(this);
}
}
this.dataParent = dataParent;
if (this.dataParent !== null && typeof this.dataParent !== 'undefined') {
if (typeof this.dataParent.addDataChild === 'function') {
this.dataParent.addDataChild(this);
}
}
};
/**
* @return {?}
*/
MaterialButton.prototype.getDataParent = /**
* @return {?}
*/
function () {
return this.dataParent;
};
/**
* @return {?}
*/
MaterialButton.prototype.getDataChildren = /**
* @return {?}
*/
function () {
return;
};
/**
* @return {?}
*/
MaterialButton.prototype.isDataDirty = /**
* @return {?}
*/
function () {
return;
};
/**
* @return {?}
*/
MaterialButton.prototype.isIgnoreParentData = /**
* @return {?}
*/
function () {
return;
};
/**
* @param {?} ignore
* @return {?}
*/
MaterialButton.prototype.setIgnoreParentData = /**
* @param {?} ignore
* @return {?}
*/
function (ignore) {
};
/**
* @param {?=} data
* @return {?}
*/
MaterialButton.prototype.saveData = /**
* @param {?=} data
* @return {?}
*/
function (data) {
};
/**
* @return {?}
*/
MaterialButton.prototype.resetData = /**
* @return {?}
*/
function () {
};
/**
* @return {?}
*/
MaterialButton.prototype.getBeforeClickEvent = /**
* @return {?}
*/
function () {
return this.beforeClickEvent;
};
/**
* @param {?} event
* @return {?}
*/
MaterialButton.prototype.setBeforeClickEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.beforeClickEvent = event;
};
/**
* @return {?}
*/
MaterialButton.prototype.getClickEvent = /**
* @return {?}
*/
function () {
return this.clickEvent;
};
/**
* @param {?} event
* @return {?}
*/
MaterialButton.prototype.setClickEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.clickEvent = event;
};
/**
* @return {?}
*/
MaterialButton.prototype.getBeforeFocusEvent = /**
* @return {?}
*/
function () {
return this.beforeFocusEvent;
};
/**
* @param {?} event
* @return {?}
*/
MaterialButton.prototype.setBeforeFocusEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.beforeFocusEvent = event;
};
/**
* @return {?}
*/
MaterialButton.prototype.getFocusEvent = /**
* @return {?}
*/
function () {
return this.focusEvent;
};
/**
* @param {?} event
* @return {?}
*/
MaterialButton.prototype.setFocusEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.focusEvent = event;
};
/**
* @return {?}
*/
MaterialButton.prototype.getBeforeLostFocusEvent = /**
* @return {?}
*/
function () {
return this.beforeLostFocusEvent;
};
/**
* @param {?} event
* @return {?}
*/
MaterialButton.prototype.setBeforeLostFocusEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.beforeLostFocusEvent = event;
};
/**
* @return {?}
*/
MaterialButton.prototype.getLostFocusEvent = /**
* @return {?}
*/
function () {
return this.lostFocusEvent;
};
/**
* @param {?} event
* @return {?}
*/
MaterialButton.prototype.setLostFocusEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.lostFocusEvent = event;
};
MaterialButton.TYPE_NAME = TYPE_NAME;
MaterialButton.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: "<div class=\"material-input\">\n <button [color]=\"getColor()\" [ngClass]=\"getStyleClass()\" [disableRipple]=\"isDisableRipple()\" [disabled]=\"isDisable()\" *ngIf=\"getType() === 'mat-button'\" mat-button (click)=\"onClick($event)\">{{ getLabel() }}</button>\n <button [color]=\"getColor()\" [ngClass]=\"getStyleClass()\" [disableRipple]=\"isDisableRipple()\" [disabled]=\"isDisable()\" *ngIf=\"getType() === 'mat-raised-button'\" mat-raised-button (click)=\"onClick($event)\" >{{ getLabel() }}</button>\n <button [color]=\"getColor()\" [ngClass]=\"getStyleClass()\" [disableRipple]=\"isDisableRipple()\" [disabled]=\"isDisable()\" *ngIf=\"getType() === 'mat-stroked-button'\" mat-stroked-button (click)=\"onClick($event)\" >{{ getLabel() }}</button>\n <button [color]=\"getColor()\" [ngClass]=\"getStyleClass()\" [disableRipple]=\"isDisableRipple()\" [disabled]=\"isDisable()\" *ngIf=\"getType() === 'mat-flat-button'\" mat-flat-button (click)=\"onClick($event)\" >{{ getLabel() }}</button>\n <button [color]=\"getColor()\" [ngClass]=\"getStyleClass()\" [disableRipple]=\"isDisableRipple()\" [disabled]=\"isDisable()\" *ngIf=\"getType() === 'mat-icon-button'\" mat-icon-button (click)=\"onClick($event)\" >\n <mat-icon>{{ getButtonIcon() }}</mat-icon>\n </button>\n</div>\n",
},] },
];
/** @nocollapse */
MaterialButton.ctorParameters = function () { return [
{ type: ElementRef, },
{ type: NeedFocusService, },
]; };
MaterialButton.propDecorators = {
"beforeClickEvent": [{ type: Output, args: ['phxBeforeClick',] },],
"clickEvent": [{ type: Output, args: ['phxClick',] },],
"beforeFocusEvent": [{ type: Output, args: ['phxBeforeFocus',] },],
"focusEvent": [{ type: Output, args: ['phxFocus',] },],
"beforeLostFocusEvent": [{ type: Output, args: ['phxBeforeLostFocus',] },],
"lostFocusEvent": [{ type: Output, args: ['phxLostFocus',] },],
"disableRipple": [{ type: Input },],
"disabled": [{ type: Input },],
"color": [{ type: Input },],
"type": [{ type: Input },],
"styleClass": [{ type: Input },],
"name": [{ type: Input },],
"icon": [{ type: Input },],
"label": [{ type: Input },],
};
tslib_1.__decorate([
Option('beforeClick'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialButton.prototype, "beforeClickEvent", void 0);
tslib_1.__decorate([
Option('click'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialButton.prototype, "clickEvent", void 0);
tslib_1.__decorate([
Option('beforeFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialButton.prototype, "beforeFocusEvent", void 0);
tslib_1.__decorate([
Option('focus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialButton.prototype, "focusEvent", void 0);
tslib_1.__decorate([
Option('beforeLostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialButton.prototype, "beforeLostFocusEvent", void 0);
tslib_1.__decorate([
Option('lostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialButton.prototype, "lostFocusEvent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialButton.prototype, "dataParent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialButton.prototype, "disableRipple", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialButton.prototype, "disabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialButton.prototype, "color", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialButton.prototype, "type", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialButton.prototype, "styleClass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialButton.prototype, "name", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", String)
], MaterialButton.prototype, "icon", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", String)
], MaterialButton.prototype, "label", void 0);
return MaterialButton;
}(AbstractI18NApplicable));
export { MaterialButton };
function MaterialButton_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
MaterialButton.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
MaterialButton.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
MaterialButton.propDecorators;
/** @type {?} */
MaterialButton.TYPE_NAME;
/** @type {?} */
MaterialButton.prototype.elementRef;
/** @type {?} */
MaterialButton.prototype.needFocusService;
/** @type {?} */
MaterialButton.prototype.beforeClickEvent;
/** @type {?} */
MaterialButton.prototype.clickEvent;
/** @type {?} */
MaterialButton.prototype.beforeFocusEvent;
/** @type {?} */
MaterialButton.prototype.focusEvent;
/** @type {?} */
MaterialButton.prototype.beforeLostFocusEvent;
/** @type {?} */
MaterialButton.prototype.lostFocusEvent;
/** @type {?} */
MaterialButton.prototype.dataParent;
/** @type {?} */
MaterialButton.prototype.disableRipple;
/** @type {?} */
MaterialButton.prototype.disabled;
/** @type {?} */
MaterialButton.prototype.color;
/** @type {?} */
MaterialButton.prototype.type;
/** @type {?} */
MaterialButton.prototype.styleClass;
/** @type {?} */
MaterialButton.prototype.name;
/** @type {?} */
MaterialButton.prototype.icon;
/** @type {?} */
MaterialButton.prototype.label;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0ZXJpYWxCdXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvdGhlbWUvbWF0ZXJpYWwvY29tcG9uZW50L2RhdGF2aWV3L2lucHV0L01hdGVyaWFsQnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25LLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBS25GLHFCQUFNLFNBQVMsR0FBVyxpQkFBaUIsQ0FBQztBQUM1QyxxQkFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUM7O0lBZ0JILDBDQUFzQjtJQXNEeEQsd0JBQVksVUFBc0IsRUFBRSxnQkFBbUM7UUFBdkUsWUFDRSxpQkFBTyxTQWNSO1FBWkMsS0FBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsS0FBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLEtBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNDLEtBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FB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Q00sWUFBWTs7O1FBRTNDLE1BQU0sQ0FBQyxXQUFXLENBQUM7MENBQ00sWUFBWTs7O1FBRXJDLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLElBQUksRUFBRTtRQUNOLE1BQU0sRUFBRTs7OztRQUdSLElBQUksRUFBRTtRQUNOLE1BQU0sRUFBRTs7O3lCQS9FWDtFQTRCb0Msc0JBQXNCO1NBQTdDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJMThOIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVjb3JhdG9yL0kxOE4uZGVjb3JhdG9yJztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvci9PcHRpb24uZGVjb3JhdG9yJztcbmltcG9ydCB7IEV2ZW50VXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZS91dGlscy9FdmVudFV0aWxzJztcbmltcG9ydCB7IENMSUNLX0VWRU5ULCBCRUZPUkVfQ0xJQ0tfRVZFTlQsIEZPQ1VTX0VWRU5ULCBCRUZPUkVfRk9DVVNfRVZFTlQsIExPU1RfRk9DVVNfRVZFTlQsIEJFRk9SRV9MT1NUX0ZPQ1VTX0VWRU5UIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmUvQ3VzdG9tRXZlbnRUeXBlJztcbmltcG9ydCB7IEFic3RyYWN0STE4TkFwcGxpY2FibGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZS9BYnN0cmFjdEkxOE5BcHBsaWNhYmxlJztcbmltcG9ydCB7IE5lZWRGb2N1c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlL05lZWRGb2N1c1NlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBJSGFzRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudC9JSGFzRGF0YSc7XG5pbXBvcnQgeyBJTmVlZEZvY3VzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50L0lOZWVkRm9jdXMnO1xuXG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJtYXRlcmlhbC1idXR0b25cIjtcbmNvbnN0IERFRkFVTFRfQlVUVE9OX0lDT04gPSAnZmF2b3JpdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwibWF0ZXJpYWwtaW5wdXRcIj5cbiAgPGJ1dHRvbiBbY29sb3JdPVwiZ2V0Q29sb3IoKVwiIFtuZ0NsYXNzXT1cImdldFN0eWxlQ2xhc3MoKVwiIFtkaXNhYmxlUmlwcGxlXT1cImlzRGlzYWJsZVJpcHBsZSgpXCIgW2Rpc2FibGVkXT1cImlzRGlzYWJsZSgpXCIgKm5nSWY9XCJnZXRUeXBlKCkgPT09ICdtYXQtYnV0dG9uJ1wiIG1hdC1idXR0b24gKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiPnt7IGdldExhYmVsKCkgfX08L2J1dHRvbj5cbiAgPGJ1dHRvbiBbY29sb3JdPVwiZ2V0Q29sb3IoKVwiIFtuZ0NsYXNzXT1cImdldFN0eWxlQ2xhc3MoKVwiIFtkaXNhYmxlUmlwcGxlXT1cImlzRGlzYWJsZVJpcHBsZSgpXCIgW2Rpc2FibGVkXT1cImlzRGlzYWJsZSgpXCIgKm5nSWY9XCJnZXRUeXBlKCkgPT09ICdtYXQtcmFpc2VkLWJ1dHRvbidcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCIgPnt7IGdldExhYmVsKCkgfX08L2J1dHRvbj5cbiAgPGJ1dHRvbiBbY29sb3JdPVwiZ2V0Q29sb3IoKVwiIFtuZ0NsYXNzXT1cImdldFN0eWxlQ2xhc3MoKVwiIFtkaXNhYmxlUmlwcGxlXT1cImlzRGlzYWJsZVJpcHBsZSgpXCIgW2Rpc2FibGVkXT1cImlzRGlzYWJsZSgpXCIgKm5nSWY9XCJnZXRUeXBlKCkgPT09ICdtYXQtc3Ryb2tlZC1idXR0b24nXCIgbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIiA+e3sgZ2V0TGFiZWwoKSB9fTwvYnV0dG9uPlxuICA8YnV0dG9uIFtjb2xvcl09XCJnZXRDb2xvcigpXCIgW25nQ2xhc3NdPVwiZ2V0U3R5bGVDbGFzcygpXCIgW2Rpc2FibGVSaXBwbGVdPVwiaXNEaXNhYmxlUmlwcGxlKClcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlKClcIiAqbmdJZj1cImdldFR5cGUoKSA9PT0gJ21hdC1mbGF0LWJ1dHRvbidcIiBtYXQtZmxhdC1idXR0b24gKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiID57eyBnZXRMYWJlbCgpIH19PC9idXR0b24+XG4gIDxidXR0b24gW2NvbG9yXT1cImdldENvbG9yKClcIiBbbmdDbGFzc109XCJnZXRTdHlsZUNsYXNzKClcIiBbZGlzYWJsZVJpcHBsZV09XCJpc0Rpc2FibGVSaXBwbGUoKVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGUoKVwiICpuZ0lmPVwiZ2V0VHlwZSgpID09PSAnbWF0LWljb24tYnV0dG9uJ1wiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCIgPlxuICAgIDxtYXQtaWNvbj57eyBnZXRCdXR0b25JY29uKCkgfX08L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuYCxcbn0pXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxCdXR0b24gZXh0ZW5kcyBBYnN0cmFjdEkxOE5BcHBsaWNhYmxlIGltcGxlbWVudHMgT25Jbml0LCBJSGFzRGF0YSwgSU5lZWRGb2N1cyB7XG4gIHByb3RlY3RlZ