@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
211 lines • 17.6 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 { 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';
export class TwoDatePickerStartDirective {
/**
* @param {?} twoDatePicker
* @param {?} renderer
* @param {?} el
*/
constructor(twoDatePicker, renderer, el) {
this.twoDatePicker = twoDatePicker;
this.renderer = renderer;
this.el = el;
this.selectStart = new EventEmitter();
this.onChange = (/**
* @param {?} _
* @return {?}
*/
(_) => null);
this.twoDateSub = this.twoDatePicker.selectDateSubject.subscribe((/**
* @param {?} data
* @return {?}
*/
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 {?}
*/
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 {?}
*/
event => {
this.transUserInputToDatePicker(event);
}));
}
/**
* @param {?} event
* @return {?}
*/
toggleStartPicker(event) {
event.stopPropagation();
this.twoDatePicker.toggle(event, 'start');
}
/**
* @return {?}
*/
ngOnInit() {
this.userHtml = this.el.nativeElement.innerHTML;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this.onChange = fn;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
return;
}
/**
* @param {?} selectedStart
* @return {?}
*/
writeValue(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 {?}
*/
transUserInputToDatePicker(event) {
if (!this.twoDatePicker.showTime) {
/** @type {?} */
const value = event.target.value;
/** @type {?} */
const valueDate = new Date(value);
/** @type {?} */
const valueFormat = this.twoDatePicker.dateConverter.format(valueDate, this.twoDatePicker.dateFormat, this.twoDatePicker.locale);
if (value && value === valueFormat) {
this.twoDatePicker.selectStart(valueDate);
[this.twoDatePicker.rangeStart, this.twoDatePicker.rangeEnd] = this.twoDatePicker.selectedRange;
}
}
else {
this.el.nativeElement.value =
this.twoDatePicker.dateConverter.format(this.twoDatePicker.rangeStart, this.twoDatePicker.dateFormat, this.twoDatePicker.locale);
}
}
/**
* @return {?}
*/
ngOnDestroy() {
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 {?}
*/
() => TwoDatePickerStartDirective)),
multi: true
}]
},] }
];
/** @nocollapse */
TwoDatePickerStartDirective.ctorParameters = () => [
{ type: TwoDatePickerComponent },
{ type: Renderer2 },
{ type: ElementRef }
];
TwoDatePickerStartDirective.propDecorators = {
selectStart: [{ type: Output }],
toggleStartPicker: [{ type: HostListener, args: ['click', ['$event'],] }]
};
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdvLWRhdGVwaWNrZXItc3RhcnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZGV2dWkvZGF0ZXBpY2tlci8iLCJzb3VyY2VzIjpbInR3by1kYXRlcGlja2VyL3R3by1kYXRlcGlja2VyLXN0YXJ0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTJCLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFJLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFXOUMsTUFBTSxPQUFPLDJCQUEyQjs7Ozs7O0lBV3RDLFlBQW9CLGFBQXFDLEVBQVUsUUFBbUIsRUFDN0UsRUFBYztRQURILGtCQUFhLEdBQWIsYUFBYSxDQUF3QjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDN0UsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQVZiLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQU94QyxhQUFROzs7O1FBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBQztRQUlsQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsU0FBUzs7OztRQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3RFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7Z0JBQ3pCLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBRTtvQkFDN0MsSUFB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QUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsU0FBUyxFQUFFLENBQUM7d0JBQ1YsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVU7Ozt3QkFBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsRUFBQzt3QkFDMUQsS0FBSyxFQUFFLElBQUk7cUJBQ1osQ0FBQzthQUNIOzs7O1lBWlEsc0JBQXNCO1lBRm9ELFNBQVM7WUFBakMsVUFBVTs7OzBCQWlCbEUsTUFBTTtnQ0EwQ04sWUFBWSxTQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7OztJQTFDakMsa0RBQWdEOztJQUVoRCwrQ0FBUzs7Ozs7SUFDVCwrQ0FBK0I7Ozs7O0lBQy9CLGdEQUFnQzs7Ozs7SUFDaEMsaURBQWlDOzs7OztJQUVqQywrQ0FBb0M7Ozs7O0lBRXhCLG9EQUE2Qzs7Ozs7SUFBRSwrQ0FBMkI7Ozs7O0lBQ3JGLHlDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT25Jbml0LCBPbkRlc3Ryb3ksIEhvc3QsIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgUmVuZGVyZXIyLCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFR3b0RhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3R3by1kYXRlcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2RUd29EYXRlUGlja2VyU3RhcnRdJyxcclxuICBleHBvcnRBczogJ3R3b0RhdGVQaWNrZXJTdGFydCcsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUd29EYXRlUGlja2VyU3RhcnREaXJlY3RpdmUpLFxyXG4gICAgbXVsdGk6IHRydWVcclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHdvRGF0ZVBpY2tlclN0YXJ0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgQE91dHB1dCgpIHNlbGVjdFN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIHVzZXJIdG1sO1xyXG4gIHByaXZhdGUgaW5wdXRTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHN3aXRjaFN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgdHdvRGF0ZVN1YjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKF86IGFueSkgPT4gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0d29EYXRlUGlja2VyOiBUd29EYXRlUGlja2VyQ29tcG9uZW50LCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMudHdvRGF0ZVN1YiA9IHRoaXMudHdvRGF0ZVBpY2tlci5zZWxlY3REYXRlU3ViamVjdC5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIGlmIChkYXRhLnNpZGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgICBpZiAodGhpcy5lbC5uYXRpdmVFbGVtZW50LnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcclxuICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShkYXRhLmRhdGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gZGF0YS5kYXRlID8gdGhpcy50d29EYXRlUGlja2VyLmZvcm1hdERhdGUoZGF0YS5kYXRlKSA6IHRoaXMudXNlckh0bWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghZGF0YS5vbmx5V3JpdGUpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0U3RhcnQuZW1pdChkYXRhLmRhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN3aXRjaFN1YiA9IHRoaXMudHdvRGF0ZVBpY2tlci5zd2l0Y2hPcGVuU3ViLnN1YnNjcmliZShzaWRlID0+IHtcclxuICAgICAgaWYgKHRoaXMuZWwubmF0aXZlRWxlbWVudC50YWdOYW1lID09PSAnSU5QVVQnKSB7XHJcbiAgICAgICAgaWYgKHNpZGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnZGV2dWktaW5wdXQtZm9jdXMnKSkge1xyXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZGV2dWktaW5wdXQtZm9jdXMnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2RldnVpLWlucHV0LWZvY3VzJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuaW5wdXRTdWIgPSBmcm9tRXZlbnQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnaW5wdXQnKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKVxyXG4gICAgICApLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgdGhpcy50cmFuc1VzZXJJbnB1dFRvRGF0ZVBpY2tlcihldmVudCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyB0b2dnbGVTdGFydFBpY2tlcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnR3b0RhdGVQaWNrZXIudG9nZ2xlKGV2ZW50LCAnc3RhcnQnKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy51c2VySHRtbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5pbm5lckhUTUw7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUoc2VsZWN0ZWRTdGFydCk6IHZvaWQge1xyXG4gICAgaWYgKHNlbGVjdGVkU3RhcnQpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShcclxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgJ3ZhbHVlJyxcclxuICAgICAgICB0aGlzLnR3b0RhdGVQaWNrZXIuZGF0ZUNvbnZlcnRlci5mb3JtYXQoc2VsZWN0ZWRTdGFydCwgdGhpcy50d29EYXRlUGlja2VyLmRhdGVGb3JtYXQsIHRoaXMudHdvRGF0ZVBpY2tlci5sb2NhbGUpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgJycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJhbnNVc2VySW5wdXRUb0RhdGVQaWNrZXIoZXZlbnQpIHtcclxuICAgIGlmICghdGhpcy50d29EYXRlUGlja2VyLnNob3dUaW1lKSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICBjb25zdCB2YWx1ZURhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgIGNvbnN0IHZhbHVlRm9ybWF0ID0gdGhpcy50d29EYXRlUGlja2VyLmRhdGVDb252ZXJ0ZXIuZm9ybWF0KHZhbHVlRGF0ZSwgdGhpcy50d29EYXRlUGlja2VyLmRhdGVGb3JtYXQsIHRoaXMudHdvRGF0ZVBpY2tlci5sb2NhbGUpO1xyXG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgPT09IHZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgdGhpcy50d29EYXRlUGlja2VyLnNlbGVjdFN0YXJ0KHZhbHVlRGF0ZSk7XHJcbiAgICAgICAgW3RoaXMudHdvRGF0ZVBpY2tlci5yYW5nZVN0YXJ0LCB0aGlzLnR3b0RhdGVQaWNrZXIucmFuZ2VFbmRdID0gdGhpcy50d29EYXRlUGlja2VyLnNlbGVjdGVkUmFuZ2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZSA9XHJcbiAgICAgICB0aGlzLnR3b0RhdGVQaWNrZXIuZGF0ZUNvbnZlcnRlci5mb3JtYXQoXHJcbiAgICAgICAgIHRoaXMudHdvRGF0ZVBpY2tlci5yYW5nZVN0YXJ0LFxyXG4gICAgICAgICB0aGlzLnR3b0RhdGVQaWNrZXIuZGF0ZUZvcm1hdCxcclxuICAgICAgICAgdGhpcy50d29EYXRlUGlja2VyLmxvY2FsZVxyXG4gICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMudHdvRGF0ZVN1Yikge1xyXG4gICAgICB0aGlzLnR3b0RhdGVTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnN3aXRjaFN1Yikge1xyXG4gICAgICB0aGlzLnN3aXRjaFN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaW5wdXRTdWIpIHtcclxuICAgICAgdGhpcy5pbnB1dFN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=