ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
217 lines • 18.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Input, Output, Component, forwardRef, HostBinding, EventEmitter, ViewEncapsulation } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { DatePickerComponent } from '../date-picker/date-picker.component';
export class DatePickerViewComponent extends DatePickerComponent {
constructor() {
super(...arguments);
this.mode = 'date';
this.minDate = new Date(2000, 5, 1, 0, 0, 0);
this.maxDate = new Date(2030, 1, 1, 23, 59, 59);
this.value = new Date();
this.disabled = false;
this.indicatorStyle = {};
this.showErrorToast = true;
this.showErrorToastInterval = 2000;
this.onValueChange = new EventEmitter();
this.amPicker = true;
}
/**
* @return {?}
*/
get locale() {
return this.options.locale;
}
/**
* @param {?} value
* @return {?}
*/
set locale(value) {
this.options.locale = value;
this.unsubscribe$.next();
this.unsubscribe$.complete();
}
/**
* @return {?}
*/
reloadPicker() {
if (this.currentPicker) {
/** @type {?} */
const self = this;
setTimeout((/**
* @return {?}
*/
() => {
self.selectedTarget.forEach((/**
* @param {?} item
* @param {?} i
* @return {?}
*/
(item, i) => {
self.currentPicker.children[i].children[2].style.transition = 'transform .3s';
/** @type {?} */
const index = parseInt(item.currentY, 0);
self.currentPicker.children[i].children[2].style.transform = `translateY(${index * self.lineHeight}px)`;
}));
}), 0);
}
}
/**
* @param {?} value
* @return {?}
*/
writeValue(value) {
if (value) {
this.value = value;
this.optionInit();
this.init();
}
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this.ngModelOnChange = fn;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
this.ngModelOnTouched = fn;
}
/**
* @param {?} isDisabled
* @return {?}
*/
setDisabledState(isDisabled) {
this.disabled = isDisabled;
}
/**
* @return {?}
*/
optionInit() {
this.options.mode = this.mode;
this.options.minDate = this.minDate;
this.options.maxDate = this.maxDate;
this.options.disabled = this.disabled;
this.options.locale = this.locale;
this.options.value = this.value;
this.options.showErrorToast = this.showErrorToast;
this.options.showErrorToastInterval = this.showErrorToastInterval;
this.options.onValueChange = this.onValueChange;
this.checkMode(this.options.mode);
/** @type {?} */
const value = this.transformDateFormat(this.options.value).split('-');
if (value.length > 0) {
this.currentTime = value.map((/**
* @param {?} item
* @return {?}
*/
item => {
return parseInt(item, 0);
}));
}
}
/**
* @return {?}
*/
ngOnInit() {
this.optionInit();
this.localeProvider();
}
/**
* @return {?}
*/
ngAfterViewInit() {
this.currentPicker = this.elementRef.nativeElement;
this.reloadPicker();
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
if (changes.value) {
this.options.value = changes.value.currentValue;
/** @type {?} */
const value = this.transformDateFormat(this.options.value).split('-');
if (value.length > 0) {
this.currentTime = value.map((/**
* @param {?} item
* @return {?}
*/
item => {
return parseInt(item, 0);
}));
}
if (!this.judgeEqualArray(this.currentTime, this.resultArr, this.resultArr.length) ||
this.judgeEqualArray(this.currentTime, this.min_date, this.currentTime.length) ||
this.judgeTime(this.currentTime, this.max_date)) {
this.optionInit();
this.init();
}
}
if (changes.mode || changes.minDate || changes.maxDate || changes.disabled || changes.locale) {
this.optionInit();
this.init();
}
}
}
DatePickerViewComponent.decorators = [
{ type: Component, args: [{
selector: 'DatePickerView, nzm-date-picker-view',
template: "<div *ngFor=\"let item of dataWithStr; let i = index\" class=\"am-picker-col\">\n <div class=\"am-picker-col-indicator \" style=\"top: 102px;\" [ngStyle]=\"indicatorStyle\"></div>\n <div id=\"{{ i }}\" class=\"am-picker-col-mask\" style=\"background-size: 100% 102px;\"></div>\n <div class=\"am-picker-col-content\">\n <div id=\"{{ i }}\" *ngFor=\"let val of item; let i = index\" class=\"am-picker-col-item\">\n {{ val.label ? val.label : val }}\n </div>\n </div>\n</div>\n",
encapsulation: ViewEncapsulation.None,
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
() => DatePickerViewComponent)),
multi: true
}
]
}] }
];
DatePickerViewComponent.propDecorators = {
mode: [{ type: Input }],
minDate: [{ type: Input }],
maxDate: [{ type: Input }],
value: [{ type: Input }],
disabled: [{ type: Input }],
indicatorStyle: [{ type: Input }],
locale: [{ type: Input }],
showErrorToast: [{ type: Input }],
showErrorToastInterval: [{ type: Input }],
onValueChange: [{ type: Output }],
amPicker: [{ type: HostBinding, args: ['class.am-picker',] }]
};
if (false) {
/** @type {?} */
DatePickerViewComponent.prototype.mode;
/** @type {?} */
DatePickerViewComponent.prototype.minDate;
/** @type {?} */
DatePickerViewComponent.prototype.maxDate;
/** @type {?} */
DatePickerViewComponent.prototype.value;
/** @type {?} */
DatePickerViewComponent.prototype.disabled;
/** @type {?} */
DatePickerViewComponent.prototype.indicatorStyle;
/** @type {?} */
DatePickerViewComponent.prototype.showErrorToast;
/** @type {?} */
DatePickerViewComponent.prototype.showErrorToastInterval;
/** @type {?} */
DatePickerViewComponent.prototype.onValueChange;
/** @type {?} */
DatePickerViewComponent.prototype.amPicker;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXItdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkLW1vYmlsZS8iLCJzb3VyY2VzIjpbImRhdGUtcGlja2VyLXZpZXcvZGF0ZS1waWNrZXItdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFHWixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBYzNFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxtQkFBbUI7SUFaaEU7O1FBZUUsU0FBSSxHQUFXLE1BQU0sQ0FBQztRQUV0QixZQUFPLEdBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU5QyxZQUFPLEdBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqRCxVQUFLLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUV6QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBVzVCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRS9CLDJCQUFzQixHQUFXLElBQUksQ0FBQztRQUV0QyxrQkFBYSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3RELGFBQVEsR0FBRyxJQUFJLENBQUM7SUF3RmxCLENBQUM7Ozs7SUF6R0MsSUFDSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxD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Q0FDZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIENvbXBvbmVudCxcbiAgT25DaGFuZ2VzLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgRXZlbnRFbWl0dGVyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBBZnRlclZpZXdJbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdEYXRlUGlja2VyVmlldywgbnptLWRhdGUtcGlja2VyLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXItdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVBpY2tlclZpZXdDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlclZpZXdDb21wb25lbnQgZXh0ZW5kcyBEYXRlUGlja2VyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KClcbiAgbW9kZTogc3RyaW5nID0gJ2RhdGUnO1xuICBASW5wdXQoKVxuICBtaW5EYXRlOiBEYXRlID0gbmV3IERhdGUoMjAwMCwgNSwgMSwgMCwgMCwgMCk7XG4gIEBJbnB1dCgpXG4gIG1heERhdGU6IERhdGUgPSBuZXcgRGF0ZSgyMDMwLCAxLCAxLCAyMywgNTksIDU5KTtcbiAgQElucHV0KClcbiAgdmFsdWU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBASW5wdXQoKVxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBpbmRpY2F0b3JTdHlsZTogb2JqZWN0ID0ge307XG4gIEBJbnB1dCgpXG4gIGdldCBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sb2NhbGU7XG4gIH1cbiAgc2V0IGxvY2FsZSh2YWx1ZSkge1xuICAgIHRoaXMub3B0aW9ucy5sb2NhbGUgPSB2YWx1ZTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuICBASW5wdXQoKVxuICBzaG93RXJyb3JUb2FzdDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHNob3dFcnJvclRvYXN0SW50ZXJ2YWw6IG51bWJlciA9IDIwMDA7XG4gIEBPdXRwdXQoKVxuICBvblZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFtLXBpY2tlcicpXG4gIGFtUGlja2VyID0gdHJ1ZTtcblxuICByZWxvYWRQaWNrZXIoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBpY2tlcikge1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2VsZi5zZWxlY3RlZFRhcmdldC5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgc2VsZi5jdXJyZW50UGlja2VyLmNoaWxkcmVuW2ldLmNoaWxkcmVuWzJdLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIC4zcyc7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBwYXJzZUludChpdGVtLmN1cnJlbnRZLCAwKTtcbiAgICAgICAgICBzZWxmLmN1cnJlbnRQaWNrZXIuY2hpbGRyZW5baV0uY2hpbGRyZW5bMl0uc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoJHtpbmRleCAqIHNlbGYubGluZUhlaWdodH1weClgO1xuICAgICAgICB9KTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMub3B0aW9uSW5pdCgpO1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IERhdGUpID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5uZ01vZGVsT25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB7fSk6IHZvaWQge1xuICAgIHRoaXMubmdNb2RlbE9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBvcHRpb25Jbml0KCkge1xuICAgIHRoaXMub3B0aW9ucy5tb2RlID0gdGhpcy5tb2RlO1xuICAgIHRoaXMub3B0aW9ucy5taW5EYXRlID0gdGhpcy5taW5EYXRlO1xuICAgIHRoaXMub3B0aW9ucy5tYXhEYXRlID0gdGhpcy5tYXhEYXRlO1xuICAgIHRoaXMub3B0aW9ucy5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG4gICAgdGhpcy5vcHRpb25zLmxvY2FsZSA9IHRoaXMubG9jYWxlO1xuICAgIHRoaXMub3B0aW9ucy52YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgdGhpcy5vcHRpb25zLnNob3dFcnJvclRvYXN0ID0gdGhpcy5zaG93RXJyb3JUb2FzdDtcbiAgICB0aGlzLm9wdGlvbnMuc2hvd0Vycm9yVG9hc3RJbnRlcnZhbCA9IHRoaXMuc2hvd0Vycm9yVG9hc3RJbnRlcnZhbDtcbiAgICB0aGlzLm9wdGlvbnMub25WYWx1ZUNoYW5nZSA9IHRoaXMub25WYWx1ZUNoYW5nZTtcbiAgICB0aGlzLmNoZWNrTW9kZSh0aGlzLm9wdGlvbnMubW9kZSk7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnRyYW5zZm9ybURhdGVGb3JtYXQodGhpcy5vcHRpb25zLnZhbHVlKS5zcGxpdCgnLScpO1xuICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmN1cnJlbnRUaW1lID0gdmFsdWUubWFwKGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoaXRlbSwgMCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9wdGlvbkluaXQoKTtcbiAgICB0aGlzLmxvY2FsZVByb3ZpZGVyKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5jdXJyZW50UGlja2VyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5yZWxvYWRQaWNrZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zLnZhbHVlID0gY2hhbmdlcy52YWx1ZS5jdXJyZW50VmFsdWU7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudHJhbnNmb3JtRGF0ZUZvcm1hdCh0aGlzLm9wdGlvbnMudmFsdWUpLnNwbGl0KCctJyk7XG4gICAgICBpZiAodmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUaW1lID0gdmFsdWUubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgIHJldHVybiBwYXJzZUludChpdGVtLCAwKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmp1ZGdlRXF1YWxBcnJheSh0aGlzLmN1cnJlbnRUaW1lLCB0aGlzLnJlc3VsdEFyciwgdGhpcy5yZXN1bHRBcnIubGVuZ3RoKSB8fFxuICAgICAgICB0aGlzLmp1ZGdlRXF1YWxBcnJheSh0aGlzLmN1cnJlbnRUaW1lLCB0aGlzLm1pbl9kYXRlLCB0aGlzLmN1cnJlbnRUaW1lLmxlbmd0aCkgfHxcbiAgICAgICAgdGhpcy5qdWRnZVRpbWUodGhpcy5jdXJyZW50VGltZSwgdGhpcy5tYXhfZGF0ZSlcbiAgICAgICkge1xuICAgICAgICB0aGlzLm9wdGlvbkluaXQoKTtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMubW9kZSB8fCBjaGFuZ2VzLm1pbkRhdGUgfHwgY2hhbmdlcy5tYXhEYXRlIHx8IGNoYW5nZXMuZGlzYWJsZWQgfHwgY2hhbmdlcy5sb2NhbGUpIHtcbiAgICAgIHRoaXMub3B0aW9uSW5pdCgpO1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=