ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
1,735 lines • 52.6 kB
JavaScript
import { __decorate, __metadata } from 'tslib';
import { CdkOverlayOrigin, OverlayModule } from '@angular/cdk/overlay';
import { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, ElementRef, Renderer2, ChangeDetectorRef, ViewChild, Input, Output, Directive, HostListener, NgModule } from '@angular/core';
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
import { slideMotion } from 'ng-zorro-antd/core/animation';
import { NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';
import { warn } from 'ng-zorro-antd/core/logger';
import { InputBoolean, isNotNil, isNil } from 'ng-zorro-antd/core/util';
import { CommonModule } from '@angular/common';
import { NzOverlayModule } from 'ng-zorro-antd/core/overlay';
import { DateHelperService, NzI18nModule } from 'ng-zorro-antd/i18n';
import { NzIconModule } from 'ng-zorro-antd/icon';
import { reqAnimFrame } from 'ng-zorro-antd/core/polyfill';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
/**
* @fileoverview added by tsickle
* Generated from: time-picker.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
const NZ_CONFIG_COMPONENT_NAME = 'timePicker';
class NzTimePickerComponent {
/**
* @param {?} nzConfigService
* @param {?} element
* @param {?} renderer
* @param {?} cdr
*/
constructor(nzConfigService, element, renderer, cdr) {
this.nzConfigService = nzConfigService;
this.element = element;
this.renderer = renderer;
this.cdr = cdr;
this.isInit = false;
this.focused = false;
this.value = null;
this.overlayPositions = [
{
originX: 'start',
originY: 'bottom',
overlayX: 'start',
overlayY: 'top',
offsetX: 0,
offsetY: 3
}
];
this.nzSize = null;
this.nzPlaceHolder = '';
this.nzOpen = false;
this.nzOpenChange = new EventEmitter();
this.nzHideDisabledOptions = false;
this.nzDisabled = false;
this.nzAutoFocus = false;
}
/**
* @param {?} value
* @return {?}
*/
setValue(value) {
this.value = value ? new Date(value) : null;
if (this._onChange) {
this._onChange(this.value);
}
if (this._onTouched) {
this._onTouched();
}
}
/**
* @return {?}
*/
open() {
if (this.nzDisabled) {
return;
}
this.focus();
this.nzOpen = true;
this.nzOpenChange.emit(this.nzOpen);
}
/**
* @return {?}
*/
close() {
this.nzOpen = false;
this.cdr.markForCheck();
this.nzOpenChange.emit(this.nzOpen);
}
/**
* @return {?}
*/
updateAutoFocus() {
if (this.isInit && !this.nzDisabled) {
if (this.nzAutoFocus) {
this.renderer.setAttribute(this.inputRef.nativeElement, 'autofocus', 'autofocus');
}
else {
this.renderer.removeAttribute(this.inputRef.nativeElement, 'autofocus');
}
}
}
/**
* @return {?}
*/
onClickClearBtn() {
this.setValue(null);
}
/**
* @param {?} value
* @return {?}
*/
onFocus(value) {
this.focused = value;
}
/**
* @return {?}
*/
focus() {
if (this.inputRef.nativeElement) {
this.inputRef.nativeElement.focus();
}
}
/**
* @return {?}
*/
blur() {
if (this.inputRef.nativeElement) {
this.inputRef.nativeElement.blur();
}
}
/**
* @return {?}
*/
ngOnInit() {
this.inputSize = Math.max(8, this.nzFormat.length) + 2;
this.origin = new CdkOverlayOrigin(this.element);
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
const { nzUse12Hours, nzFormat, nzDisabled, nzAutoFocus } = changes;
if (nzUse12Hours && !nzUse12Hours.previousValue && nzUse12Hours.currentValue && !nzFormat) {
this.nzFormat = 'h:mm:ss a';
}
if (nzDisabled) {
/** @type {?} */
const value = nzDisabled.currentValue;
/** @type {?} */
const input = (/** @type {?} */ (this.inputRef.nativeElement));
if (value) {
this.renderer.setAttribute(input, 'disabled', '');
}
else {
this.renderer.removeAttribute(input, 'disabled');
}
}
if (nzAutoFocus) {
this.updateAutoFocus();
}
}
/**
* @return {?}
*/
ngAfterViewInit() {
this.isInit = true;
this.updateAutoFocus();
}
/**
* @param {?} time
* @return {?}
*/
writeValue(time) {
if (time instanceof Date || time === null) {
this.value = time;
}
else {
warn('Non-Date type is not recommended for time-picker, use "Date" type');
this.value = time ? new Date(time) : null;
}
this.cdr.markForCheck();
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this._onChange = fn;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
this._onTouched = fn;
}
/**
* @param {?} isDisabled
* @return {?}
*/
setDisabledState(isDisabled) {
this.nzDisabled = isDisabled;
this.cdr.markForCheck();
}
}
NzTimePickerComponent.decorators = [
{ type: Component, args: [{
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'nz-time-picker',
exportAs: 'nzTimePicker',
template: `
<div class="ant-picker-input">
<input
#inputElement
type="text"
[size]="inputSize"
[nzTime]="nzFormat"
[placeholder]="nzPlaceHolder || ('TimePicker.placeholder' | nzI18n)"
[(ngModel)]="value"
[disabled]="nzDisabled"
(click)="open()"
(focus)="onFocus(true)"
(blur)="onFocus(false)"
/>
<span class="ant-picker-suffix">
<i nz-icon nzType="clock-circle"></i>
</span>
<span *ngIf="nzAllowEmpty && value" class="ant-picker-clear" (click)="onClickClearBtn()">
<i nz-icon nzType="close-circle" nzTheme="fill" [attr.aria-label]="nzClearText" [attr.title]="nzClearText"></i>
</span>
</div>
<ng-template
cdkConnectedOverlay
nzConnectedOverlay
cdkConnectedOverlayHasBackdrop
[cdkConnectedOverlayPositions]="overlayPositions"
[cdkConnectedOverlayOrigin]="origin"
[cdkConnectedOverlayOpen]="nzOpen"
[cdkConnectedOverlayOffsetY]="-2"
(detach)="close()"
(backdropClick)="close()"
>
<div [@slideMotion]="'bottom'" class="ant-picker-dropdown">
<div class="ant-picker-panel-container">
<div tabindex="-1" class="ant-picker-panel">
<nz-time-picker-panel
[ngClass]="nzPopupClassName"
[format]="nzFormat"
[nzHourStep]="nzHourStep"
[nzMinuteStep]="nzMinuteStep"
[nzSecondStep]="nzSecondStep"
[nzDisabledHours]="nzDisabledHours"
[nzDisabledMinutes]="nzDisabledMinutes"
[nzDisabledSeconds]="nzDisabledSeconds"
[nzPlaceHolder]="nzPlaceHolder || ('TimePicker.placeholder' | nzI18n)"
[nzHideDisabledOptions]="nzHideDisabledOptions"
[nzUse12Hours]="nzUse12Hours"
[nzDefaultOpenValue]="nzDefaultOpenValue"
[nzAddOn]="nzAddOn"
[nzClearText]="nzClearText"
[nzAllowEmpty]="nzAllowEmpty"
[(ngModel)]="value"
(ngModelChange)="setValue($event)"
(closePanel)="close()"
>
</nz-time-picker-panel>
</div>
</div>
</div>
</ng-template>
`,
host: {
'[class.ant-picker]': `true`,
'[class.ant-picker-large]': `nzSize === 'large'`,
'[class.ant-picker-small]': `nzSize === 'small'`,
'[class.ant-picker-disabled]': `nzDisabled`,
'[class.ant-picker-focused]': `focused`
},
animations: [slideMotion],
providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: NzTimePickerComponent, multi: true }]
}] }
];
/** @nocollapse */
NzTimePickerComponent.ctorParameters = () => [
{ type: NzConfigService },
{ type: ElementRef },
{ type: Renderer2 },
{ type: ChangeDetectorRef }
];
NzTimePickerComponent.propDecorators = {
inputRef: [{ type: ViewChild, args: ['inputElement', { static: true },] }],
nzSize: [{ type: Input }],
nzHourStep: [{ type: Input }],
nzMinuteStep: [{ type: Input }],
nzSecondStep: [{ type: Input }],
nzClearText: [{ type: Input }],
nzPopupClassName: [{ type: Input }],
nzPlaceHolder: [{ type: Input }],
nzAddOn: [{ type: Input }],
nzDefaultOpenValue: [{ type: Input }],
nzDisabledHours: [{ type: Input }],
nzDisabledMinutes: [{ type: Input }],
nzDisabledSeconds: [{ type: Input }],
nzFormat: [{ type: Input }],
nzOpen: [{ type: Input }],
nzUse12Hours: [{ type: Input }],
nzOpenChange: [{ type: Output }],
nzHideDisabledOptions: [{ type: Input }],
nzAllowEmpty: [{ type: Input }],
nzDisabled: [{ type: Input }],
nzAutoFocus: [{ type: Input }]
};
__decorate([
WithConfig(NZ_CONFIG_COMPONENT_NAME, 1),
__metadata("design:type", Number)
], NzTimePickerComponent.prototype, "nzHourStep", void 0);
__decorate([
WithConfig(NZ_CONFIG_COMPONENT_NAME, 1),
__metadata("design:type", Number)
], NzTimePickerComponent.prototype, "nzMinuteStep", void 0);
__decorate([
WithConfig(NZ_CONFIG_COMPONENT_NAME, 1),
__metadata("design:type", Number)
], NzTimePickerComponent.prototype, "nzSecondStep", void 0);
__decorate([
WithConfig(NZ_CONFIG_COMPONENT_NAME, 'clear'),
__metadata("design:type", String)
], NzTimePickerComponent.prototype, "nzClearText", void 0);
__decorate([
WithConfig(NZ_CONFIG_COMPONENT_NAME),
__metadata("design:type", String)
], NzTimePickerComponent.prototype, "nzPopupClassName", void 0);
__decorate([
WithConfig(NZ_CONFIG_COMPONENT_NAME, 'HH:mm:ss'),
__metadata("design:type", String)
], NzTimePickerComponent.prototype, "nzFormat", void 0);
__decorate([
WithConfig(NZ_CONFIG_COMPONENT_NAME, false), InputBoolean(),
__metadata("design:type", Boolean)
], NzTimePickerComponent.prototype, "nzUse12Hours", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzTimePickerComponent.prototype, "nzHideDisabledOptions", void 0);
__decorate([
WithConfig(NZ_CONFIG_COMPONENT_NAME, true), InputBoolean(),
__metadata("design:type", Boolean)
], NzTimePickerComponent.prototype, "nzAllowEmpty", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzTimePickerComponent.prototype, "nzDisabled", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzTimePickerComponent.prototype, "nzAutoFocus", void 0);
if (false) {
/** @type {?} */
NzTimePickerComponent.ngAcceptInputType_nzUse12Hours;
/** @type {?} */
NzTimePickerComponent.ngAcceptInputType_nzHideDisabledOptions;
/** @type {?} */
NzTimePickerComponent.ngAcceptInputType_nzAllowEmpty;
/** @type {?} */
NzTimePickerComponent.ngAcceptInputType_nzDisabled;
/** @type {?} */
NzTimePickerComponent.ngAcceptInputType_nzAutoFocus;
/**
* @type {?}
* @private
*/
NzTimePickerComponent.prototype._onChange;
/**
* @type {?}
* @private
*/
NzTimePickerComponent.prototype._onTouched;
/** @type {?} */
NzTimePickerComponent.prototype.isInit;
/** @type {?} */
NzTimePickerComponent.prototype.focused;
/** @type {?} */
NzTimePickerComponent.prototype.value;
/** @type {?} */
NzTimePickerComponent.prototype.origin;
/** @type {?} */
NzTimePickerComponent.prototype.inputSize;
/** @type {?} */
NzTimePickerComponent.prototype.overlayPositions;
/** @type {?} */
NzTimePickerComponent.prototype.inputRef;
/** @type {?} */
NzTimePickerComponent.prototype.nzSize;
/** @type {?} */
NzTimePickerComponent.prototype.nzHourStep;
/** @type {?} */
NzTimePickerComponent.prototype.nzMinuteStep;
/** @type {?} */
NzTimePickerComponent.prototype.nzSecondStep;
/** @type {?} */
NzTimePickerComponent.prototype.nzClearText;
/** @type {?} */
NzTimePickerComponent.prototype.nzPopupClassName;
/** @type {?} */
NzTimePickerComponent.prototype.nzPlaceHolder;
/** @type {?} */
NzTimePickerComponent.prototype.nzAddOn;
/** @type {?} */
NzTimePickerComponent.prototype.nzDefaultOpenValue;
/** @type {?} */
NzTimePickerComponent.prototype.nzDisabledHours;
/** @type {?} */
NzTimePickerComponent.prototype.nzDisabledMinutes;
/** @type {?} */
NzTimePickerComponent.prototype.nzDisabledSeconds;
/** @type {?} */
NzTimePickerComponent.prototype.nzFormat;
/** @type {?} */
NzTimePickerComponent.prototype.nzOpen;
/** @type {?} */
NzTimePickerComponent.prototype.nzUse12Hours;
/** @type {?} */
NzTimePickerComponent.prototype.nzOpenChange;
/** @type {?} */
NzTimePickerComponent.prototype.nzHideDisabledOptions;
/** @type {?} */
NzTimePickerComponent.prototype.nzAllowEmpty;
/** @type {?} */
NzTimePickerComponent.prototype.nzDisabled;
/** @type {?} */
NzTimePickerComponent.prototype.nzAutoFocus;
/** @type {?} */
NzTimePickerComponent.prototype.nzConfigService;
/**
* @type {?}
* @private
*/
NzTimePickerComponent.prototype.element;
/**
* @type {?}
* @private
*/
NzTimePickerComponent.prototype.renderer;
/** @type {?} */
NzTimePickerComponent.prototype.cdr;
}
/**
* @fileoverview added by tsickle
* Generated from: time-holder.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class TimeHolder {
constructor() {
this.selected12Hours = undefined;
this._use12Hours = false;
this._changes = new Subject();
}
/**
* @template THIS
* @this {THIS}
* @param {?} value
* @param {?} disabled
* @return {THIS}
*/
setMinutes(value, disabled) {
if (value !== (/** @type {?} */ (this)).minutes && !disabled) {
(/** @type {?} */ (this)).initValue();
(/** @type {?} */ (this)).value.setMinutes(value);
(/** @type {?} */ (this)).update();
}
return (/** @type {?} */ (this));
}
/**
* @template THIS
* @this {THIS}
* @param {?} value
* @param {?} disabled
* @return {THIS}
*/
setHours(value, disabled) {
if (value !== (/** @type {?} */ (this)).hours && !disabled) {
(/** @type {?} */ (this)).initValue();
if ((/** @type {?} */ (this))._use12Hours) {
if ((/** @type {?} */ (this)).selected12Hours === 'PM' && value !== 12) {
(/** @type {?} */ (this)).value.setHours(((/** @type {?} */ (value))) + 12);
}
else if ((/** @type {?} */ (this)).selected12Hours === 'AM' && value === 12) {
(/** @type {?} */ (this)).value.setHours(0);
}
else {
(/** @type {?} */ (this)).value.setHours(value);
}
}
else {
(/** @type {?} */ (this)).value.setHours(value);
}
(/** @type {?} */ (this)).update();
}
return (/** @type {?} */ (this));
}
/**
* @template THIS
* @this {THIS}
* @param {?} value
* @param {?} disabled
* @return {THIS}
*/
setSeconds(value, disabled) {
if (value !== (/** @type {?} */ (this)).seconds && !disabled) {
(/** @type {?} */ (this)).initValue();
(/** @type {?} */ (this)).value.setSeconds(value);
(/** @type {?} */ (this)).update();
}
return (/** @type {?} */ (this));
}
/**
* @template THIS
* @this {THIS}
* @param {?} value
* @return {THIS}
*/
setUse12Hours(value) {
(/** @type {?} */ (this))._use12Hours = value;
return (/** @type {?} */ (this));
}
/**
* @return {?}
*/
get changes() {
return this._changes.asObservable();
}
/**
* @template THIS
* @this {THIS}
* @param {?} value
* @param {?=} use12Hours
* @return {THIS}
*/
setValue(value, use12Hours) {
if (isNotNil(use12Hours)) {
(/** @type {?} */ (this))._use12Hours = (/** @type {?} */ (use12Hours));
}
if (value !== (/** @type {?} */ (this)).value) {
(/** @type {?} */ (this))._value = value;
if (isNotNil((/** @type {?} */ (this)).value)) {
if ((/** @type {?} */ (this))._use12Hours && isNotNil((/** @type {?} */ (this)).hours)) {
(/** @type {?} */ (this)).selected12Hours = (/** @type {?} */ (this)).hours >= 12 ? 'PM' : 'AM';
}
}
else {
(/** @type {?} */ (this))._clear();
}
}
return (/** @type {?} */ (this));
}
/**
* @return {?}
*/
initValue() {
if (isNil(this.value)) {
this.setValue(new Date(), this._use12Hours);
}
}
/**
* @return {?}
*/
clear() {
this._clear();
this.update();
}
/**
* @return {?}
*/
get isEmpty() {
return !(isNotNil(this.hours) || isNotNil(this.minutes) || isNotNil(this.seconds));
}
/**
* @private
* @return {?}
*/
_clear() {
this._value = undefined;
this.selected12Hours = undefined;
}
/**
* @private
* @return {?}
*/
update() {
if (this.isEmpty) {
this._value = undefined;
}
else {
if (isNotNil(this.hours)) {
(/** @type {?} */ (this.value)).setHours((/** @type {?} */ (this.hours)));
}
if (isNotNil(this.minutes)) {
(/** @type {?} */ (this.value)).setMinutes((/** @type {?} */ (this.minutes)));
}
if (isNotNil(this.seconds)) {
(/** @type {?} */ (this.value)).setSeconds((/** @type {?} */ (this.seconds)));
}
if (this._use12Hours) {
if (this.selected12Hours === 'PM' && (/** @type {?} */ (this.hours)) < 12) {
(/** @type {?} */ (this.value)).setHours((/** @type {?} */ (this.hours)) + 12);
}
if (this.selected12Hours === 'AM' && (/** @type {?} */ (this.hours)) >= 12) {
(/** @type {?} */ (this.value)).setHours((/** @type {?} */ (this.hours)) - 12);
}
}
}
this.changed();
}
/**
* @return {?}
*/
changed() {
this._changes.next(this.value);
}
/**
* \@description
* UI view hours
* Get viewHours which is selected in `time-picker-panel` and its range is [12, 1, 2, ..., 11]
* @return {?}
*/
get viewHours() {
return this._use12Hours && isNotNil(this.hours) ? this.calculateViewHour((/** @type {?} */ (this.hours))) : this.hours;
}
/**
* @param {?} value
* @return {?}
*/
setSelected12Hours(value) {
if ((/** @type {?} */ (value)).toUpperCase() !== this.selected12Hours) {
this.selected12Hours = (/** @type {?} */ (value)).toUpperCase();
this.update();
}
}
/**
* @return {?}
*/
get value() {
return this._value || this._defaultOpenValue;
}
/**
* @return {?}
*/
get hours() {
var _a;
return (_a = this.value) === null || _a === void 0 ? void 0 : _a.getHours();
}
/**
* @return {?}
*/
get minutes() {
var _a;
return (_a = this.value) === null || _a === void 0 ? void 0 : _a.getMinutes();
}
/**
* @return {?}
*/
get seconds() {
var _a;
return (_a = this.value) === null || _a === void 0 ? void 0 : _a.getSeconds();
}
/**
* @template THIS
* @this {THIS}
* @param {?} value
* @return {THIS}
*/
setDefaultOpenValue(value) {
(/** @type {?} */ (this))._defaultOpenValue = value;
return (/** @type {?} */ (this));
}
/**
* @private
* @param {?} value
* @return {?}
*/
calculateViewHour(value) {
/** @type {?} */
const selected12Hours = this.selected12Hours;
if (selected12Hours === 'PM' && value > 12) {
return value - 12;
}
if (selected12Hours === 'AM' && value === 0) {
return 12;
}
return value;
}
}
if (false) {
/** @type {?} */
TimeHolder.prototype.selected12Hours;
/**
* @type {?}
* @private
*/
TimeHolder.prototype._value;
/**
* @type {?}
* @private
*/
TimeHolder.prototype._use12Hours;
/**
* @type {?}
* @private
*/
TimeHolder.prototype._defaultOpenValue;
/**
* @type {?}
* @private
*/
TimeHolder.prototype._changes;
}
/**
* @fileoverview added by tsickle
* Generated from: time-value-accessor.directive.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NzTimeValueAccessorDirective {
/**
* @param {?} dateHelper
* @param {?} elementRef
*/
constructor(dateHelper, elementRef) {
this.dateHelper = dateHelper;
this.elementRef = elementRef;
}
/**
* @return {?}
*/
keyup() {
this.changed();
}
/**
* @return {?}
*/
blur() {
this.touched();
}
/**
* @return {?}
*/
changed() {
if (this._onChange) {
/** @type {?} */
const value = this.dateHelper.parseTime(this.elementRef.nativeElement.value, this.nzTime);
this._onChange((/** @type {?} */ (value)));
}
}
/**
* @return {?}
*/
touched() {
if (this._onTouch) {
this._onTouch();
}
}
/**
* @return {?}
*/
setRange() {
this.elementRef.nativeElement.focus();
this.elementRef.nativeElement.setSelectionRange(0, this.elementRef.nativeElement.value.length);
}
/**
* @param {?} value
* @return {?}
*/
writeValue(value) {
this.elementRef.nativeElement.value = this.dateHelper.format(value, this.nzTime);
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this._onChange = fn;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
this._onTouch = fn;
}
}
NzTimeValueAccessorDirective.decorators = [
{ type: Directive, args: [{
selector: 'input[nzTime]',
exportAs: 'nzTime',
providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: NzTimeValueAccessorDirective, multi: true }]
},] }
];
/** @nocollapse */
NzTimeValueAccessorDirective.ctorParameters = () => [
{ type: DateHelperService },
{ type: ElementRef }
];
NzTimeValueAccessorDirective.propDecorators = {
nzTime: [{ type: Input }],
keyup: [{ type: HostListener, args: ['keyup',] }],
blur: [{ type: HostListener, args: ['blur',] }]
};
if (false) {
/**
* @type {?}
* @private
*/
NzTimeValueAccessorDirective.prototype._onChange;
/**
* @type {?}
* @private
*/
NzTimeValueAccessorDirective.prototype._onTouch;
/** @type {?} */
NzTimeValueAccessorDirective.prototype.nzTime;
/**
* @type {?}
* @private
*/
NzTimeValueAccessorDirective.prototype.dateHelper;
/**
* @type {?}
* @private
*/
NzTimeValueAccessorDirective.prototype.elementRef;
}
/**
* @fileoverview added by tsickle
* Generated from: time-picker-panel.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @param {?} length
* @param {?=} step
* @param {?=} start
* @return {?}
*/
function makeRange(length, step = 1, start = 0) {
return new Array(Math.ceil(length / step)).fill(0).map((/**
* @param {?} _
* @param {?} i
* @return {?}
*/
(_, i) => (i + start) * step));
}
class NzTimePickerPanelComponent {
/**
* @param {?} cdr
* @param {?} dateHelper
*/
constructor(cdr, dateHelper) {
this.cdr = cdr;
this.dateHelper = dateHelper;
this._nzHourStep = 1;
this._nzMinuteStep = 1;
this._nzSecondStep = 1;
this.unsubscribe$ = new Subject();
this._format = 'HH:mm:ss';
this._allowEmpty = true;
this.time = new TimeHolder();
this.hourEnabled = true;
this.minuteEnabled = true;
this.secondEnabled = true;
this.firstScrolled = false;
this.enabledColumns = 3;
this.nzInDatePicker = false; // If inside a date-picker, more diff works need to be done
this.nzHideDisabledOptions = false;
this.nzUse12Hours = false;
this.closePanel = new EventEmitter();
}
/**
* @param {?} value
* @return {?}
*/
set nzAllowEmpty(value) {
if (isNotNil(value)) {
this._allowEmpty = value;
}
}
/**
* @return {?}
*/
get nzAllowEmpty() {
return this._allowEmpty;
}
/**
* @param {?} value
* @return {?}
*/
set nzDisabledHours(value) {
this._disabledHours = value;
if (!!this._disabledHours) {
this.buildHours();
}
}
/**
* @return {?}
*/
get nzDisabledHours() {
return this._disabledHours;
}
/**
* @param {?} value
* @return {?}
*/
set nzDisabledMinutes(value) {
if (isNotNil(value)) {
this._disabledMinutes = value;
this.buildMinutes();
}
}
/**
* @return {?}
*/
get nzDisabledMinutes() {
return this._disabledMinutes;
}
/**
* @param {?} value
* @return {?}
*/
set nzDisabledSeconds(value) {
if (isNotNil(value)) {
this._disabledSeconds = value;
this.buildSeconds();
}
}
/**
* @return {?}
*/
get nzDisabledSeconds() {
return this._disabledSeconds;
}
/**
* @param {?} value
* @return {?}
*/
set format(value) {
if (isNotNil(value)) {
this._format = value;
this.enabledColumns = 0;
/** @type {?} */
const charSet = new Set(value);
this.hourEnabled = charSet.has('H') || charSet.has('h');
this.minuteEnabled = charSet.has('m');
this.secondEnabled = charSet.has('s');
if (this.hourEnabled) {
this.enabledColumns++;
}
if (this.minuteEnabled) {
this.enabledColumns++;
}
if (this.secondEnabled) {
this.enabledColumns++;
}
if (this.nzUse12Hours) {
this.build12Hours();
}
}
}
/**
* @return {?}
*/
get format() {
return this._format;
}
/**
* @param {?} value
* @return {?}
*/
set nzHourStep(value) {
if (isNotNil(value)) {
this._nzHourStep = value;
this.buildHours();
}
}
/**
* @return {?}
*/
get nzHourStep() {
return this._nzHourStep;
}
/**
* @param {?} value
* @return {?}
*/
set nzMinuteStep(value) {
if (isNotNil(value)) {
this._nzMinuteStep = value;
this.buildMinutes();
}
}
/**
* @return {?}
*/
get nzMinuteStep() {
return this._nzMinuteStep;
}
/**
* @param {?} value
* @return {?}
*/
set nzSecondStep(value) {
if (isNotNil(value)) {
this._nzSecondStep = value;
this.buildSeconds();
}
}
/**
* @return {?}
*/
get nzSecondStep() {
return this._nzSecondStep;
}
/**
* @return {?}
*/
selectInputRange() {
setTimeout((/**
* @return {?}
*/
() => {
if (this.nzTimeValueAccessorDirective) {
this.nzTimeValueAccessorDirective.setRange();
}
}));
}
/**
* @return {?}
*/
buildHours() {
var _a;
/** @type {?} */
let hourRanges = 24;
/** @type {?} */
let disabledHours = (_a = this.nzDisabledHours) === null || _a === void 0 ? void 0 : _a.call(this);
/** @type {?} */
let startIndex = 0;
if (this.nzUse12Hours) {
hourRanges = 12;
if (disabledHours) {
if (this.time.selected12Hours === 'PM') {
/**
* Filter and transform hours which greater or equal to 12
* [0, 1, 2, ..., 12, 13, 14, 15, ..., 23] => [12, 1, 2, 3, ..., 11]
*/
disabledHours = disabledHours.filter((/**
* @param {?} i
* @return {?}
*/
i => i >= 12)).map((/**
* @param {?} i
* @return {?}
*/
i => (i > 12 ? i - 12 : i)));
}
else {
/**
* Filter and transform hours which less than 12
* [0, 1, 2,..., 12, 13, 14, 15, ...23] => [12, 1, 2, 3, ..., 11]
*/
disabledHours = disabledHours.filter((/**
* @param {?} i
* @return {?}
*/
i => i < 12 || i === 24)).map((/**
* @param {?} i
* @return {?}
*/
i => (i === 24 || i === 0 ? 12 : i)));
}
}
startIndex = 1;
}
this.hourRange = makeRange(hourRanges, this.nzHourStep, startIndex).map((/**
* @param {?} r
* @return {?}
*/
r => {
return {
index: r,
disabled: disabledHours && disabledHours.indexOf(r) !== -1
};
}));
if (this.nzUse12Hours && this.hourRange[this.hourRange.length - 1].index === 12) {
/** @type {?} */
const temp = [...this.hourRange];
temp.unshift(temp[temp.length - 1]);
temp.splice(temp.length - 1, 1);
this.hourRange = temp;
}
}
/**
* @return {?}
*/
buildMinutes() {
this.minuteRange = makeRange(60, this.nzMinuteStep).map((/**
* @param {?} r
* @return {?}
*/
r => {
return {
index: r,
disabled: this.nzDisabledMinutes && this.nzDisabledMinutes((/** @type {?} */ (this.time.hours))).indexOf(r) !== -1
};
}));
}
/**
* @return {?}
*/
buildSeconds() {
this.secondRange = makeRange(60, this.nzSecondStep).map((/**
* @param {?} r
* @return {?}
*/
r => {
return {
index: r,
disabled: this.nzDisabledSeconds && this.nzDisabledSeconds((/** @type {?} */ (this.time.hours)), (/** @type {?} */ (this.time.minutes))).indexOf(r) !== -1
};
}));
}
/**
* @return {?}
*/
build12Hours() {
/** @type {?} */
const isUpperFormat = this._format.includes('A');
this.use12HoursRange = [
{
index: 0,
value: isUpperFormat ? 'AM' : 'am'
},
{
index: 1,
value: isUpperFormat ? 'PM' : 'pm'
}
];
}
/**
* @return {?}
*/
buildTimes() {
this.buildHours();
this.buildMinutes();
this.buildSeconds();
this.build12Hours();
}
/**
* @param {?=} delay
* @return {?}
*/
scrollToTime(delay = 0) {
if (this.hourEnabled && this.hourListElement) {
this.scrollToSelected(this.hourListElement.nativeElement, (/** @type {?} */ (this.time.viewHours)), delay, 'hour');
}
if (this.minuteEnabled && this.minuteListElement) {
this.scrollToSelected(this.minuteListElement.nativeElement, (/** @type {?} */ (this.time.minutes)), delay, 'minute');
}
if (this.secondEnabled && this.secondListElement) {
this.scrollToSelected(this.secondListElement.nativeElement, (/** @type {?} */ (this.time.seconds)), delay, 'second');
}
if (this.nzUse12Hours && this.use12HoursListElement) {
/** @type {?} */
const selectedHours = this.time.selected12Hours;
/** @type {?} */
const index = selectedHours === 'AM' ? 0 : 1;
this.scrollToSelected(this.use12HoursListElement.nativeElement, index, delay, '12-hour');
}
}
/**
* @param {?} hour
* @return {?}
*/
selectHour(hour) {
this.time.setHours(hour.index, hour.disabled);
if (!!this._disabledMinutes) {
this.buildMinutes();
}
if (this._disabledSeconds || this._disabledMinutes) {
this.buildSeconds();
}
}
/**
* @param {?} minute
* @return {?}
*/
selectMinute(minute) {
this.time.setMinutes(minute.index, minute.disabled);
if (!!this._disabledSeconds) {
this.buildSeconds();
}
}
/**
* @param {?} second
* @return {?}
*/
selectSecond(second) {
this.time.setSeconds(second.index, second.disabled);
}
/**
* @param {?} value
* @return {?}
*/
select12Hours(value) {
this.time.setSelected12Hours(value.value);
if (!!this._disabledHours) {
this.buildHours();
}
if (!!this._disabledMinutes) {
this.buildMinutes();
}
if (!!this._disabledSeconds) {
this.buildSeconds();
}
}
/**
* @param {?} instance
* @param {?} index
* @param {?=} duration
* @param {?=} unit
* @return {?}
*/
scrollToSelected(instance, index, duration = 0, unit) {
if (!instance) {
return;
}
/** @type {?} */
const transIndex = this.translateIndex(index, unit);
/** @type {?} */
const currentOption = (/** @type {?} */ ((instance.children[transIndex] || instance.children[0])));
this.scrollTo(instance, currentOption.offsetTop, duration);
}
/**
* @param {?} index
* @param {?} unit
* @return {?}
*/
translateIndex(index, unit) {
var _a, _b, _c;
if (unit === 'hour') {
return this.calcIndex((_a = this.nzDisabledHours) === null || _a === void 0 ? void 0 : _a.call(this), this.hourRange.map((/**
* @param {?} item
* @return {?}
*/
item => item.index)).indexOf(index));
}
else if (unit === 'minute') {
return this.calcIndex((_b = this.nzDisabledMinutes) === null || _b === void 0 ? void 0 : _b.call(this, (/** @type {?} */ (this.time.hours))), this.minuteRange.map((/**
* @param {?} item
* @return {?}
*/
item => item.index)).indexOf(index));
}
else if (unit === 'second') {
// second
return this.calcIndex((_c = this.nzDisabledSeconds) === null || _c === void 0 ? void 0 : _c.call(this, (/** @type {?} */ (this.time.hours)), (/** @type {?} */ (this.time.minutes))), this.secondRange.map((/**
* @param {?} item
* @return {?}
*/
item => item.index)).indexOf(index));
}
else {
// 12-hour
return this.calcIndex([], this.use12HoursRange.map((/**
* @param {?} item
* @return {?}
*/
item => item.index)).indexOf(index));
}
}
/**
* @param {?} element
* @param {?} to
* @param {?} duration
* @return {?}
*/
scrollTo(element, to, duration) {
if (duration <= 0) {
element.scrollTop = to;
return;
}
/** @type {?} */
const difference = to - element.scrollTop;
/** @type {?} */
const perTick = (difference / duration) * 10;
reqAnimFrame((/**
* @return {?}
*/
() => {
element.scrollTop = element.scrollTop + perTick;
if (element.scrollTop === to) {
return;
}
this.scrollTo(element, to, duration - 10);
}));
}
/**
* @param {?} array
* @param {?} index
* @return {?}
*/
calcIndex(array, index) {
if ((array === null || array === void 0 ? void 0 : array.length) && this.nzHideDisabledOptions) {
return (index -
array.reduce((/**
* @param {?} pre
* @param {?} value
* @return {?}
*/
(pre, value) => {
return pre + (value < index ? 1 : 0);
}), 0));
}
else {
return index;
}
}
/**
* @protected
* @return {?}
*/
changed() {
if (this.onChange) {
this.onChange((/** @type {?} */ (this.time.value)));
}
}
/**
* @protected
* @return {?}
*/
touched() {
if (this.onTouch) {
this.onTouch();
}
}
/**
* @param {?} value
* @return {?}
*/
timeDisabled(value) {
/** @type {?} */
const hour = value.getHours();
/** @type {?} */
const minute = value.getMinutes();
/** @type {?} */
const second = value.getSeconds();
return ((this.nzDisabledHours && this.nzDisabledHours().indexOf(hour)) > -1 ||
(this.nzDisabledMinutes && this.nzDisabledMinutes(hour).indexOf(minute)) > -1 ||
(this.nzDisabledSeconds && this.nzDisabledSeconds(hour, minute).indexOf(second)) > -1);
}
/**
* @return {?}
*/
onClickNow() {
/** @type {?} */
const now = new Date();
if (this.timeDisabled(now)) {
return;
}
this.time.setValue(now);
this.changed();
this.closePanel.emit();
}
/**
* @param {?} hour
* @return {?}
*/
isSelectedHour(hour) {
return hour.index === this.time.viewHours;
}
/**
* @param {?} minute
* @return {?}
*/
isSelectedMinute(minute) {
return minute.index === this.time.minutes;
}
/**
* @param {?} second
* @return {?}
*/
isSelectedSecond(second) {
return second.index === this.time.seconds;
}
/**
* @param {?} value
* @return {?}
*/
isSelected12Hours(value) {
return value.value.toUpperCase() === this.time.selected12Hours;
}
/**
* @return {?}
*/
ngOnInit() {
this.time.changes.pipe(takeUntil(this.unsubscribe$)).subscribe((/**
* @return {?}
*/
() => {
this.changed();
this.touched();
}));
this.buildTimes();
this.selectInputRange();
setTimeout((/**
* @return {?}
*/
() => {
this.scrollToTime();
this.firstScrolled = true;
}));
}
/**
* @return {?}
*/
ngOnDestroy() {
this.unsubscribe$.next();
this.unsubscribe$.complete();
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
const { nzUse12Hours, nzDefaultOpenValue } = changes;
if (!(nzUse12Hours === null || nzUse12Hours === void 0 ? void 0 : nzUse12Hours.previousValue) && (nzUse12Hours === null || nzUse12Hours === void 0 ? void 0 : nzUse12Hours.currentValue)) {
this.build12Hours();
this.enabledColumns++;
}
if (nzDefaultOpenValue === null || nzDefaultOpenValue === void 0 ? void 0 : nzDefaultOpenValue.currentValue) {
this.time.setDefaultOpenValue(this.nzDefaultOpenValue || new Date());
}
}
/**
* @param {?} value
* @return {?}
*/
writeValue(value) {
this.time.setValue(value, this.nzUse12Hours);
this.buildTimes();
if (value && this.firstScrolled) {
this.scrollToTime(120);
}
// Mark this component to be checked manually with internal properties changing (see: https://github.com/angular/angular/issues/10816)
this.cdr.markForCheck();
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this.onChange = fn;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
this.onTouch = fn;
}
}
NzTimePickerPanelComponent.decorators = [
{ type: Component, args: [{
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'nz-time-picker-panel',
exportAs: 'nzTimePickerPanel',
template: `
<div *ngIf="nzInDatePicker" class="ant-picker-header">
<div class="ant-picker-header-view">{{ dateHelper.format(time?.value, format) || ' ' }}</div>
</div>
<div class="ant-picker-content">
<ul *ngIf="hourEnabled" #hourListElement class="ant-picker-time-panel-column" style="position: relative;">
<ng-container *ngFor="let hour of hourRange">
<li
*ngIf="!(nzHideDisabledOptions && hour.disabled)"
class="ant-picker-time-panel-cell"
(click)="selectHour(hour)"
[class.ant-picker-time-panel-cell-selected]="isSelectedHour(hour)"
[class.ant-picker-time-panel-cell-disabled]="hour.disabled"
>
<div class="ant-picker-time-panel-cell-inner">{{ hour.index | number: '2.0-0' }}</div>
</li>
</ng-container>
</ul>
<ul *ngIf="minuteEnabled" #minuteListElement class="ant-picker-time-panel-column" style="position: relative;">
<ng-container *ngFor="let minute of minuteRange">
<li
*ngIf="!(nzHideDisabledOptions && minute.disabled)"
class="ant-picker-time-panel-cell"
(click)="selectMinute(minute)"
[class.ant-picker-time-panel-cell-selected]="isSelectedMinute(minute)"
[class.ant-picker-time-panel-cell-disabled]="minute.disabled"
>
<div class="ant-picker-time-panel-cell-inner">{{ minute.index | number: '2.0-0' }}</div>
</li>
</ng-container>
</ul>
<ul *ngIf="secondEnabled" #secondListElement class="ant-picker-time-panel-column" style="position: relative;">
<ng-container *ngFor="let second of secondRange">
<li
*ngIf="!(nzHideDisabledOptions && second.disabled)"
class="ant-picker-time-panel-cell"
(click)="selectSecond(second)"
[class.ant-picker-time-panel-cell-selected]="isSelectedSecond(second)"
[class.ant-picker-time-panel-cell-disabled]="second.disabled"
>
<div class="ant-picker-time-panel-cell-inner">{{ second.index | number: '2.0-0' }}</div>
</li>
</ng-container>
</ul>
<ul *ngIf="nzUse12Hours" #use12HoursListElement class="ant-picker-time-panel-column" style="position: relative;">
<ng-container *ngFor="let range of use12HoursRange">
<li
*ngIf="!nzHideDisabledOptions"
(click)="select12Hours(range)"
class="ant-picker-time-panel-cell"
[class.ant-picker-time-panel-cell-selected]="isSelected12Hours(range)"
>
<div class="ant-picker-time-panel-cell-inner">{{ range.value }}</div>
</li>
</ng-container>
</ul>
</div>
<div *ngIf="!nzInDatePicker" class="ant-picker-footer">
<div *ngIf="nzAddOn" class="ant-picker-footer-extra">
<ng-template [ngTemplateOutlet]="nzAddOn"></ng-template>
</div>
<ul class="ant-picker-ranges">
<li class="ant-picker-now">
<a (click)="onClickNow()">
{{ 'Calendar.now' | nzI18n }}
</a>
</li>
</ul>
</div>
`,
host: {
'[class.ant-picker-time-panel]': `true`,
'[class.ant-picker-time-panel-column-0]': `enabledColumns === 0 && !nzInDatePicker`,
'[class.ant-picker-time-panel-column-1]': `enabledColumns === 1 && !nzInDatePicker`,
'[class.ant-picker-time-panel-column-2]': `enabledColumns === 2 && !nzInDatePicker`,
'[class.ant-picker-time-panel-column-3]': `enabledColumns === 3 && !nzInDatePicker`,
'[class.ant-picker-time-panel-narrow]': `enabledColumns < 3`,
'[class.ant-picker-time-panel-placement-bottomLeft]': `!nzInDatePicker`
},
providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: NzTimePickerPanelComponent, multi: true }]
}] }
];
/** @nocollapse */
NzTimePickerPanelComponent.ctorParameters = () => [
{ type: ChangeDetectorRef },
{ type: DateHelperService }
];
NzTimePickerPanelComponent.propDecorators = {
nzTimeValueAccessorDirective: [{ type: ViewChild, args: [NzTimeValueAccessorDirective, { static: false },] }],
hourListElement: [{ type: ViewChild, args: ['hourListElement', { static: false },] }],
minuteListElement: [{ type: ViewChild, args: ['minuteListElement', { static: false },] }],
secondListElement: [{ type: ViewChild, args: ['secondListElement', { static: false },] }],
use12HoursListElement: [{ type: ViewChild, args: ['use12HoursListElement', { static: false },] }],
nzInDatePicker: [{ type: Input }],
nzAddOn: [{ type: Input }],
nzHideDisabledOptions: [{ type: Input }],
nzClearText: [{ type: Input }],
nzPlaceHolder: [{ type: Input }],
nzUse12Hours: [{ type: Input }],
nzDefaultOpenValue: [{ type: Input }],
closePanel: [{ type: Output }],
nzAllowEmpty: [{ type: Input }],
nzDisabledHours: [{ type: Input }],
nzDisabledMinutes: [{ type: Input }],
nzDisabledSeconds: [{ type: Input }],
format: [{ type: Input }],
nzHourStep: [{ type: Input }],
nzMinuteStep: [{ type: Input }],
nzSecondStep: [{ type: Input }]
};
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzTimePickerPanelComponent.prototype, "nzUse12Hours", void 0);
if (false) {
/** @type {?} */
NzTimePickerPanelComponent.ngAcceptInputType_nzUse12Hours;
/**
* @type {?}
* @private
*/
NzTimePickerPanelComponent.prototype._nzHourStep;
/**
* @type {?}
* @private
*/
NzTimePickerPanelComponent.prototype._nzMinuteStep;
/**
* @type {?}
* @private
*/
NzTimePickerPanelComponent.prototype._nzSecondStep;
/**
* @type {?}
* @private
*/
NzTimePickerPanelComponent.prototype.unsubscribe$;
/**
* @type {?}
* @private
*/
NzTimePickerPanelComponent.prototype.onChange;
/**
* @type {?}
* @private
*/
NzTimePickerPanelComponent.prototype.onTouch;
/**
* @type {?}
* @private
*/
NzTimePickerPanelComponent.prototype._format;
/**
* @type {?}
* @private
*/
NzTimePickerPanelComponent.prototype._disabledHours;
/**
* @type {?}
* @private
*/
NzTimePickerPanelComponent.prototype._disabledMinutes;
/**
* @type {?}
* @private
*/
NzTimePickerPanelComponent.prototype._disabledSeconds;
/**
* @type {?}
* @private
*/
NzTimePickerPanelComponent.prototype._allowEmpty;
/** @type {?} */
NzTimePickerPanelComponent.prototype.time;
/** @type {?} */
NzTimePickerPanelComponent.prototype.hourEnabled;
/** @type {?} */
NzTimePickerPanelComponent.prototype.minuteEnabled;
/** @type {?} */
NzTimePickerPanelComponent.prototype.secondEnabled;
/** @type {?} */
NzTimePickerPanelComponent.prototype.firstScrolled;
/** @type {?} */
NzTimePickerPanelComponent.prototype.enabledColumns;
/** @type {?} */
NzTimePickerPanelComponent.prototype.hourRange;
/** @type {?} */
NzTimePickerPanelComponent.prototype.minuteRange;
/** @type {?} */
NzTimePickerPanelComponent.prototype.secondRange;
/** @type {?} */
NzTimePickerPanelComponent.prototype.use12HoursRange;
/** @type {?} */
NzTimePickerPanelComponent.prototype.nzTimeValueAccessorDirective;
/** @type {?} */
NzTimePickerPanelComponent.prototype.hourListElement;
/** @type {?} */
NzTimePickerPanelComponent.prototype.minuteListElement;
/** @type {?} */
NzTimePickerPanelComponent.prototype.secondListElement;
/** @type {?} */
NzTimePickerPanelComponent.prototype.use12HoursListElement;
/** @type {?} */
NzTimePickerPanelComponent.prototype.nzInDatePicker;
/** @type {?} */
NzTimePickerPanelComponent.prototype.nzAddOn;
/** @type {?} */
NzTimePickerPanelComponent.prototype.nzHideDisabledOptions;
/** @type {?} */
NzTimePickerPanelComponent.prototype.nzClearText;
/** @type {?} */
NzTimePickerPanelComponent.prototype.nzPlaceHolder;
/** @type {?} */
NzTimePickerPanelComponent.prototype.nzUse12Hours;
/** @type {?} */
NzTimePickerPanelComponent.prototype.nzDefaultOpenValue;
/** @type {?} */
NzTimePickerPanelComponent.prototype.closePanel;
/**
* @type {?}
* @private
*/
NzTimePickerPanelComponent.prototype.cdr;
/** @type {?} */
NzTimePickerPanelComponent.prototype.dateHelper;
}
/**
* @fileoverview added by tsickle
* Generated from: time-picker.module.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NzTimePickerModule {
}
NzTimePickerModule.decorators = [
{ type: NgModule, args: [{
declarations: [NzTimePickerComponent, NzTimePickerPanelComponent, NzTimeValueAccessorDirective],
exports: [NzTimePickerPanelComponent, NzTimePickerComponent],
imports: [CommonModule, FormsModule, NzI18nModule, OverlayModule, NzIconModule, NzOverlayModule]
},] }
];
/**
* @fileoverview added by tsickle
* Generated from: public-api.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* Generated from: ng-zorro-antd-time-picker.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { NzTimePickerComponent, NzTimePickerModule, NzTimePickerPanelComponent, NzTimeValueAccessorDirective };
//# sourceMappingURL=ng-zorro-antd-time-picker.js.map