@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
237 lines • 18.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: two-datepicker/two-datepicker-start.directive.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Directive, HostListener, ElementRef, forwardRef, Renderer2, EventEmitter, Output } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { TwoDatePickerComponent } from './two-datepicker.component';
import { fromEvent } from 'rxjs';
import { debounceTime } from 'rxjs/operators';
var TwoDatePickerStartDirective = /** @class */ (function () {
function TwoDatePickerStartDirective(twoDatePicker, renderer, el) {
var _this = this;
this.twoDatePicker = twoDatePicker;
this.renderer = renderer;
this.el = el;
this.selectStart = new EventEmitter();
this.onChange = (/**
* @param {?} _
* @return {?}
*/
function (_) { return null; });
this.twoDateSub = this.twoDatePicker.selectDateSubject.subscribe((/**
* @param {?} data
* @return {?}
*/
function (data) {
if (data.side === 'start') {
if (_this.el.nativeElement.tagName === 'INPUT') {
_this.writeValue(data.date);
}
else {
_this.el.nativeElement.innerHTML = data.date ? _this.twoDatePicker.formatDate(data.date) : _this.userHtml;
}
if (!data.onlyWrite) {
_this.selectStart.emit(data.date);
}
}
}));
this.switchSub = this.twoDatePicker.switchOpenSub.subscribe((/**
* @param {?} side
* @return {?}
*/
function (side) {
if (_this.el.nativeElement.tagName === 'INPUT') {
if (side === 'start') {
if (!_this.el.nativeElement.classList.contains('devui-input-focus')) {
_this.el.nativeElement.classList.add('devui-input-focus');
}
}
else {
_this.el.nativeElement.classList.remove('devui-input-focus');
}
}
}));
this.inputSub = fromEvent(this.el.nativeElement, 'input')
.pipe(debounceTime(300)).subscribe((/**
* @param {?} event
* @return {?}
*/
function (event) {
_this.transUserInputToDatePicker(event);
}));
}
/**
* @param {?} event
* @return {?}
*/
TwoDatePickerStartDirective.prototype.toggleStartPicker = /**
* @param {?} event
* @return {?}
*/
function (event) {
event.stopPropagation();
this.twoDatePicker.toggle(event, 'start');
};
/**
* @return {?}
*/
TwoDatePickerStartDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.userHtml = this.el.nativeElement.innerHTML;
};
/**
* @param {?} fn
* @return {?}
*/
TwoDatePickerStartDirective.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
TwoDatePickerStartDirective.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
return;
};
/**
* @param {?} selectedStart
* @return {?}
*/
TwoDatePickerStartDirective.prototype.writeValue = /**
* @param {?} selectedStart
* @return {?}
*/
function (selectedStart) {
if (selectedStart) {
this.renderer.setProperty(this.el.nativeElement, 'value', this.twoDatePicker.dateConverter.format(selectedStart, this.twoDatePicker.dateFormat, this.twoDatePicker.locale));
}
else {
this.renderer.setProperty(this.el.nativeElement, 'value', '');
}
};
/**
* @param {?} event
* @return {?}
*/
TwoDatePickerStartDirective.prototype.transUserInputToDatePicker = /**
* @param {?} event
* @return {?}
*/
function (event) {
var _a;
if (!this.twoDatePicker.showTime) {
/** @type {?} */
var value = event.target.value;
/** @type {?} */
var valueDate = new Date(value);
/** @type {?} */
var valueFormat = this.twoDatePicker.dateConverter.format(valueDate, this.twoDatePicker.dateFormat, this.twoDatePicker.locale);
if (value && value === valueFormat) {
this.twoDatePicker.selectStart(valueDate);
_a = tslib_1.__read(this.twoDatePicker.selectedRange, 2), this.twoDatePicker.rangeStart = _a[0], this.twoDatePicker.rangeEnd = _a[1];
}
}
else {
this.el.nativeElement.value =
this.twoDatePicker.dateConverter.format(this.twoDatePicker.rangeStart, this.twoDatePicker.dateFormat, this.twoDatePicker.locale);
}
};
/**
* @return {?}
*/
TwoDatePickerStartDirective.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.twoDateSub) {
this.twoDateSub.unsubscribe();
}
if (this.switchSub) {
this.switchSub.unsubscribe();
}
if (this.inputSub) {
this.inputSub.unsubscribe();
}
};
TwoDatePickerStartDirective.decorators = [
{ type: Directive, args: [{
selector: '[dTwoDatePickerStart]',
exportAs: 'twoDatePickerStart',
providers: [{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
function () { return TwoDatePickerStartDirective; })),
multi: true
}]
},] }
];
/** @nocollapse */
TwoDatePickerStartDirective.ctorParameters = function () { return [
{ type: TwoDatePickerComponent },
{ type: Renderer2 },
{ type: ElementRef }
]; };
TwoDatePickerStartDirective.propDecorators = {
selectStart: [{ type: Output }],
toggleStartPicker: [{ type: HostListener, args: ['click', ['$event'],] }]
};
return TwoDatePickerStartDirective;
}());
export { TwoDatePickerStartDirective };
if (false) {
/** @type {?} */
TwoDatePickerStartDirective.prototype.selectStart;
/** @type {?} */
TwoDatePickerStartDirective.prototype.userHtml;
/**
* @type {?}
* @private
*/
TwoDatePickerStartDirective.prototype.inputSub;
/**
* @type {?}
* @private
*/
TwoDatePickerStartDirective.prototype.switchSub;
/**
* @type {?}
* @private
*/
TwoDatePickerStartDirective.prototype.twoDateSub;
/**
* @type {?}
* @private
*/
TwoDatePickerStartDirective.prototype.onChange;
/**
* @type {?}
* @private
*/
TwoDatePickerStartDirective.prototype.twoDatePicker;
/**
* @type {?}
* @private
*/
TwoDatePickerStartDirective.prototype.renderer;
/**
* @type {?}
* @private
*/
TwoDatePickerStartDirective.prototype.el;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdvLWRhdGVwaWNrZXItc3RhcnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZGV2dWkvZGF0ZXBpY2tlci8iLCJzb3VyY2VzIjpbInR3by1kYXRlcGlja2VyL3R3by1kYXRlcGlja2VyLXN0YXJ0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUEyQixZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDO0lBb0JFLHFDQUFvQixhQUFxQyxFQUFVLFFBQW1CLEVBQzdFLEVBQWM7UUFEdkIsaUJBK0JDO1FBL0JtQixrQkFBYSxHQUFiLGFBQWEsQ0FBd0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQzdFLE9BQUUsR0FBRixFQUFFLENBQVk7UUFWYixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFPeEMsYUFBUTs7OztRQUFHLFVBQUMsQ0FBTSxJQUFLLE9BQUEsSUFBSSxFQUFKLENBQUksRUFBQztRQUlsQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsU0FBUzs7OztRQUFDLFVBQUEsSUFBSTtZQUNuRSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO2dCQUN6QixJQUFJLEtBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUU7b0JBQzdDLEtBQUksQ0FB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Q1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsU0FBUyxFQUFFLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVU7Ozs0QkFBQyxjQUFNLE9BQUEsMkJBQTJCLEVBQTNCLENBQTJCLEVBQUM7NEJBQzFELEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7aUJBQ0g7Ozs7Z0JBWlEsc0JBQXNCO2dCQUZvRCxTQUFTO2dCQUFqQyxVQUFVOzs7OEJBaUJsRSxNQUFNO29DQTBDTixZQUFZLFNBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOztJQTREbkMsa0NBQUM7Q0FBQSxBQWpIRCxJQWlIQztTQXhHWSwyQkFBMkI7OztJQUV0QyxrREFBZ0Q7O0lBRWhELCtDQUFTOzs7OztJQUNULCtDQUErQjs7Ozs7SUFDL0IsZ0RBQWdDOzs7OztJQUNoQyxpREFBaUM7Ozs7O0lBRWpDLCtDQUFvQzs7Ozs7SUFFeEIsb0RBQTZDOzs7OztJQUFFLCtDQUEyQjs7Ozs7SUFDckYseUNBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkluaXQsIE9uRGVzdHJveSwgSG9zdCwgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBSZW5kZXJlcjIsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHdvRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vdHdvLWRhdGVwaWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZFR3b0RhdGVQaWNrZXJTdGFydF0nLFxyXG4gIGV4cG9ydEFzOiAndHdvRGF0ZVBpY2tlclN0YXJ0JyxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR3b0RhdGVQaWNrZXJTdGFydERpcmVjdGl2ZSksXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG4gIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUd29EYXRlUGlja2VyU3RhcnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0U3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgdXNlckh0bWw7XHJcbiAgcHJpdmF0ZSBpbnB1dFN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgc3dpdGNoU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSB0d29EYXRlU3ViOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2UgPSAoXzogYW55KSA9PiBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHR3b0RhdGVQaWNrZXI6IFR3b0RhdGVQaWNrZXJDb21wb25lbnQsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xyXG4gICAgdGhpcy50d29EYXRlU3ViID0gdGhpcy50d29EYXRlUGlja2VyLnNlbGVjdERhdGVTdWJqZWN0LnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgaWYgKGRhdGEuc2lkZSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICAgIGlmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xyXG4gICAgICAgICAgdGhpcy53cml0ZVZhbHVlKGRhdGEuZGF0ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSBkYXRhLmRhdGUgPyB0aGlzLnR3b0RhdGVQaWNrZXIuZm9ybWF0RGF0ZShkYXRhLmRhdGUpIDogdGhpcy51c2VySHRtbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFkYXRhLm9ubHlXcml0ZSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RTdGFydC5lbWl0KGRhdGEuZGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3dpdGNoU3ViID0gdGhpcy50d29EYXRlUGlja2VyLnN3aXRjaE9wZW5TdWIuc3Vic2NyaWJlKHNpZGUgPT4ge1xyXG4gICAgICBpZiAodGhpcy5lbC5uYXRpdmVFbGVtZW50LnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcclxuICAgICAgICBpZiAoc2lkZSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkZXZ1aS1pbnB1dC1mb2N1cycpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdkZXZ1aS1pbnB1dC1mb2N1cycpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnZGV2dWktaW5wdXQtZm9jdXMnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5pbnB1dFN1YiA9IGZyb21FdmVudCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdpbnB1dCcpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApXHJcbiAgICAgICkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICB0aGlzLnRyYW5zVXNlcklucHV0VG9EYXRlUGlja2VyKGV2ZW50KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgcHVibGljIHRvZ2dsZVN0YXJ0UGlja2VyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMudHdvRGF0ZVBpY2tlci50b2dnbGUoZXZlbnQsICdzdGFydCcpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnVzZXJIdG1sID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmlubmVySFRNTDtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShzZWxlY3RlZFN0YXJ0KTogdm9pZCB7XHJcbiAgICBpZiAoc2VsZWN0ZWRTdGFydCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KFxyXG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudCxcclxuICAgICAgICAndmFsdWUnLFxyXG4gICAgICAgIHRoaXMudHdvRGF0ZVBpY2tlci5kYXRlQ29udmVydGVyLmZvcm1hdChzZWxlY3RlZFN0YXJ0LCB0aGlzLnR3b0RhdGVQaWNrZXIuZGF0ZUZvcm1hdCwgdGhpcy50d29EYXRlUGlja2VyLmxvY2FsZSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCAnJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmFuc1VzZXJJbnB1dFRvRGF0ZVBpY2tlcihldmVudCkge1xyXG4gICAgaWYgKCF0aGlzLnR3b0RhdGVQaWNrZXIuc2hvd1RpbWUpIHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgIGNvbnN0IHZhbHVlRGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgY29uc3QgdmFsdWVGb3JtYXQgPSB0aGlzLnR3b0RhdGVQaWNrZXIuZGF0ZUNvbnZlcnRlci5mb3JtYXQodmFsdWVEYXRlLCB0aGlzLnR3b0RhdGVQaWNrZXIuZGF0ZUZvcm1hdCwgdGhpcy50d29EYXRlUGlja2VyLmxvY2FsZSk7XHJcbiAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSA9PT0gdmFsdWVGb3JtYXQpIHtcclxuICAgICAgICB0aGlzLnR3b0RhdGVQaWNrZXIuc2VsZWN0U3RhcnQodmFsdWVEYXRlKTtcclxuICAgICAgICBbdGhpcy50d29EYXRlUGlja2VyLnJhbmdlU3RhcnQsIHRoaXMudHdvRGF0ZVBpY2tlci5yYW5nZUVuZF0gPSB0aGlzLnR3b0RhdGVQaWNrZXIuc2VsZWN0ZWRSYW5nZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlID1cclxuICAgICAgIHRoaXMudHdvRGF0ZVBpY2tlci5kYXRlQ29udmVydGVyLmZvcm1hdChcclxuICAgICAgICAgdGhpcy50d29EYXRlUGlja2VyLnJhbmdlU3RhcnQsXHJcbiAgICAgICAgIHRoaXMudHdvRGF0ZVBpY2tlci5kYXRlRm9ybWF0LFxyXG4gICAgICAgICB0aGlzLnR3b0RhdGVQaWNrZXIubG9jYWxlXHJcbiAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy50d29EYXRlU3ViKSB7XHJcbiAgICAgIHRoaXMudHdvRGF0ZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc3dpdGNoU3ViKSB7XHJcbiAgICAgIHRoaXMuc3dpdGNoU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pbnB1dFN1Yikge1xyXG4gICAgICB0aGlzLmlucHV0U3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==