UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

1,327 lines (1,326 loc) 97.3 kB
/** * @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{{ '&nbsp;' }}\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{{ '&nbsp;' }}\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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