UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

237 lines 18.6 kB
/** * @fileoverview added by tsickle * Generated from: two-datepicker/two-datepicker-end.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, Output, EventEmitter } 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 TwoDatePickerEndDirective = /** @class */ (function () { function TwoDatePickerEndDirective(twoDatePicker, renderer, el) { var _this = this; this.twoDatePicker = twoDatePicker; this.renderer = renderer; this.el = el; this.selectEnd = new EventEmitter(); this.onChange = (/** * @param {?} _ * @return {?} */ function (_) { return null; }); this.twoDateSub = this.twoDatePicker.selectDateSubject.subscribe((/** * @param {?} data * @return {?} */ function (data) { if (data.side === 'end') { 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.selectEnd.emit(data.date); } } })); this.switchSub = this.twoDatePicker.switchOpenSub.subscribe((/** * @param {?} side * @return {?} */ function (side) { if (_this.el.nativeElement.tagName === 'INPUT') { if (side === 'end') { 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 {?} */ TwoDatePickerEndDirective.prototype.toggleDropdown = /** * @param {?} event * @return {?} */ function (event) { event.stopPropagation(); this.twoDatePicker.toggle(event, 'end'); }; /** * @return {?} */ TwoDatePickerEndDirective.prototype.ngOnInit = /** * @return {?} */ function () { this.userHtml = this.el.nativeElement.innerHTML; }; /** * @param {?} fn * @return {?} */ TwoDatePickerEndDirective.prototype.registerOnChange = /** * @param {?} fn * @return {?} */ function (fn) { this.onChange = fn; }; /** * @param {?} fn * @return {?} */ TwoDatePickerEndDirective.prototype.registerOnTouched = /** * @param {?} fn * @return {?} */ function (fn) { return; }; /** * @param {?} selectedEnd * @return {?} */ TwoDatePickerEndDirective.prototype.writeValue = /** * @param {?} selectedEnd * @return {?} */ function (selectedEnd) { if (selectedEnd) { this.renderer.setProperty(this.el.nativeElement, 'value', this.twoDatePicker.dateConverter.format(selectedEnd, this.twoDatePicker.dateFormat, this.twoDatePicker.locale)); } else { this.renderer.setProperty(this.el.nativeElement, 'value', ''); } }; /** * @param {?} event * @return {?} */ TwoDatePickerEndDirective.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.selectEnd(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.rangeEnd, this.twoDatePicker.dateFormat, this.twoDatePicker.locale); } }; /** * @return {?} */ TwoDatePickerEndDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { if (this.twoDateSub) { this.twoDateSub.unsubscribe(); } if (this.switchSub) { this.switchSub.unsubscribe(); } if (this.inputSub) { this.inputSub.unsubscribe(); } }; TwoDatePickerEndDirective.decorators = [ { type: Directive, args: [{ selector: '[dTwoDatePickerEnd]', exportAs: 'twoDatePickerEnd', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ function () { return TwoDatePickerEndDirective; })), multi: true }] },] } ]; /** @nocollapse */ TwoDatePickerEndDirective.ctorParameters = function () { return [ { type: TwoDatePickerComponent }, { type: Renderer2 }, { type: ElementRef } ]; }; TwoDatePickerEndDirective.propDecorators = { selectEnd: [{ type: Output }], toggleDropdown: [{ type: HostListener, args: ['click', ['$event'],] }] }; return TwoDatePickerEndDirective; }()); export { TwoDatePickerEndDirective }; if (false) { /** @type {?} */ TwoDatePickerEndDirective.prototype.selectEnd; /** @type {?} */ TwoDatePickerEndDirective.prototype.userHtml; /** * @type {?} * @private */ TwoDatePickerEndDirective.prototype.inputSub; /** * @type {?} * @private */ TwoDatePickerEndDirective.prototype.switchSub; /** * @type {?} * @private */ TwoDatePickerEndDirective.prototype.twoDateSub; /** * @type {?} * @private */ TwoDatePickerEndDirective.prototype.onChange; /** * @type {?} * @private */ TwoDatePickerEndDirective.prototype.twoDatePicker; /** * @type {?} * @private */ TwoDatePickerEndDirective.prototype.renderer; /** * @type {?} * @private */ TwoDatePickerEndDirective.prototype.el; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdvLWRhdGVwaWNrZXItZW5kLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL2RhdGVwaWNrZXIvIiwic291cmNlcyI6WyJ0d28tZGF0ZXBpY2tlci90d28tZGF0ZXBpY2tlci1lbmQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTJCLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFJLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUM7SUFvQkUsbUNBQW9CLGFBQXFDLEVBQVUsUUFBbUIsRUFDN0UsRUFBYztRQUR2QixpQkErQkM7UUEvQm1CLGtCQUFhLEdBQWIsYUFBYSxDQUF3QjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDN0UsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQVZiLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBT3RDLGFBQVE7Ozs7UUFBRyxVQUFDLENBQU0sSUFBSyxPQUFBLElBQUksRUFBSixDQUFJLEVBQUM7UUFJbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFNBQVM7Ozs7UUFBQyxVQUFBLElBQUk7WUFDbkUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtnQkFDdkIsSUFBSSxLQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEtBQUssT0FBTyxFQUFFO29CQUM3QyxLQUFJLENBQUMsVUFB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QUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixTQUFTLEVBQUUsQ0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVTs7OzRCQUFDLGNBQU0sT0FBQSx5QkFBeUIsRUFBekIsQ0FBeUIsRUFBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQztpQkFDSDs7OztnQkFaUSxzQkFBc0I7Z0JBRm9ELFNBQVM7Z0JBQWpDLFVBQVU7Ozs0QkFpQmxFLE1BQU07aUNBMENOLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0lBd0RuQyxnQ0FBQztDQUFBLEFBN0dELElBNkdDO1NBcEdZLHlCQUF5Qjs7O0lBRXBDLDhDQUE4Qzs7SUFFOUMsNkNBQVM7Ozs7O0lBQ1QsNkNBQStCOzs7OztJQUMvQiw4Q0FBZ0M7Ozs7O0lBQ2hDLCtDQUFpQzs7Ozs7SUFFakMsNkNBQW9DOzs7OztJQUV4QixrREFBNkM7Ozs7O0lBQUUsNkNBQTJCOzs7OztJQUNyRix1Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCwgT25EZXN0cm95LCBIb3N0LCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIFJlbmRlcmVyMiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUd29EYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi90d28tZGF0ZXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tkVHdvRGF0ZVBpY2tlckVuZF0nLFxyXG4gIGV4cG9ydEFzOiAndHdvRGF0ZVBpY2tlckVuZCcsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUd29EYXRlUGlja2VyRW5kRGlyZWN0aXZlKSxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFR3b0RhdGVQaWNrZXJFbmREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0RW5kID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIHVzZXJIdG1sO1xyXG4gIHByaXZhdGUgaW5wdXRTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHN3aXRjaFN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgdHdvRGF0ZVN1YjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKF86IGFueSkgPT4gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0d29EYXRlUGlja2VyOiBUd29EYXRlUGlja2VyQ29tcG9uZW50LCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMudHdvRGF0ZVN1YiA9IHRoaXMudHdvRGF0ZVBpY2tlci5zZWxlY3REYXRlU3ViamVjdC5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIGlmIChkYXRhLnNpZGUgPT09ICdlbmQnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZWwubmF0aXZlRWxlbWVudC50YWdOYW1lID09PSAnSU5QVVQnKSB7XHJcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUoZGF0YS5kYXRlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IGRhdGEuZGF0ZSA/IHRoaXMudHdvRGF0ZVBpY2tlci5mb3JtYXREYXRlKGRhdGEuZGF0ZSkgOiB0aGlzLnVzZXJIdG1sO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWRhdGEub25seVdyaXRlKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEVuZC5lbWl0KGRhdGEuZGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3dpdGNoU3ViID0gdGhpcy50d29EYXRlUGlja2VyLnN3aXRjaE9wZW5TdWIuc3Vic2NyaWJlKHNpZGUgPT4ge1xyXG4gICAgICBpZiAodGhpcy5lbC5uYXRpdmVFbGVtZW50LnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcclxuICAgICAgICBpZiAoc2lkZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnZGV2dWktaW5wdXQtZm9jdXMnKSkge1xyXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZGV2dWktaW5wdXQtZm9jdXMnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2RldnVpLWlucHV0LWZvY3VzJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuaW5wdXRTdWIgPSBmcm9tRXZlbnQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnaW5wdXQnKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKVxyXG4gICAgICApLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgdGhpcy50cmFuc1VzZXJJbnB1dFRvRGF0ZVBpY2tlcihldmVudCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyB0b2dnbGVEcm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnR3b0RhdGVQaWNrZXIudG9nZ2xlKGV2ZW50LCAnZW5kJyk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudXNlckh0bWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHNlbGVjdGVkRW5kKTogdm9pZCB7XHJcbiAgICBpZiAoc2VsZWN0ZWRFbmQpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShcclxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgJ3ZhbHVlJyxcclxuICAgICAgICB0aGlzLnR3b0RhdGVQaWNrZXIuZGF0ZUNvbnZlcnRlci5mb3JtYXQoc2VsZWN0ZWRFbmQsIHRoaXMudHdvRGF0ZVBpY2tlci5kYXRlRm9ybWF0LCB0aGlzLnR3b0RhdGVQaWNrZXIubG9jYWxlKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsICcnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRyYW5zVXNlcklucHV0VG9EYXRlUGlja2VyKGV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMudHdvRGF0ZVBpY2tlci5zaG93VGltZSkge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgICAgY29uc3QgdmFsdWVEYXRlID0gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICBjb25zdCB2YWx1ZUZvcm1hdCA9IHRoaXMudHdvRGF0ZVBpY2tlci5kYXRlQ29udmVydGVyLmZvcm1hdCh2YWx1ZURhdGUsIHRoaXMudHdvRGF0ZVBpY2tlci5kYXRlRm9ybWF0LCB0aGlzLnR3b0RhdGVQaWNrZXIubG9jYWxlKTtcclxuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlID09PSB2YWx1ZUZvcm1hdCkge1xyXG4gICAgICAgIHRoaXMudHdvRGF0ZVBpY2tlci5zZWxlY3RFbmQodmFsdWVEYXRlKTtcclxuICAgICAgICBbdGhpcy50d29EYXRlUGlja2VyLnJhbmdlU3RhcnQsIHRoaXMudHdvRGF0ZVBpY2tlci5yYW5nZUVuZF0gPSB0aGlzLnR3b0RhdGVQaWNrZXIuc2VsZWN0ZWRSYW5nZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlID1cclxuICAgICAgIHRoaXMudHdvRGF0ZVBpY2tlci5kYXRlQ29udmVydGVyLmZvcm1hdCh0aGlzLnR3b0RhdGVQaWNrZXIucmFuZ2VFbmQsIHRoaXMudHdvRGF0ZVBpY2tlci5kYXRlRm9ybWF0LCB0aGlzLnR3b0RhdGVQaWNrZXIubG9jYWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMudHdvRGF0ZVN1Yikge1xyXG4gICAgICB0aGlzLnR3b0RhdGVTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnN3aXRjaFN1Yikge1xyXG4gICAgICB0aGlzLnN3aXRjaFN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaW5wdXRTdWIpIHtcclxuICAgICAgdGhpcy5pbnB1dFN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=