ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
230 lines (229 loc) • 16 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ViewEncapsulation, Input, HostBinding } from '@angular/core';
import { zh_CN, en_US } from '../../locale-provider/languages';
/**
* @record
*/
export function PropsType() { }
/** @type {?} */
PropsType.prototype.locale;
/** @type {?|undefined} */
PropsType.prototype.prefixCls;
/** @type {?|undefined} */
PropsType.prototype.pickerPrefixCls;
/** @type {?|undefined} */
PropsType.prototype.title;
/** @type {?|undefined} */
PropsType.prototype.defaultValue;
/** @type {?|undefined} */
PropsType.prototype.value;
/** @type {?|undefined} */
PropsType.prototype.onValueChange;
/** @type {?|undefined} */
PropsType.prototype.mode;
/** @type {?|undefined} */
PropsType.prototype.minDate;
/** @type {?|undefined} */
PropsType.prototype.maxDate;
/** @type {?|undefined} */
PropsType.prototype.clientHeight;
/** @type {?|undefined} */
PropsType.prototype.datePickerViewLocale;
var TimePickerComponent = /** @class */ (function () {
function TimePickerComponent() {
var _this = this;
this.defaultProps = /** @type {?} */ ({
minDate: new Date(0, 0, 0, 0, 0),
maxDate: new Date(9999, 11, 31, 23, 59, 59),
defaultValue: new Date(2000, 1, 1, 8),
mode: 'time',
datePickerViewLocale: zh_CN
});
this.props = /** @type {?} */ ({
minDate: new Date(0, 0, 0, 0, 0),
maxDate: new Date(9999, 11, 31, 23, 59, 59),
defaultValue: new Date(2000, 1, 1, 8),
mode: 'time',
datePickerViewLocale: zh_CN
});
this.timePicker = true;
this.onDateChange = function (date) {
var onValueChange = _this.props.onValueChange;
onValueChange && onValueChange(date);
};
}
Object.defineProperty(TimePickerComponent.prototype, "propsData", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.props = tslib_1.__assign({}, this.props, value);
if (this.props.locale && this.props.locale.today === 'Today') {
this.props.datePickerViewLocale = en_US;
}
else {
this.props.datePickerViewLocale = zh_CN;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(TimePickerComponent.prototype, "title", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.props.title = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TimePickerComponent.prototype, "value", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.props.value = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TimePickerComponent.prototype, "prefixCls", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.props.prefixCls = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TimePickerComponent.prototype, "defaultValue", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.props.defaultValue = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TimePickerComponent.prototype, "pickerPrefixCls", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.props.pickerPrefixCls = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TimePickerComponent.prototype, "clientHeight", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.props.clientHeight = value;
/** @type {?} */
var height = (value && (value * 3) / 8 - 52) || Number.POSITIVE_INFINITY;
this.selfHeight = (height > 164 || height < 0 ? 164 : height) + 'px';
},
enumerable: true,
configurable: true
});
Object.defineProperty(TimePickerComponent.prototype, "onValueChange", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.props.onValueChange = value;
},
enumerable: true,
configurable: true
});
/**
* @param {?=} date
* @return {?}
*/
TimePickerComponent.prototype.getMinTime = /**
* @param {?=} date
* @return {?}
*/
function (date) {
/** @type {?} */
var minDate = /** @type {?} */ (this.props.minDate);
if (!date ||
date.getFullYear() > minDate.getFullYear() ||
date.getMonth() > minDate.getMonth() ||
date.getDate() > minDate.getDate()) {
return this.defaultProps.minDate;
}
return minDate;
};
/**
* @param {?=} date
* @return {?}
*/
TimePickerComponent.prototype.getMaxTime = /**
* @param {?=} date
* @return {?}
*/
function (date) {
/** @type {?} */
var maxDate = /** @type {?} */ (this.props.maxDate);
if (!date ||
date.getFullYear() < maxDate.getFullYear() ||
date.getMonth() < maxDate.getMonth() ||
date.getDate() < maxDate.getDate()) {
return this.defaultProps.maxDate;
}
return maxDate;
};
TimePickerComponent.decorators = [
{ type: Component, args: [{
selector: 'CalendarTimePicker, nzm-calendar-time-picker',
template: "<div class=\"title\">{{props.title}}</div>\n<DatePickerView [ngStyle]=\"{height: selfHeight, overflow: 'hidden'}\"\n [mode]=\"props.mode\"\n [value]=\"props.value\"\n [locale]=\"props.datePickerViewLocale\"\n [minDate]=\"getMinTime(props.value || props.defaultValue || undefined)\"\n [maxDate]=\"getMaxTime(props.value || props.defaultValue || undefined)\"\n (onValueChange)=\"onDateChange($event)\"\n></DatePickerView>\n",
encapsulation: ViewEncapsulation.None
}] }
];
/** @nocollapse */
TimePickerComponent.ctorParameters = function () { return []; };
TimePickerComponent.propDecorators = {
propsData: [{ type: Input }],
title: [{ type: Input }],
value: [{ type: Input }],
prefixCls: [{ type: Input }],
defaultValue: [{ type: Input }],
pickerPrefixCls: [{ type: Input }],
clientHeight: [{ type: Input }],
onValueChange: [{ type: Input }],
timePicker: [{ type: HostBinding, args: ['class.time-picker',] }]
};
return TimePickerComponent;
}());
export { TimePickerComponent };
if (false) {
/** @type {?} */
TimePickerComponent.prototype.defaultProps;
/** @type {?} */
TimePickerComponent.prototype.props;
/** @type {?} */
TimePickerComponent.prototype.selfHeight;
/** @type {?} */
TimePickerComponent.prototype.timePicker;
/** @type {?} */
TimePickerComponent.prototype.onDateChange;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkLW1vYmlsZS8iLCJzb3VyY2VzIjpbImNhbGVuZGFyL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakYsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBd0Y3RDtRQUFBLGlCQUFnQjs4Q0FqRUQ7WUFDYixPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDM0MsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyQyxJQUFJLEVBQUUsTUFBTTtZQUNaLG9CQUFvQixFQUFFLEtBQUs7U0FDZjt1Q0FFTjtZQUNOLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUMzQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLElB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SUFDRSxDQUFDLElBQUk7WUFDTCxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUMxQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUNsQztZQUNBLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7U0FDbEM7UUFDRCxPQUFPLE9BQU8sQ0FBQztLQUNoQjs7Z0JBdEdGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsOENBQThDO29CQUN4RCwyZ0JBQTBDO29CQUMxQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7Ozs7OzRCQW9CRSxLQUFLO3dCQWFMLEtBQUs7d0JBSUwsS0FBSzs0QkFJTCxLQUFLOytCQUlMLEtBQUs7a0NBSUwsS0FBSzsrQkFJTCxLQUFLO2dDQU1MLEtBQUs7NkJBS0wsV0FBVyxTQUFDLG1CQUFtQjs7OEJBdkZsQzs7U0F3QmEsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuLi9kYXRlL0RhdGFUeXBlcyc7XG5pbXBvcnQgeyB6aF9DTiwgZW5fVVMgfSBmcm9tICcuLi8uLi9sb2NhbGUtcHJvdmlkZXIvbGFuZ3VhZ2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wc1R5cGUge1xuICBsb2NhbGU6IE1vZGVscy5Mb2NhbGU7XG4gIHByZWZpeENscz86IHN0cmluZztcbiAgcGlja2VyUHJlZml4Q2xzPzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlPzogRGF0ZTtcbiAgdmFsdWU/OiBEYXRlO1xuICBvblZhbHVlQ2hhbmdlPzogKHRpbWU6IERhdGUpID0+IHZvaWQ7XG4gIG1vZGU/OiBzdHJpbmc7XG4gIG1pbkRhdGU/OiBEYXRlO1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgY2xpZW50SGVpZ2h0PzogbnVtYmVyO1xuICBkYXRlUGlja2VyVmlld0xvY2FsZT86IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnQ2FsZW5kYXJUaW1lUGlja2VyLCBuem0tY2FsZW5kYXItdGltZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlckNvbXBvbmVudCB7XG4gIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBtaW5EYXRlOiBuZXcgRGF0ZSgwLCAwLCAwLCAwLCAwKSxcbiAgICBtYXhEYXRlOiBuZXcgRGF0ZSg5OTk5LCAxMSwgMzEsIDIzLCA1OSwgNTkpLFxuICAgIGRlZmF1bHRWYWx1ZTogbmV3IERhdGUoMjAwMCwgMSwgMSwgOCksXG4gICAgbW9kZTogJ3RpbWUnLFxuICAgIGRhdGVQaWNrZXJWaWV3TG9jYWxlOiB6aF9DTlxuICB9IGFzIFByb3BzVHlwZTtcblxuICBwcm9wcyA9IHtcbiAgICBtaW5EYXRlOiBuZXcgRGF0ZSgwLCAwLCAwLCAwLCAwKSxcbiAgICBtYXhEYXRlOiBuZXcgRGF0ZSg5OTk5LCAxMSwgMzEsIDIzLCA1OSwgNTkpLFxuICAgIGRlZmF1bHRWYWx1ZTogbmV3IERhdGUoMjAwMCwgMSwgMSwgOCksXG4gICAgbW9kZTogJ3RpbWUnLFxuICAgIGRhdGVQaWNrZXJWaWV3TG9jYWxlOiB6aF9DTlxuICB9IGFzIFByb3BzVHlwZTtcblxuICBzZWxmSGVpZ2h0OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgc2V0IHByb3BzRGF0YSh2YWx1ZSkge1xuICAgIHRoaXMucHJvcHMgPSB7XG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgICAgLi4udmFsdWVcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMucHJvcHMubG9jYWxlICYmIHRoaXMucHJvcHMubG9jYWxlLnRvZGF5ID09PSAnVG9kYXknKSB7XG4gICAgICB0aGlzLnByb3BzLmRhdGVQaWNrZXJWaWV3TG9jYWxlID0gZW5fVVM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvcHMuZGF0ZVBpY2tlclZpZXdMb2NhbGUgPSB6aF9DTjtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHRpdGxlKHZhbHVlKSB7XG4gICAgdGhpcy5wcm9wcy50aXRsZSA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMucHJvcHMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgcHJlZml4Q2xzKHZhbHVlKSB7XG4gICAgdGhpcy5wcm9wcy5wcmVmaXhDbHMgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgZGVmYXVsdFZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5wcm9wcy5kZWZhdWx0VmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgcGlja2VyUHJlZml4Q2xzKHZhbHVlKSB7XG4gICAgdGhpcy5wcm9wcy5waWNrZXJQcmVmaXhDbHMgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgY2xpZW50SGVpZ2h0KHZhbHVlKSB7XG4gICAgdGhpcy5wcm9wcy5jbGllbnRIZWlnaHQgPSB2YWx1ZTtcbiAgICBjb25zdCBoZWlnaHQgPSAodmFsdWUgJiYgKHZhbHVlICogMykgLyA4IC0gNTIpIHx8IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICB0aGlzLnNlbGZIZWlnaHQgPSAoaGVpZ2h0ID4gMTY0IHx8IGhlaWdodCA8IDAgPyAxNjQgOiBoZWlnaHQpICsgJ3B4JztcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgb25WYWx1ZUNoYW5nZSh2YWx1ZSkge1xuICAgIHRoaXMucHJvcHMub25WYWx1ZUNoYW5nZSA9IHZhbHVlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aW1lLXBpY2tlcicpXG4gIHRpbWVQaWNrZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBvbkRhdGVDaGFuZ2UgPSAoZGF0ZTogRGF0ZSkgPT4ge1xuICAgIGNvbnN0IHsgb25WYWx1ZUNoYW5nZSB9ID0gdGhpcy5wcm9wcztcbiAgICBvblZhbHVlQ2hhbmdlICYmIG9uVmFsdWVDaGFuZ2UoZGF0ZSk7XG4gIH1cblxuICBnZXRNaW5UaW1lKGRhdGU/OiBEYXRlKSB7XG4gICAgY29uc3QgbWluRGF0ZSA9IHRoaXMucHJvcHMubWluRGF0ZSBhcyBEYXRlO1xuICAgIGlmIChcbiAgICAgICFkYXRlIHx8XG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCkgPiBtaW5EYXRlLmdldEZ1bGxZZWFyKCkgfHxcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSA+IG1pbkRhdGUuZ2V0TW9udGgoKSB8fFxuICAgICAgZGF0ZS5nZXREYXRlKCkgPiBtaW5EYXRlLmdldERhdGUoKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFByb3BzLm1pbkRhdGU7XG4gICAgfVxuICAgIHJldHVybiBtaW5EYXRlO1xuICB9XG5cbiAgZ2V0TWF4VGltZShkYXRlPzogRGF0ZSkge1xuICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLnByb3BzLm1heERhdGUgYXMgRGF0ZTtcbiAgICBpZiAoXG4gICAgICAhZGF0ZSB8fFxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpIDwgbWF4RGF0ZS5nZXRGdWxsWWVhcigpIHx8XG4gICAgICBkYXRlLmdldE1vbnRoKCkgPCBtYXhEYXRlLmdldE1vbnRoKCkgfHxcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpIDwgbWF4RGF0ZS5nZXREYXRlKClcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQcm9wcy5tYXhEYXRlO1xuICAgIH1cbiAgICByZXR1cm4gbWF4RGF0ZTtcbiAgfVxufVxuIl19