@true-directive/grid
Version:
Angular Data Grid from Yopsilon.
123 lines • 14.9 kB
JavaScript
import * as tslib_1 from "tslib";
/**
* Copyright (c) 2018-2019 Aleksey Melnikov, True Directive Company.
* @link https://truedirective.com/
* @license MIT
*/
import { Component, Input, Renderer2, ElementRef, ViewChild, forwardRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { CalendarComponent } from './calendar.component';
import { DropdownBaseComponent } from './dropdown-base.component';
import { MaskDateDirective } from '../mask/mask-date.directive';
import { InternationalizationService } from '../internationalization/internationalization.service';
import { Mask } from '@true-directive/base';
import { Keys } from '@true-directive/base';
/**
* Datepicker component
*/
var DatepickerComponent = /** @class */ (function (_super) {
tslib_1.__extends(DatepickerComponent, _super);
function DatepickerComponent(intl, _elementRef, _renderer) {
var _this = _super.call(this, _elementRef, _renderer) || this;
_this.intl = intl;
_this._elementRef = _elementRef;
_this._renderer = _renderer;
_this._pattern = '';
_this.showError = true;
_this.inputClass = '';
return _this;
}
DatepickerComponent_1 = DatepickerComponent;
Object.defineProperty(DatepickerComponent.prototype, "pattern", {
get: function () {
return this._pattern;
},
set: function (s) {
this._pattern = s;
this.checkPattern();
},
enumerable: true,
configurable: true
});
DatepickerComponent.prototype.checkPattern = function () {
var hasDateComponents = false;
var mask = Mask.maskWithPattern(this.intl, this._pattern);
mask.sections.forEach(function (section) {
if (section.sectionType.datePart === 'd' ||
section.sectionType.datePart === 'm' ||
section.sectionType.datePart === 'y' ||
section.sectionType.datePart === 'yy' ||
section.sectionType.datePart === 'yyyy') {
hasDateComponents = true;
}
});
this.usePopup = hasDateComponents;
};
DatepickerComponent.prototype.getIcon = function () {
if (!this.usePopup) {
return '';
}
return 'true-icon-calendar-empty';
};
DatepickerComponent.prototype.dateClick = function (e) {
this.popup.closePopup();
};
DatepickerComponent.prototype.escape = function (e) {
this.popup.closePopup();
};
// Overriding this method to send focus in the calendar
DatepickerComponent.prototype.focusPopup = function () {
this.calendar.setFocus();
};
DatepickerComponent.prototype.acceptKey = function (e) {
this.maskDateDirective.keyDown(Keys.generateEvent(this.input.nativeElement, -1, Keys.keyChar(e), e.shiftKey, e.ctrlKey));
};
var DatepickerComponent_1;
tslib_1.__decorate([
Input('pattern'),
tslib_1.__metadata("design:type", String),
tslib_1.__metadata("design:paramtypes", [String])
], DatepickerComponent.prototype, "pattern", null);
tslib_1.__decorate([
Input('error'),
tslib_1.__metadata("design:type", String)
], DatepickerComponent.prototype, "error", void 0);
tslib_1.__decorate([
Input('showError'),
tslib_1.__metadata("design:type", Boolean)
], DatepickerComponent.prototype, "showError", void 0);
tslib_1.__decorate([
Input('inputClass'),
tslib_1.__metadata("design:type", String)
], DatepickerComponent.prototype, "inputClass", void 0);
tslib_1.__decorate([
ViewChild('calendar', { static: false }),
tslib_1.__metadata("design:type", CalendarComponent)
], DatepickerComponent.prototype, "calendar", void 0);
tslib_1.__decorate([
ViewChild('input', { static: true }),
tslib_1.__metadata("design:type", Object)
], DatepickerComponent.prototype, "input", void 0);
tslib_1.__decorate([
ViewChild('input', { static: true, read: MaskDateDirective }),
tslib_1.__metadata("design:type", MaskDateDirective)
], DatepickerComponent.prototype, "maskDateDirective", void 0);
DatepickerComponent = DatepickerComponent_1 = tslib_1.__decorate([
Component({
selector: 'true-datepicker',
template: "<true-input-wrapper\r\n (btnClick)=\"btnClick($event)\"\r\n class=\"true-datepicker__input\"\r\n [class.true-input_popup-visible]=\"popupVisible\"\r\n [disabled]=\"disabled\"\r\n [error]=\"error\"\r\n [showError]=\"showError\"\r\n [icon]=\"getIcon()\"><input #input\r\n [ngClass]=\"inputClass\"\r\n [true-mask-date]=\"pattern\"\r\n [readonly]=\"disableTextEditor\"\r\n [attr.disabled]=\"disabled\"\r\n [(ngModel)]=\"value\"\r\n (blur)=\"inputBlur($event)\"\r\n (focus)=\"inputFocus($event)\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (keydown)=\"inputKeyDown($event)\" />\r\n</true-input-wrapper><true-popup #popup (close)=\"popupClose($event)\">\r\n <true-calendar #calendar\r\n *ngIf=\"popupVisible\"\r\n [(ngModel)]=\"value\"\r\n (escape)=\"escape($event)\"\r\n (dateClick)=\"dateClick($event)\">\r\n </true-calendar>\r\n</true-popup>\r\n",
providers: [{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(function () { return DatepickerComponent_1; }),
multi: true
}],
styles: ["\n :host {\n padding: 0;\n }\n .true-datepicker__input {\n width: 100%;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n input {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n }\n "]
}),
tslib_1.__metadata("design:paramtypes", [InternationalizationService,
ElementRef,
Renderer2])
], DatepickerComponent);
return DatepickerComponent;
}(DropdownBaseComponent));
export { DatepickerComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdHJ1ZS1kaXJlY3RpdmUvZ3JpZC8iLCJzb3VyY2VzIjpbInNyYy9jb250cm9scy9kYXRlcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7RUFJRTtBQUNGLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQyxTQUFTLEVBQUUsVUFBVSxFQUUxRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUVuRyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTVDOztHQUVHO0FBMkJIO0lBQXlDLCtDQUFxQjtJQTRFNUQsNkJBQ1ksSUFBaUMsRUFDakMsV0FBdUIsRUFDdkIsU0FBb0I7UUFIaEMsWUFJSSxrQkFBTSxXQUFXLEVBQUUsU0FBUyxDQUFDLFNBQ2hDO1FBSlcsVUFBSSxHQUFKLElBQUksQ0FBNkI7UUFDakMsaUJBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsZUFBUyxHQUFULFNBQVMsQ0FBVztRQTdFaEMsY0FBUSxHQUFHLEVBQUUsQ0FBQztRQWdCZCxlQUFTLEdBQVksSUFBSSxDQUFDO1FBRzFCLGdCQUFVLEdBQVcsRUFBRSxDQUFDOztJQTREeEIsQ0FBQzs0QkFqRlUsbUJBQW1CO0lBSzlCLHNCQUFJLHdDQUFP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Q2xELEtBQUssRUFBRSxJQUFJO2lCQUFDLENBQUM7cUJBcEJSLDRQQWdCUjtTQUtBLENBQUM7aURBOEVnQiwyQkFBMkI7WUFDcEIsVUFBVTtZQUNaLFNBQVM7T0EvRXJCLG1CQUFtQixDQWtGL0I7SUFBRCwwQkFBQztDQUFBLEFBbEZELENBQXlDLHFCQUFxQixHQWtGN0Q7U0FsRlksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDE5IEFsZWtzZXkgTWVsbmlrb3YsIFRydWUgRGlyZWN0aXZlIENvbXBhbnkuXHJcbiAqIEBsaW5rIGh0dHBzOi8vdHJ1ZWRpcmVjdGl2ZS5jb20vXHJcbiAqIEBsaWNlbnNlIE1JVFxyXG4qL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEhvc3RCaW5kaW5nLCBFdmVudEVtaXR0ZXIsIFJlbmRlcmVyMiwgRWxlbWVudFJlZixcclxuICAgICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBQb3B1cENvbXBvbmVudCB9IGZyb20gJy4vcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyb3Bkb3duQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24tYmFzZS5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHsgTWFza0RhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi9tYXNrL21hc2stZGF0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJbnRlcm5hdGlvbmFsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcm5hdGlvbmFsaXphdGlvbi9pbnRlcm5hdGlvbmFsaXphdGlvbi5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IE1hc2sgfSBmcm9tICdAdHJ1ZS1kaXJlY3RpdmUvYmFzZSc7XHJcbmltcG9ydCB7IEtleXMgfSBmcm9tICdAdHJ1ZS1kaXJlY3RpdmUvYmFzZSc7XHJcblxyXG4vKipcclxuICogRGF0ZXBpY2tlciBjb21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1ZS1kYXRlcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgLyogcmVtb3ZlZDogIDpob3N0IHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9IC0gaW52YWxpZCBpT1MgcmVuZGVyICovXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgOmhvc3Qge1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgfVxyXG4gICAgLnRydWUtZGF0ZXBpY2tlcl9faW5wdXQge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXQge1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG4gIGBdLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVwaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZX1dXHJcbiAgfSlcclxuZXhwb3J0IGNsYXNzIERhdGVwaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBEcm9wZG93bkJhc2VDb21wb25lbnQge1xyXG5cclxuICBfcGF0dGVybiA9ICcnO1xyXG5cclxuICBASW5wdXQoJ3BhdHRlcm4nKVxyXG4gIGdldCBwYXR0ZXJuKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGF0dGVybjtcclxuICB9XHJcblxyXG4gIHNldCBwYXR0ZXJuKHM6IHN0cmluZykge1xyXG4gICAgdGhpcy5fcGF0dGVybiA9IHM7XHJcbiAgICB0aGlzLmNoZWNrUGF0dGVybigpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCdlcnJvcicpXHJcbiAgZXJyb3I6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCdzaG93RXJyb3InKVxyXG4gIHNob3dFcnJvcjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgnaW5wdXRDbGFzcycpXHJcbiAgaW5wdXRDbGFzczogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyJywge3N0YXRpYzogZmFsc2V9KVxyXG4gIGNhbGVuZGFyOiBDYWxlbmRhckNvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7c3RhdGljOiB0cnVlfSlcclxuICBpbnB1dDogYW55O1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBNYXNrRGF0ZURpcmVjdGl2ZSB9KVxyXG4gIG1hc2tEYXRlRGlyZWN0aXZlOiBNYXNrRGF0ZURpcmVjdGl2ZTtcclxuXHJcbiAgY2hlY2tQYXR0ZXJuKCkge1xyXG5cclxuICAgIGxldCBoYXNEYXRlQ29tcG9uZW50cyA9IGZhbHNlO1xyXG4gICAgY29uc3QgbWFzazogTWFzayA9IE1hc2subWFza1dpdGhQYXR0ZXJuKHRoaXMuaW50bCwgdGhpcy5fcGF0dGVybik7XHJcblxyXG4gICAgbWFzay5zZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xyXG4gICAgICBpZiAoc2VjdGlvbi5zZWN0aW9uVHlwZS5kYXRlUGFydCA9PT0gJ2QnIHx8XHJcbiAgICAgICAgICBzZWN0aW9uLnNlY3Rpb25UeXBlLmRhdGVQYXJ0ID09PSAnbScgfHxcclxuICAgICAgICAgIHNlY3Rpb24uc2VjdGlvblR5cGUuZGF0ZVBhcnQgPT09ICd5JyB8fFxyXG4gICAgICAgICAgc2VjdGlvbi5zZWN0aW9uVHlwZS5kYXRlUGFydCA9PT0gJ3l5JyB8fFxyXG4gICAgICAgICAgc2VjdGlvbi5zZWN0aW9uVHlwZS5kYXRlUGFydCA9PT0gJ3l5eXknXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgaGFzRGF0ZUNvbXBvbmVudHMgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMudXNlUG9wdXAgPSBoYXNEYXRlQ29tcG9uZW50cztcclxuICB9XHJcblxyXG4gIGdldEljb24oKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy51c2VQb3B1cCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJ3RydWUtaWNvbi1jYWxlbmRhci1lbXB0eSc7XHJcbiAgfVxyXG5cclxuICBkYXRlQ2xpY2soZTogYW55KSB7XHJcbiAgICB0aGlzLnBvcHVwLmNsb3NlUG9wdXAoKTtcclxuICB9XHJcblxyXG4gIGVzY2FwZShlOiBhbnkpIHtcclxuICAgIHRoaXMucG9wdXAuY2xvc2VQb3B1cCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gT3ZlcnJpZGluZyB0aGlzIG1ldGhvZCB0byBzZW5kIGZvY3VzIGluIHRoZSBjYWxlbmRhclxyXG4gIGZvY3VzUG9wdXAoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLnNldEZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBhY2NlcHRLZXkoZTogYW55KSB7XHJcbiAgICB0aGlzLm1hc2tEYXRlRGlyZWN0aXZlLmtleURvd24oXHJcbiAgICAgIEtleXMuZ2VuZXJhdGVFdmVudCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsIC0xLCBLZXlzLmtleUNoYXIoZSksIGUuc2hpZnRLZXksIGUuY3RybEtleSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBpbnRsOiBJbnRlcm5hdGlvbmFsaXphdGlvblNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcm90ZWN0ZWQgX3JlbmRlcmVyOiBSZW5kZXJlcjIpIHtcclxuICAgICAgc3VwZXIoX2VsZW1lbnRSZWYsIF9yZW5kZXJlcik7XHJcbiAgfVxyXG59XHJcbiJdfQ==