com.phloxui
Version:
PhloxUI Ng2+ Framework
1,118 lines (1,117 loc) • 88.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, Output, ViewChild, EventEmitter } from '@angular/core';
import { Platform } from '@angular/cdk/platform';
import { NativeDateAdapter } from '@angular/material';
import { DatePicker } from '../../../../../component/dataview/input/DatePicker.component';
import { NeedFocusService } from '../../../../../service/NeedFocusService.service';
import { I18N } from '../../../../../decorator/I18N.decorator';
import { Option } from '../../../../../decorator/Option.decorator';
import { FormatterFactory } from '../../../../../service/FormatterFactory.service';
import { PhloxAppInfoService } from '../../../../../service/PhloxAppInfoService.service';
import { EventUtils } from '../../../../../share/utils/EventUtils';
import { DateAdapter, MatDatepicker, MAT_DATE_LOCALE } from '@angular/material';
import { BEFORE_MONTH_SELECTED_EVENT, MONTH_SELECTED_EVENT } from '../../../../../share/CustomEventType';
import { FormControl } from '@angular/forms';
const /** @type {?} */ TYPE_NAME = "material-date-picker";
const /** @type {?} */ NORMAL = 'normal';
const /** @type {?} */ SUCCESS = 'success';
const /** @type {?} */ WARNING = 'warning';
const /** @type {?} */ ERROR = 'error';
const /** @type {?} */ DEFAULT_BUTTON_POSITION = 'suffix';
const /** @type {?} */ DEFAULT_BUTTON_ICON = 'date_range_black';
const /** @type {?} */ DEFAULT_START_VIEW = 'month';
export class MaterialDateAdapter extends NativeDateAdapter {
/**
* @param {?} matDateLocale
* @param {?} platform
*/
constructor(matDateLocale, platform) {
super(matDateLocale, platform);
}
/**
* @param {?} formatter
* @return {?}
*/
setFormatter(formatter) {
this.formatter = formatter;
}
/**
* @return {?}
*/
getFormatter() {
return this.formatter;
}
/**
* @param {?} value
* @return {?}
*/
parse(value) {
if (this.formatter === null || this.formatter === undefined) {
return super.parse(value);
}
return this.formatter.parse(value);
}
/**
* @param {?} date
* @param {?} displayFormat
* @return {?}
*/
format(date, displayFormat) {
if (this.formatter === null || this.formatter === undefined) {
return super.format(date, displayFormat);
}
if (displayFormat !== null && typeof displayFormat === 'object') {
if (displayFormat['day'] === undefined &&
displayFormat['month'] !== undefined &&
displayFormat['year'] !== undefined) {
// Format for popup's month-year dropdown.
return super.format(date, displayFormat);
}
}
return this.formatter.format(date);
}
}
function MaterialDateAdapter_tsickle_Closure_declarations() {
/** @type {?} */
MaterialDateAdapter.prototype.formatter;
}
export class MaterialDatePicker extends DatePicker {
/**
* @param {?} elementRef
* @param {?} needFocusService
* @param {?} formatterFactory
* @param {?} phloxAppInfoService
* @param {?} adapter
*/
constructor(elementRef, needFocusService, formatterFactory, phloxAppInfoService, adapter) {
super(elementRef, needFocusService, formatterFactory, phloxAppInfoService);
this.beforeYearSelectedEvent = new EventEmitter();
this.yearSelectedEvent = new EventEmitter();
this.beforeMonthSelectedEvent = new EventEmitter();
this.monthSelectedEvent = new EventEmitter();
this.formControl = new FormControl();
this._adapter = /** @type {?} */ (adapter);
this.active = false;
}
/**
* @param {?} matDateLocale
* @param {?} platform
* @return {?}
*/
static DateAdapterFactory(matDateLocale, platform) {
return new MaterialDateAdapter(matDateLocale, platform);
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
this.render();
setTimeout(() => {
this.setOptions(this.options);
}, 500);
this._firstTextValue = this.formattedData;
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
this.render();
}
/**
* @return {?}
*/
render() {
this._adapter.setFormatter(this.formatter);
if (this.locale !== null && this.locale !== undefined) {
this._adapter.setLocale(this.locale);
}
setTimeout(() => {
let /** @type {?} */ btn = $('mat-datepicker-toggle > button');
let /** @type {?} */ datePickerContent = $.find('.mat-datepicker-content');
let /** @type {?} */ matCalendar = $.find('.mat-calendar');
if (datePickerContent.length > 0 && this.popupHeight) {
$(datePickerContent).height(this.popupHeight);
}
if (matCalendar.length > 0 && this.popupWidth) {
$(matCalendar).width(this.popupWidth);
}
// Add lost focus handler to button.
btn.blur(($event) => {
this.onBtnLostFocusing($event);
});
}, 20);
}
/**
* @return {?}
*/
getClassMatFocused() {
return this.isReadOnly() ? { 'mat-focused': this._classFocused } : {};
}
/**
* @return {?}
*/
isBtnFocused() {
return $(this.elementRef.nativeElement).find('mat-datepicker-toggle > button.cdk-focused').length > 0;
}
/**
* @return {?}
*/
isTxtFocused() {
return $(this.elementRef.nativeElement).find('input.form-control:focus').length > 0;
}
/**
* @param {?} $event
* @return {?}
*/
doFocus($event) {
// Do not call super.doFocus() since we don't want to requestFocus() on <input>.
this._classFocused = true;
}
/**
* @param {?} $event
* @return {?}
*/
onLostFocusing($event) {
setTimeout(() => {
if (this.isBtnFocused() || this.isTxtFocused() || this.isActive()) {
// If anything is still focused, do nothing.
return;
}
super.onLostFocusing($event);
}, 20);
}
/**
* @param {?} $event
* @return {?}
*/
onBtnLostFocusing($event) {
setTimeout(() => {
if (this.isBtnFocused() || this.isTxtFocused() || this.isActive()) {
// If anything is still focused, do nothing.
return;
}
super.onLostFocusing($event);
}, 20);
}
/**
* @param {?} $event
* @return {?}
*/
doLostFocus($event) {
// Super will always hide popup in doLostFocus().
super.doLostFocus($event);
this._classFocused = false;
}
/**
* @return {?}
*/
doShow() {
this.active = true;
}
/**
* @param {?} event
* @return {?}
*/
onFocus(event) {
super.onFocus(event);
this._classFocused = true;
}
/**
* @return {?}
*/
getLabel() {
return this.label;
}
/**
* @param {?} label
* @return {?}
*/
setLabel(label) {
this.label = label;
}
/**
* @return {?}
*/
getDescription() {
return this.description;
}
/**
* @param {?} description
* @return {?}
*/
setDescription(description) {
this.description = description;
}
/**
* @return {?}
*/
getButtonPosition() {
return !this.buttonPosition ? DEFAULT_BUTTON_POSITION : this.buttonPosition;
}
/**
* @param {?} buttonPosition
* @return {?}
*/
setButtonPosition(buttonPosition) {
this.buttonPosition = buttonPosition;
this.render();
}
/**
* @return {?}
*/
getButtonIcon() {
return !this.buttonIcon ? DEFAULT_BUTTON_ICON : this.buttonIcon;
}
/**
* @param {?} buttonIcon
* @return {?}
*/
setButtonIcon(buttonIcon) {
this.buttonIcon = buttonIcon;
}
/**
* @return {?}
*/
getStartView() {
return !this.startView ? DEFAULT_START_VIEW : this.startView;
}
/**
* @param {?} startView
* @return {?}
*/
setStartView(startView) {
this.startView = startView;
}
/**
* @return {?}
*/
getStartAt() {
return new Date(this.startAt);
}
/**
* @param {?} startAt
* @return {?}
*/
setStartAt(startAt) {
this.startAt = startAt;
}
/**
* @return {?}
*/
getMin() {
return this.min;
}
/**
* @param {?} min
* @return {?}
*/
setMin(min) {
this.min = min;
}
/**
* @return {?}
*/
getMax() {
return this.max;
}
/**
* @param {?} max
* @return {?}
*/
setMax(max) {
this.max = max;
}
/**
* @return {?}
*/
getPanelClass() {
return this.panelClass;
}
/**
* @param {?} panelClass
* @return {?}
*/
setPanelClass(panelClass) {
this.panelClass = panelClass;
}
/**
* @return {?}
*/
getLocale() {
return this.locale;
}
/**
* @param {?} locale
* @return {?}
*/
setLocale(locale) {
this.locale = locale;
this.render();
}
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
onOpened($event, fireEvent) {
if (this.isReadOnly() || this.isDisabled()) {
this.picker.close();
return;
}
this.show($event, fireEvent);
this.render();
// Force set focus to this component when popup is displaying.
this.onFocusing($event);
}
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
onClosed($event, fireEvent) {
this.hide($event, fireEvent);
}
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
onDateChanged($event, fireEvent) {
this.setDate($event.value, $event, fireEvent);
}
/**
* @param {?} inputVal
* @param {?=} $event
* @param {?=} fireEvent
* @return {?}
*/
setInputValue(inputVal, $event, fireEvent) {
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
let /** @type {?} */ oldValue = this.getInputValue();
EventUtils.handleBrowserEvent(this, 'beforeChangeEvent', $event, fireEvent, ($event) => {
// doEvent
// Set input value into data object.
this._setValueToData(inputVal);
}, ($event) => {
// emitBeforeEvent
this.emitBeforeChangeEvent(oldValue, inputVal, true, $event);
}, ($event) => {
// emitAfterEvent
this.emitChangeEvent(oldValue, inputVal, true, $event);
}, ($event) => {
// doPrevented
this.formControl.setValue(oldValue);
}, 'inputValue');
this._formattedData = this.getFormattedData();
}
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
onMonthSelected($event, fireEvent) {
// $event is boolean
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
EventUtils.handleBrowserEvent(this, 'beforeMonthSelectedEvent', $event, fireEvent, ($event) => {
// doEvent
}, ($event) => {
// emitBeforeEvent
this.emitBeforeMonthSelectedEvent($event);
}, ($event, result) => {
// emitAfterEvent
this.emitMonthSelectedEvent($event);
}, ($event) => {
// doPrevented
});
}
/**
* @param {?} newValue
* @param {?=} $event
* @return {?}
*/
emitBeforeMonthSelectedEvent(newValue, $event) {
let /** @type {?} */ eventData = {
data: this.data,
newValue: newValue
};
// emit event
let /** @type {?} */ data = eventData;
let /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_MONTH_SELECTED_EVENT, this, data, $event);
if (this.beforeMonthSelectedEvent !== null && this.beforeMonthSelectedEvent !== undefined) {
this.beforeMonthSelectedEvent.emit(ev);
}
}
/**
* @param {?} newValue
* @param {?=} $event
* @return {?}
*/
emitMonthSelectedEvent(newValue, $event) {
let /** @type {?} */ eventData = {
data: this.data,
newValue: newValue
};
// emit event
let /** @type {?} */ data = eventData;
let /** @type {?} */ ev = EventUtils.newCustomEvent(MONTH_SELECTED_EVENT, this, data, $event);
if (this.monthSelectedEvent !== null && this.monthSelectedEvent !== undefined) {
this.monthSelectedEvent.emit(ev);
}
}
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
onYearSelected($event, fireEvent) {
// $event is boolean
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
EventUtils.handleBrowserEvent(this, 'beforeYearSelectedEvent', $event, fireEvent, ($event) => {
// doEvent
}, ($event) => {
// emitBeforeEvent
this.emitBeforeYearSelectedEvent($event);
}, ($event, result) => {
// emitAfterEvent
this.emitYearSelectedEvent($event);
}, ($event) => {
// doPrevented
});
}
/**
* @param {?} newValue
* @param {?=} $event
* @return {?}
*/
emitBeforeYearSelectedEvent(newValue, $event) {
let /** @type {?} */ eventData = {
data: this.data,
newValue: newValue
};
// emit event
let /** @type {?} */ data = eventData;
let /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_MONTH_SELECTED_EVENT, this, data, $event);
if (this.beforeYearSelectedEvent !== null && this.beforeYearSelectedEvent !== undefined) {
this.beforeYearSelectedEvent.emit(ev);
}
}
/**
* @param {?} newValue
* @param {?=} $event
* @return {?}
*/
emitYearSelectedEvent(newValue, $event) {
let /** @type {?} */ eventData = {
data: this.data,
newValue: newValue
};
// emit event
let /** @type {?} */ data = eventData;
let /** @type {?} */ ev = EventUtils.newCustomEvent(MONTH_SELECTED_EVENT, this, data, $event);
if (this.yearSelectedEvent !== null && this.yearSelectedEvent !== undefined) {
this.yearSelectedEvent.emit(ev);
}
}
/**
* @param {?} popupHeight
* @return {?}
*/
setPopupHeight(popupHeight) {
super.setPopupHeight(popupHeight);
this.render();
}
/**
* @param {?} popupWidth
* @return {?}
*/
setPopupWidth(popupWidth) {
super.setPopupWidth(popupWidth);
this.render();
}
/**
* @return {?}
*/
getBeforeMonthSelectedEvent() {
return this.beforeMonthSelectedEvent;
}
/**
* @param {?} event
* @return {?}
*/
setBeforeMonthSelectedEvent(event) {
this.beforeMonthSelectedEvent = event;
}
/**
* @return {?}
*/
getMonthSelectedEvent() {
return this.monthSelectedEvent;
}
/**
* @param {?} event
* @return {?}
*/
setMonthSelectedEvent(event) {
this.monthSelectedEvent = event;
}
/**
* @return {?}
*/
getBeforeYearSelectedEvent() {
return this.beforeYearSelectedEvent;
}
/**
* @param {?} event
* @return {?}
*/
setBeforeYearSelectedEvent(event) {
this.beforeYearSelectedEvent = event;
}
/**
* @return {?}
*/
getYearSelectedEvent() {
return this.yearSelectedEvent;
}
/**
* @param {?} event
* @return {?}
*/
setYearSelectedEvent(event) {
this.yearSelectedEvent = event;
}
/**
* @param {?} formatterName
* @return {?}
*/
setFormatterName(formatterName) {
super.setFormatterName(formatterName);
// Call this.render() to rerender if formatter changed.
this.render();
}
/**
* @param {?} options
* @return {?}
*/
setFormatterOptions(options) {
super.setFormatterOptions(options);
// Call this.render() to rerender if formatter changed.
this.render();
}
/**
* @param {?} formatter
* @return {?}
*/
setFormatter(formatter) {
super.setFormatter(formatter);
// Call this.render() to rerender if formatter changed.
this.render();
}
/**
* @param {?} options
* @return {?}
*/
setOptions(options) {
super.setOptions(options);
// Call this.render() to rerender if formatter changed.
this.render();
}
/**
* @param {?} data
* @return {?}
*/
setData(data) {
super.setData(data);
this._firstTextValue = this.formattedData;
}
}
MaterialDatePicker.TYPE_NAME = TYPE_NAME;
MaterialDatePicker.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: `<div class="material-input material-date-picker" [style.width]="getWidth()">
<div class="date-picker-wrapper" [class.active]="isActive()">
<mat-form-field [ngClass]="getClassMatFocused()">
<input matInput [formControl]="formControl" [phxDisableControl]="isDisabled()" [matDatepicker]="picker" [style.height]="getHeight()" placeholder="{{getLabel() | phx_text}}" class="form-control" [class.dirty]="isDataDirty()"
[readonly]="isReadOnly()" (focus)="onFocusing($event)" (blur)="onLostFocusing($event)" (change)="onValueChanged($event)" (dateChange)="onDateChanged($event)"
[class.normal]="isNormal() && !isDisabled()" [class.success]="isSuccess() && !isDisabled()" [class.warning]="isWarning() && !isDisabled()"
[class.error]="isError() && !isDisabled()" [max]="getMax()" [min]="getMin()" [value]="_firstTextValue">
<mat-datepicker-toggle [disabled]="isDisabled()" *ngIf="getButtonPosition() === 'suffix'" matSuffix [for]="picker">
<mat-icon matDatepickerToggleIcon *ngIf="getButtonIcon()">{{getButtonIcon()}}</mat-icon>
</mat-datepicker-toggle>
<mat-datepicker-toggle [disabled]="isDisabled()" *ngIf="getButtonPosition() === 'prefix'" matPrefix [for]="picker">
<mat-icon matDatepickerToggleIcon *ngIf="getButtonIcon()">{{getButtonIcon()}}</mat-icon>
</mat-datepicker-toggle>
<mat-datepicker #picker [startView]="getStartView()" [startAt]="getStartAt()" [disabled]="isDisabled()" [panelClass]="getPanelClass()"
(opened)="onOpened($event)" (closed)="onClosed($event)" (monthSelected)="onMonthSelected($event)" (yearSelected)="onYearSelected($event)"></mat-datepicker>
</mat-form-field>
</div>
<div class="validation" [style.display]="getValidationResultMessage() ? undefined : 'none'" [class.normal]="isNormal() && !isDisabled()" [class.success]="isSuccess() && !isDisabled()" [class.warning]="isWarning() && !isDisabled()" [class.error]="isError() && !isDisabled()">
<ng-template [ngIf]="getValidationResultMessage()" [ngIfElse]="validation_else">
{{getValidationResultMessage() | phx_text}}
</ng-template>
<ng-template #validation_else>
<!-- We've to put whitespace if there is no validation msg to prevent empty dom -->
<!-- since if validate msg's <div> dom is empty, the component positioning -->
<!-- will be misplaced. -->
{{ ' ' }}
</ng-template>
</div>
<div class="description" [style.display]="getValidationResultMessage() ? 'none' : undefined" [class.normal]="isNormal() && !isDisabled()" [class.success]="isSuccess() && !isDisabled()" [class.warning]="isWarning() && !isDisabled()" [class.error]="isError() && !isDisabled()">
<ng-template [ngIf]="getDescription()" [ngIfElse]="description_else">
{{ getDescription() | phx_text }}
</ng-template>
<ng-template #description_else>
<!-- We've to put whitespace if there is no description to prevent empty dom -->
<!-- since if description's <div> dom is empty, the component positioning -->
<!-- will be misplaced. -->
{{ ' ' }}
</ng-template>
</div>
<div class="help">
{{getHelp() | phx_text}}
</div>
</div>
`,
providers: [
{
provide: DateAdapter,
useFactory: MaterialDatePicker.DateAdapterFactory,
deps: [MAT_DATE_LOCALE, Platform]
}
]
},] },
];
/** @nocollapse */
MaterialDatePicker.ctorParameters = () => [
{ type: ElementRef, },
{ type: NeedFocusService, },
{ type: FormatterFactory, },
{ type: PhloxAppInfoService, },
{ type: DateAdapter, },
];
MaterialDatePicker.propDecorators = {
"picker": [{ type: ViewChild, args: ['picker',] },],
"dataParent": [{ type: Input },],
"ignoreParentData": [{ type: Input },],
"data": [{ type: Input },],
"ignoreParentDisabled": [{ type: Input },],
"delegateHistory": [{ type: Input },],
"onDisabled": [{ type: Input },],
"onEnabled": [{ type: Input },],
"loadingEnabled": [{ type: Input },],
"i18nKey": [{ type: Input },],
"bypass": [{ type: Input, args: ['i18nBypass',] },],
"options": [{ type: Input },],
"disabled": [{ type: Input },],
"field": [{ type: Input },],
"name": [{ type: Input },],
"typeOfData": [{ type: Input },],
"readOnly": [{ type: Input },],
"help": [{ type: Input },],
"formatter": [{ type: Input, args: ['formatter',] },],
"formatterName": [{ type: Input, args: ['formatterName',] },],
"formatterOptions": [{ type: Input, args: ['formatterOptions',] },],
"formatterUsePropertyValue": [{ type: Input, args: ['formatterUsePropertyValue',] },],
"dataPattern": [{ type: Input },],
"width": [{ type: Input },],
"height": [{ type: Input },],
"popupWidth": [{ type: Input },],
"popupHeight": [{ type: Input },],
"minDate": [{ type: Input },],
"maxDate": [{ type: Input },],
"label": [{ type: Input },],
"description": [{ type: Input },],
"locale": [{ type: Input },],
"buttonPosition": [{ type: Input },],
"buttonIcon": [{ type: Input },],
"startView": [{ type: Input },],
"startAt": [{ type: Input },],
"panelClass": [{ type: Input },],
"max": [{ type: Input },],
"min": [{ type: Input },],
"loadEvent": [{ type: Output, args: ['phxLoad',] },],
"startValidateEvent": [{ type: Output, args: ['phxStartValidate',] },],
"endValidateEvent": [{ type: Output, args: ['phxEndValidate',] },],
"beforeFocusEvent": [{ type: Output, args: ['phxBeforeFocus',] },],
"focusEvent": [{ type: Output, args: ['phxFocus',] },],
"beforeLostFocusEvent": [{ type: Output, args: ['phxBeforeLostFocus',] },],
"lostFocusEvent": [{ type: Output, args: ['phxLostFocus',] },],
"beforeChangeEvent": [{ type: Output, args: ['phxBeforeChange',] },],
"changeEvent": [{ type: Output, args: ['phxChange',] },],
"beforeViewShowEvent": [{ type: Output, args: ['phxBeforeViewShow',] },],
"viewShowEvent": [{ type: Output, args: ['phxViewShow',] },],
"beforeViewHideEvent": [{ type: Output, args: ['phxBeforeViewHide',] },],
"viewHideEvent": [{ type: Output, args: ['phxViewHide',] },],
"beforeMonthSelectedEvent": [{ type: Output, args: ['phxBeforeMonthSelected',] },],
"monthSelectedEvent": [{ type: Output, args: ['phxMonthSelected',] },],
"beforeYearSelectedEvent": [{ type: Output, args: ['phxBeforeYearSelected',] },],
"yearSelectedEvent": [{ type: Output, args: ['phxYearSelected',] },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialDatePicker.prototype, "dataParent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialDatePicker.prototype, "ignoreParentData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialDatePicker.prototype, "data", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialDatePicker.prototype, "ignoreParentDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialDatePicker.prototype, "delegateHistory", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], MaterialDatePicker.prototype, "onDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], MaterialDatePicker.prototype, "onEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialDatePicker.prototype, "loadingEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "i18nKey", void 0);
tslib_1.__decorate([
Option('i18nBypass'),
tslib_1.__metadata("design:type", Boolean)
], MaterialDatePicker.prototype, "bypass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialDatePicker.prototype, "disabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "field", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "name", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "typeOfData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialDatePicker.prototype, "readOnly", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialDatePicker.prototype, "help", void 0);
tslib_1.__decorate([
Option('formatter.instance'),
tslib_1.__metadata("design:type", Object)
], MaterialDatePicker.prototype, "formatter", void 0);
tslib_1.__decorate([
Option('formatter.name'),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "formatterName", void 0);
tslib_1.__decorate([
Option('formatter.options'),
tslib_1.__metadata("design:type", Object)
], MaterialDatePicker.prototype, "formatterOptions", void 0);
tslib_1.__decorate([
Option('formatter.usePropertyValue'),
tslib_1.__metadata("design:type", Boolean)
], MaterialDatePicker.prototype, "formatterUsePropertyValue", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "dataPattern", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "width", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "height", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "popupWidth", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "popupHeight", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Date)
], MaterialDatePicker.prototype, "minDate", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Date)
], MaterialDatePicker.prototype, "maxDate", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "label", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "description", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "locale", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "buttonPosition", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "buttonIcon", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDatePicker.prototype, "startView", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Date)
], MaterialDatePicker.prototype, "startAt", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialDatePicker.prototype, "panelClass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Date)
], MaterialDatePicker.prototype, "max", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Date)
], MaterialDatePicker.prototype, "min", void 0);
tslib_1.__decorate([
Option('load'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "loadEvent", void 0);
tslib_1.__decorate([
Option('startValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "startValidateEvent", void 0);
tslib_1.__decorate([
Option('endValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "endValidateEvent", void 0);
tslib_1.__decorate([
Option('beforeFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "beforeFocusEvent", void 0);
tslib_1.__decorate([
Option('focus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "focusEvent", void 0);
tslib_1.__decorate([
Option('beforeLostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "beforeLostFocusEvent", void 0);
tslib_1.__decorate([
Option('lostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "lostFocusEvent", void 0);
tslib_1.__decorate([
Option('beforeChange'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "beforeChangeEvent", void 0);
tslib_1.__decorate([
Option('change'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "changeEvent", void 0);
tslib_1.__decorate([
Option('beforeViewShow'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "beforeViewShowEvent", void 0);
tslib_1.__decorate([
Option('viewShow'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "viewShowEvent", void 0);
tslib_1.__decorate([
Option('beforeViewHide'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "beforeViewHideEvent", void 0);
tslib_1.__decorate([
Option('viewHide'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "viewHideEvent", void 0);
tslib_1.__decorate([
Option('beforeMonthSelected'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "beforeMonthSelectedEvent", void 0);
tslib_1.__decorate([
Option('monthSelected'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "monthSelectedEvent", void 0);
tslib_1.__decorate([
Option('beforeYearSelected'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "beforeYearSelectedEvent", void 0);
tslib_1.__decorate([
Option('yearSelected'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialDatePicker.prototype, "yearSelectedEvent", void 0);
function MaterialDatePicker_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
MaterialDatePicker.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
MaterialDatePicker.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
MaterialDatePicker.propDecorators;
/** @type {?} */
MaterialDatePicker.TYPE_NAME;
/** @type {?} */
MaterialDatePicker.prototype.picker;
/** @type {?} */
MaterialDatePicker.prototype.dataParent;
/** @type {?} */
MaterialDatePicker.prototype.ignoreParentData;
/** @type {?} */
MaterialDatePicker.prototype.data;
/** @type {?} */
MaterialDatePicker.prototype.ignoreParentDisabled;
/** @type {?} */
MaterialDatePicker.prototype.delegateHistory;
/** @type {?} */
MaterialDatePicker.prototype.onDisabled;
/** @type {?} */
MaterialDatePicker.prototype.onEnabled;
/** @type {?} */
MaterialDatePicker.prototype.loadingEnabled;
/** @type {?} */
MaterialDatePicker.prototype.i18nKey;
/** @type {?} */
MaterialDatePicker.prototype.bypass;
/** @type {?} */
MaterialDatePicker.prototype.options;
/** @type {?} */
MaterialDatePicker.prototype.disabled;
/** @type {?} */
MaterialDatePicker.prototype.field;
/** @type {?} */
MaterialDatePicker.prototype.name;
/** @type {?} */
MaterialDatePicker.prototype.typeOfData;
/** @type {?} */
MaterialDatePicker.prototype.readOnly;
/** @type {?} */
MaterialDatePicker.prototype.help;
/** @type {?} */
MaterialDatePicker.prototype.formatter;
/** @type {?} */
MaterialDatePicker.prototype.formatterName;
/** @type {?} */
MaterialDatePicker.prototype.formatterOptions;
/** @type {?} */
MaterialDatePicker.prototype.formatterUsePropertyValue;
/** @type {?} */
MaterialDatePicker.prototype.dataPattern;
/** @type {?} */
MaterialDatePicker.prototype.width;
/** @type {?} */
MaterialDatePicker.prototype.height;
/** @type {?} */
MaterialDatePicker.prototype.popupWidth;
/** @type {?} */
MaterialDatePicker.prototype.popupHeight;
/** @type {?} */
MaterialDatePicker.prototype.minDate;
/** @type {?} */
MaterialDatePicker.prototype.maxDate;
/** @type {?} */
MaterialDatePicker.prototype.label;
/** @type {?} */
MaterialDatePicker.prototype.description;
/** @type {?} */
MaterialDatePicker.prototype.locale;
/** @type {?} */
MaterialDatePicker.prototype.buttonPosition;
/** @type {?} */
MaterialDatePicker.prototype.buttonIcon;
/** @type {?} */
MaterialDatePicker.prototype.startView;
/** @type {?} */
MaterialDatePicker.prototype.startAt;
/** @type {?} */
MaterialDatePicker.prototype.panelClass;
/** @type {?} */
MaterialDatePicker.prototype.max;
/** @type {?} */
MaterialDatePicker.prototype.min;
/** @type {?} */
MaterialDatePicker.prototype.loadEvent;
/** @type {?} */
MaterialDatePicker.prototype.startValidateEvent;
/** @type {?} */
MaterialDatePicker.prototype.endValidateEvent;
/** @type {?} */
MaterialDatePicker.prototype.beforeFocusEvent;
/** @type {?} */
MaterialDatePicker.prototype.focusEvent;
/** @type {?} */
MaterialDatePicker.prototype.beforeLostFocusEvent;
/** @type {?} */
MaterialDatePicker.prototype.lostFocusEvent;
/** @type {?} */
MaterialDatePicker.prototype.beforeChangeEvent;
/** @type {?} */
MaterialDatePicker.prototype.changeEvent;
/** @type {?} */
MaterialDatePicker.prototype.beforeViewShowEvent;
/** @type {?} */
MaterialDatePicker.prototype.viewShowEvent;
/** @type {?} */
MaterialDatePicker.prototype.beforeViewHideEvent;
/** @type {?} */
MaterialDatePicker.prototype.viewHideEvent;
/** @type {?} */
MaterialDatePicker.prototype.beforeMonthSelectedEvent;
/** @type {?} */
MaterialDatePicker.prototype.monthSelectedEvent;
/** @type {?} */
MaterialDatePicker.prototype.beforeYearSelectedEvent;
/** @type {?} */
MaterialDatePicker.prototype.yearSelectedEvent;
/** @type {?} */
MaterialDatePicker.prototype._classFocused;
/** @type {?} */
MaterialDatePicker.prototype._adapter;
/** @type {?} */
MaterialDatePicker.prototype.formControl;
/** @type {?} */
MaterialDatePicker.prototype._firstTextValue;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0ZXJpYWxEYXRlUGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL3RoZW1lL21hdGVyaWFsL2NvbXBvbmVudC9kYXRhdmlldy9pbnB1dC9NYXRlcmlhbERhdGVQaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOERBQThELENBQUM7QUFFMUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFbkYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdDLHVCQUFNLFNBQVMsR0FBVyxzQkFBc0IsQ0FBQztBQUVqRCx1QkFBTSxN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