com.phloxui
Version:
PhloxUI Ng2+ Framework
1,327 lines (1,326 loc) • 97.3 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';
var /** @type {?} */ TYPE_NAME = "material-date-picker";
var /** @type {?} */ NORMAL = 'normal';
var /** @type {?} */ SUCCESS = 'success';
var /** @type {?} */ WARNING = 'warning';
var /** @type {?} */ ERROR = 'error';
var /** @type {?} */ DEFAULT_BUTTON_POSITION = 'suffix';
var /** @type {?} */ DEFAULT_BUTTON_ICON = 'date_range_black';
var /** @type {?} */ DEFAULT_START_VIEW = 'month';
var MaterialDateAdapter = /** @class */ (function (_super) {
tslib_1.__extends(MaterialDateAdapter, _super);
function MaterialDateAdapter(matDateLocale, platform) {
return _super.call(this, matDateLocale, platform) || this;
}
/**
* @param {?} formatter
* @return {?}
*/
MaterialDateAdapter.prototype.setFormatter = /**
* @param {?} formatter
* @return {?}
*/
function (formatter) {
this.formatter = formatter;
};
/**
* @return {?}
*/
MaterialDateAdapter.prototype.getFormatter = /**
* @return {?}
*/
function () {
return this.formatter;
};
/**
* @param {?} value
* @return {?}
*/
MaterialDateAdapter.prototype.parse = /**
* @param {?} value
* @return {?}
*/
function (value) {
if (this.formatter === null || this.formatter === undefined) {
return _super.prototype.parse.call(this, value);
}
return this.formatter.parse(value);
};
/**
* @param {?} date
* @param {?} displayFormat
* @return {?}
*/
MaterialDateAdapter.prototype.format = /**
* @param {?} date
* @param {?} displayFormat
* @return {?}
*/
function (date, displayFormat) {
if (this.formatter === null || this.formatter === undefined) {
return _super.prototype.format.call(this, 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.prototype.format.call(this, date, displayFormat);
}
}
return this.formatter.format(date);
};
return MaterialDateAdapter;
}(NativeDateAdapter));
export { MaterialDateAdapter };
function MaterialDateAdapter_tsickle_Closure_declarations() {
/** @type {?} */
MaterialDateAdapter.prototype.formatter;
}
var MaterialDatePicker = /** @class */ (function (_super) {
tslib_1.__extends(MaterialDatePicker, _super);
function MaterialDatePicker(elementRef, needFocusService, formatterFactory, phloxAppInfoService, adapter) {
var _this = _super.call(this, elementRef, needFocusService, formatterFactory, phloxAppInfoService) || this;
_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;
return _this;
}
/**
* @param {?} matDateLocale
* @param {?} platform
* @return {?}
*/
MaterialDatePicker.DateAdapterFactory = /**
* @param {?} matDateLocale
* @param {?} platform
* @return {?}
*/
function (matDateLocale, platform) {
return new MaterialDateAdapter(matDateLocale, platform);
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
_super.prototype.ngOnInit.call(this);
this.render();
setTimeout(function () {
_this.setOptions(_this.options);
}, 500);
this._firstTextValue = this.formattedData;
};
/**
* @param {?} changes
* @return {?}
*/
MaterialDatePicker.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
this.render();
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.render = /**
* @return {?}
*/
function () {
var _this = this;
this._adapter.setFormatter(this.formatter);
if (this.locale !== null && this.locale !== undefined) {
this._adapter.setLocale(this.locale);
}
setTimeout(function () {
var /** @type {?} */ btn = $('mat-datepicker-toggle > button');
var /** @type {?} */ datePickerContent = $.find('.mat-datepicker-content');
var /** @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(function ($event) {
_this.onBtnLostFocusing($event);
});
}, 20);
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getClassMatFocused = /**
* @return {?}
*/
function () {
return this.isReadOnly() ? { 'mat-focused': this._classFocused } : {};
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.isBtnFocused = /**
* @return {?}
*/
function () {
return $(this.elementRef.nativeElement).find('mat-datepicker-toggle > button.cdk-focused').length > 0;
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.isTxtFocused = /**
* @return {?}
*/
function () {
return $(this.elementRef.nativeElement).find('input.form-control:focus').length > 0;
};
/**
* @param {?} $event
* @return {?}
*/
MaterialDatePicker.prototype.doFocus = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
// Do not call super.doFocus() since we don't want to requestFocus() on <input>.
this._classFocused = true;
};
/**
* @param {?} $event
* @return {?}
*/
MaterialDatePicker.prototype.onLostFocusing = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
var _this = this;
setTimeout(function () {
if (_this.isBtnFocused() || _this.isTxtFocused() || _this.isActive()) {
// If anything is still focused, do nothing.
return;
}
_super.prototype.onLostFocusing.call(_this, $event);
}, 20);
};
/**
* @param {?} $event
* @return {?}
*/
MaterialDatePicker.prototype.onBtnLostFocusing = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
var _this = this;
setTimeout(function () {
if (_this.isBtnFocused() || _this.isTxtFocused() || _this.isActive()) {
// If anything is still focused, do nothing.
return;
}
_super.prototype.onLostFocusing.call(_this, $event);
}, 20);
};
/**
* @param {?} $event
* @return {?}
*/
MaterialDatePicker.prototype.doLostFocus = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
// Super will always hide popup in doLostFocus().
_super.prototype.doLostFocus.call(this, $event);
this._classFocused = false;
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.doShow = /**
* @return {?}
*/
function () {
this.active = true;
};
/**
* @param {?} event
* @return {?}
*/
MaterialDatePicker.prototype.onFocus = /**
* @param {?} event
* @return {?}
*/
function (event) {
_super.prototype.onFocus.call(this, event);
this._classFocused = true;
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getLabel = /**
* @return {?}
*/
function () {
return this.label;
};
/**
* @param {?} label
* @return {?}
*/
MaterialDatePicker.prototype.setLabel = /**
* @param {?} label
* @return {?}
*/
function (label) {
this.label = label;
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getDescription = /**
* @return {?}
*/
function () {
return this.description;
};
/**
* @param {?} description
* @return {?}
*/
MaterialDatePicker.prototype.setDescription = /**
* @param {?} description
* @return {?}
*/
function (description) {
this.description = description;
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getButtonPosition = /**
* @return {?}
*/
function () {
return !this.buttonPosition ? DEFAULT_BUTTON_POSITION : this.buttonPosition;
};
/**
* @param {?} buttonPosition
* @return {?}
*/
MaterialDatePicker.prototype.setButtonPosition = /**
* @param {?} buttonPosition
* @return {?}
*/
function (buttonPosition) {
this.buttonPosition = buttonPosition;
this.render();
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getButtonIcon = /**
* @return {?}
*/
function () {
return !this.buttonIcon ? DEFAULT_BUTTON_ICON : this.buttonIcon;
};
/**
* @param {?} buttonIcon
* @return {?}
*/
MaterialDatePicker.prototype.setButtonIcon = /**
* @param {?} buttonIcon
* @return {?}
*/
function (buttonIcon) {
this.buttonIcon = buttonIcon;
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getStartView = /**
* @return {?}
*/
function () {
return !this.startView ? DEFAULT_START_VIEW : this.startView;
};
/**
* @param {?} startView
* @return {?}
*/
MaterialDatePicker.prototype.setStartView = /**
* @param {?} startView
* @return {?}
*/
function (startView) {
this.startView = startView;
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getStartAt = /**
* @return {?}
*/
function () {
return new Date(this.startAt);
};
/**
* @param {?} startAt
* @return {?}
*/
MaterialDatePicker.prototype.setStartAt = /**
* @param {?} startAt
* @return {?}
*/
function (startAt) {
this.startAt = startAt;
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getMin = /**
* @return {?}
*/
function () {
return this.min;
};
/**
* @param {?} min
* @return {?}
*/
MaterialDatePicker.prototype.setMin = /**
* @param {?} min
* @return {?}
*/
function (min) {
this.min = min;
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getMax = /**
* @return {?}
*/
function () {
return this.max;
};
/**
* @param {?} max
* @return {?}
*/
MaterialDatePicker.prototype.setMax = /**
* @param {?} max
* @return {?}
*/
function (max) {
this.max = max;
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getPanelClass = /**
* @return {?}
*/
function () {
return this.panelClass;
};
/**
* @param {?} panelClass
* @return {?}
*/
MaterialDatePicker.prototype.setPanelClass = /**
* @param {?} panelClass
* @return {?}
*/
function (panelClass) {
this.panelClass = panelClass;
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getLocale = /**
* @return {?}
*/
function () {
return this.locale;
};
/**
* @param {?} locale
* @return {?}
*/
MaterialDatePicker.prototype.setLocale = /**
* @param {?} locale
* @return {?}
*/
function (locale) {
this.locale = locale;
this.render();
};
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
MaterialDatePicker.prototype.onOpened = /**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
function ($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 {?}
*/
MaterialDatePicker.prototype.onClosed = /**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
function ($event, fireEvent) {
this.hide($event, fireEvent);
};
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
MaterialDatePicker.prototype.onDateChanged = /**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
function ($event, fireEvent) {
this.setDate($event.value, $event, fireEvent);
};
/**
* @param {?} inputVal
* @param {?=} $event
* @param {?=} fireEvent
* @return {?}
*/
MaterialDatePicker.prototype.setInputValue = /**
* @param {?} inputVal
* @param {?=} $event
* @param {?=} fireEvent
* @return {?}
*/
function (inputVal, $event, fireEvent) {
var _this = this;
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
var /** @type {?} */ oldValue = this.getInputValue();
EventUtils.handleBrowserEvent(this, 'beforeChangeEvent', $event, fireEvent, function ($event) {
// doEvent
// Set input value into data object.
// doEvent
// Set input value into data object.
_this._setValueToData(inputVal);
}, function ($event) {
// emitBeforeEvent
// emitBeforeEvent
_this.emitBeforeChangeEvent(oldValue, inputVal, true, $event);
}, function ($event) {
// emitAfterEvent
// emitAfterEvent
_this.emitChangeEvent(oldValue, inputVal, true, $event);
}, function ($event) {
// doPrevented
// doPrevented
_this.formControl.setValue(oldValue);
}, 'inputValue');
this._formattedData = this.getFormattedData();
};
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
MaterialDatePicker.prototype.onMonthSelected = /**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
function ($event, fireEvent) {
var _this = this;
// $event is boolean
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
EventUtils.handleBrowserEvent(this, 'beforeMonthSelectedEvent', $event, fireEvent, function ($event) {
// doEvent
}, function ($event) {
// emitBeforeEvent
// emitBeforeEvent
_this.emitBeforeMonthSelectedEvent($event);
}, function ($event, result) {
// emitAfterEvent
// emitAfterEvent
_this.emitMonthSelectedEvent($event);
}, function ($event) {
// doPrevented
});
};
/**
* @param {?} newValue
* @param {?=} $event
* @return {?}
*/
MaterialDatePicker.prototype.emitBeforeMonthSelectedEvent = /**
* @param {?} newValue
* @param {?=} $event
* @return {?}
*/
function (newValue, $event) {
var /** @type {?} */ eventData = {
data: this.data,
newValue: newValue
};
// emit event
var /** @type {?} */ data = eventData;
var /** @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 {?}
*/
MaterialDatePicker.prototype.emitMonthSelectedEvent = /**
* @param {?} newValue
* @param {?=} $event
* @return {?}
*/
function (newValue, $event) {
var /** @type {?} */ eventData = {
data: this.data,
newValue: newValue
};
// emit event
var /** @type {?} */ data = eventData;
var /** @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 {?}
*/
MaterialDatePicker.prototype.onYearSelected = /**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
function ($event, fireEvent) {
var _this = this;
// $event is boolean
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
EventUtils.handleBrowserEvent(this, 'beforeYearSelectedEvent', $event, fireEvent, function ($event) {
// doEvent
}, function ($event) {
// emitBeforeEvent
// emitBeforeEvent
_this.emitBeforeYearSelectedEvent($event);
}, function ($event, result) {
// emitAfterEvent
// emitAfterEvent
_this.emitYearSelectedEvent($event);
}, function ($event) {
// doPrevented
});
};
/**
* @param {?} newValue
* @param {?=} $event
* @return {?}
*/
MaterialDatePicker.prototype.emitBeforeYearSelectedEvent = /**
* @param {?} newValue
* @param {?=} $event
* @return {?}
*/
function (newValue, $event) {
var /** @type {?} */ eventData = {
data: this.data,
newValue: newValue
};
// emit event
var /** @type {?} */ data = eventData;
var /** @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 {?}
*/
MaterialDatePicker.prototype.emitYearSelectedEvent = /**
* @param {?} newValue
* @param {?=} $event
* @return {?}
*/
function (newValue, $event) {
var /** @type {?} */ eventData = {
data: this.data,
newValue: newValue
};
// emit event
var /** @type {?} */ data = eventData;
var /** @type {?} */ ev = EventUtils.newCustomEvent(MONTH_SELECTED_EVENT, this, data, $event);
if (this.yearSelectedEvent !== null && this.yearSelectedEvent !== undefined) {
this.yearSelectedEvent.emit(ev);
}
};
/**
* @param {?} popupHeight
* @return {?}
*/
MaterialDatePicker.prototype.setPopupHeight = /**
* @param {?} popupHeight
* @return {?}
*/
function (popupHeight) {
_super.prototype.setPopupHeight.call(this, popupHeight);
this.render();
};
/**
* @param {?} popupWidth
* @return {?}
*/
MaterialDatePicker.prototype.setPopupWidth = /**
* @param {?} popupWidth
* @return {?}
*/
function (popupWidth) {
_super.prototype.setPopupWidth.call(this, popupWidth);
this.render();
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getBeforeMonthSelectedEvent = /**
* @return {?}
*/
function () {
return this.beforeMonthSelectedEvent;
};
/**
* @param {?} event
* @return {?}
*/
MaterialDatePicker.prototype.setBeforeMonthSelectedEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.beforeMonthSelectedEvent = event;
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getMonthSelectedEvent = /**
* @return {?}
*/
function () {
return this.monthSelectedEvent;
};
/**
* @param {?} event
* @return {?}
*/
MaterialDatePicker.prototype.setMonthSelectedEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.monthSelectedEvent = event;
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getBeforeYearSelectedEvent = /**
* @return {?}
*/
function () {
return this.beforeYearSelectedEvent;
};
/**
* @param {?} event
* @return {?}
*/
MaterialDatePicker.prototype.setBeforeYearSelectedEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.beforeYearSelectedEvent = event;
};
/**
* @return {?}
*/
MaterialDatePicker.prototype.getYearSelectedEvent = /**
* @return {?}
*/
function () {
return this.yearSelectedEvent;
};
/**
* @param {?} event
* @return {?}
*/
MaterialDatePicker.prototype.setYearSelectedEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.yearSelectedEvent = event;
};
/**
* @param {?} formatterName
* @return {?}
*/
MaterialDatePicker.prototype.setFormatterName = /**
* @param {?} formatterName
* @return {?}
*/
function (formatterName) {
_super.prototype.setFormatterName.call(this, formatterName);
// Call this.render() to rerender if formatter changed.
this.render();
};
/**
* @param {?} options
* @return {?}
*/
MaterialDatePicker.prototype.setFormatterOptions = /**
* @param {?} options
* @return {?}
*/
function (options) {
_super.prototype.setFormatterOptions.call(this, options);
// Call this.render() to rerender if formatter changed.
this.render();
};
/**
* @param {?} formatter
* @return {?}
*/
MaterialDatePicker.prototype.setFormatter = /**
* @param {?} formatter
* @return {?}
*/
function (formatter) {
_super.prototype.setFormatter.call(this, formatter);
// Call this.render() to rerender if formatter changed.
this.render();
};
/**
* @param {?} options
* @return {?}
*/
MaterialDatePicker.prototype.setOptions = /**
* @param {?} options
* @return {?}
*/
function (options) {
_super.prototype.setOptions.call(this, options);
// Call this.render() to rerender if formatter changed.
this.render();
};
/**
* @param {?} data
* @return {?}
*/
MaterialDatePicker.prototype.setData = /**
* @param {?} data
* @return {?}
*/
function (data) {
_super.prototype.setData.call(this, 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()\">\n <div class=\"date-picker-wrapper\" [class.active]=\"isActive()\">\n\t\t<mat-form-field [ngClass]=\"getClassMatFocused()\">\n <input matInput [formControl]=\"formControl\" [phxDisableControl]=\"isDisabled()\" [matDatepicker]=\"picker\" [style.height]=\"getHeight()\" placeholder=\"{{getLabel() | phx_text}}\" class=\"form-control\" [class.dirty]=\"isDataDirty()\"\n [readonly]=\"isReadOnly()\" (focus)=\"onFocusing($event)\" (blur)=\"onLostFocusing($event)\" (change)=\"onValueChanged($event)\" (dateChange)=\"onDateChanged($event)\"\n [class.normal]=\"isNormal() && !isDisabled()\" [class.success]=\"isSuccess() && !isDisabled()\" [class.warning]=\"isWarning() && !isDisabled()\"\n [class.error]=\"isError() && !isDisabled()\" [max]=\"getMax()\" [min]=\"getMin()\" [value]=\"_firstTextValue\">\n <mat-datepicker-toggle [disabled]=\"isDisabled()\" *ngIf=\"getButtonPosition() === 'suffix'\" matSuffix [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon *ngIf=\"getButtonIcon()\">{{getButtonIcon()}}</mat-icon>\n </mat-datepicker-toggle>\n <mat-datepicker-toggle [disabled]=\"isDisabled()\" *ngIf=\"getButtonPosition() === 'prefix'\" matPrefix [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon *ngIf=\"getButtonIcon()\">{{getButtonIcon()}}</mat-icon>\n </mat-datepicker-toggle>\n <mat-datepicker #picker [startView]=\"getStartView()\" [startAt]=\"getStartAt()\" [disabled]=\"isDisabled()\" [panelClass]=\"getPanelClass()\"\n (opened)=\"onOpened($event)\" (closed)=\"onClosed($event)\" (monthSelected)=\"onMonthSelected($event)\" (yearSelected)=\"onYearSelected($event)\"></mat-datepicker>\n </mat-form-field>\n\t</div>\n\t<div class=\"validation\" [style.display]=\"getValidationResultMessage() ? undefined : 'none'\" [class.normal]=\"isNormal() && !isDisabled()\" [class.success]=\"isSuccess() && !isDisabled()\" [class.warning]=\"isWarning() && !isDisabled()\" [class.error]=\"isError() && !isDisabled()\">\n\t\t<ng-template [ngIf]=\"getValidationResultMessage()\" [ngIfElse]=\"validation_else\">\n\t\t\t{{getValidationResultMessage() | phx_text}}\n\t\t</ng-template>\n\t\t<ng-template #validation_else>\n\t\t\t<!-- We've to put whitespace if there is no validation msg to prevent empty dom -->\n\t\t\t<!-- since if validate msg's <div> dom is empty, the component positioning -->\n\t\t\t<!-- will be misplaced. -->\n\t\t\t{{ ' ' }}\n\t\t</ng-template>\n\t</div>\n\t<div class=\"description\" [style.display]=\"getValidationResultMessage() ? 'none' : undefined\" [class.normal]=\"isNormal() && !isDisabled()\" [class.success]=\"isSuccess() && !isDisabled()\" [class.warning]=\"isWarning() && !isDisabled()\" [class.error]=\"isError() && !isDisabled()\">\n\t\t<ng-template [ngIf]=\"getDescription()\" [ngIfElse]=\"description_else\">\n\t\t\t{{ getDescription() | phx_text }}\n\t\t</ng-template>\n\t\t<ng-template #description_else>\n\t\t\t<!-- We've to put whitespace if there is no description to prevent empty dom -->\n\t\t\t<!-- since if description's <div> dom is empty, the component positioning -->\n\t\t\t<!-- will be misplaced. -->\n\t\t\t{{ ' ' }}\n\t\t</ng-template>\n\t</div>\n\t<div class=\"help\">\n\t\t{{getHelp() | phx_text}}\n\t</div>\n</div>\n",
providers: [
{
provide: DateAdapter,
useFactory: MaterialDatePicker.DateAdapterFactory,
deps: [MAT_DATE_LOCALE, Platform]
}
]
},] },
];
/** @nocollapse */
MaterialDatePicker.ctorParameters = function () { return [
{ 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);
return MaterialDatePicker;
}(DatePicker));
export { MaterialDatePicker };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0ZXJpYWxEYXRlUGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL3RoZW1lL21hdGVyaWFsL2NvbXBvbmVudC9kYXRhdmlldy9pbnB1dC9NYXRlcmlhbERhdGVQaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOERBQThELENBQUM7QUFFMUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFbkYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdDLHFCQUFNLFNBQVMsR0FBVyxzQkFBc0IsQ0FBQztBQUVqRCxxQkFBTSxN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