UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

176 lines 17.3 kB
/** * @fileoverview added by tsickle * Generated from: lib/year-table.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __extends } from "tslib"; /** * @license * Copyright Alibaba.com All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core'; import { valueFunctionProp } from 'ng-zorro-antd/core/util'; import { DateHelperService } from 'ng-zorro-antd/i18n'; import { AbstractTable } from './abstract-table'; var YearTableComponent = /** @class */ (function (_super) { __extends(YearTableComponent, _super); function YearTableComponent(dateHelper) { var _this = _super.call(this) || this; _this.dateHelper = dateHelper; _this.MAX_ROW = 4; _this.MAX_COL = 3; return _this; } /** * @param {?} changes * @return {?} */ YearTableComponent.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { _super.prototype.ngOnChanges.call(this, changes); if (changes.value || changes.disabledDate || changes.activeDate) { this.render(); } }; /** * @return {?} */ YearTableComponent.prototype.makeHeadRow = /** * @return {?} */ function () { return []; }; /** * @return {?} */ YearTableComponent.prototype.makeBodyRows = /** * @return {?} */ function () { var _this = this; /** @type {?} */ var currentYear = this.activeDate && this.activeDate.getYear(); /** @type {?} */ var startYear = parseInt("" + currentYear / 10, 10) * 10; /** @type {?} */ var endYear = startYear + 9; /** @type {?} */ var previousYear = startYear - 1; /** @type {?} */ var years = []; /** @type {?} */ var yearValue = 0; for (var rowIndex = 0; rowIndex < this.MAX_ROW; rowIndex++) { /** @type {?} */ var row = []; var _loop_1 = function (colIndex) { /** @type {?} */ var yearNum = previousYear + yearValue; /** @type {?} */ var year = this_1.activeDate.setYear(yearNum); /** @type {?} */ var content = this_1.dateHelper.format(year.nativeDate, 'yyyy'); /** @type {?} */ var isDisabled = this_1.disabledDate ? this_1.disabledDate(year.nativeDate) : false; /** @type {?} */ var cell = { value: year.nativeDate, isDisabled: isDisabled, isSameDecade: yearNum >= startYear && yearNum <= endYear, isSelected: yearNum === (this_1.value && this_1.value.getYear()), content: content, title: content, classMap: {}, cellRender: valueFunctionProp(this_1.cellRender, year), // Customized content fullCellRender: valueFunctionProp(this_1.fullCellRender, year), onClick: (/** * @return {?} */ function () { return _this.chooseYear(cell.value.getFullYear()); }), // don't use yearValue here, onMouseEnter: (/** * @return {?} */ function () { return null; }) }; cell.classMap = this_1.getClassMap(cell); row.push(cell); yearValue++; }; var this_1 = this; for (var colIndex = 0; colIndex < this.MAX_COL; colIndex++) { _loop_1(colIndex); } years.push({ dateCells: row }); } return years; }; /** * @param {?} cell * @return {?} */ YearTableComponent.prototype.getClassMap = /** * @param {?} cell * @return {?} */ function (cell) { var _a; return _a = {}, _a[this.prefixCls + "-cell"] = true, _a[this.prefixCls + "-cell-in-view"] = !!cell.isSameDecade, _a[this.prefixCls + "-cell-selected"] = cell.isSelected, _a[this.prefixCls + "-cell-disabled"] = cell.isDisabled, _a; }; /** * @private * @param {?} year * @return {?} */ YearTableComponent.prototype.chooseYear = /** * @private * @param {?} year * @return {?} */ function (year) { this.value = this.activeDate.setYear(year); this.valueChange.emit(this.value); this.render(); }; YearTableComponent.decorators = [ { type: Component, args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, // tslint:disable-next-line:component-selector selector: 'year-table', exportAs: 'yearTable', template: "<table class=\"ant-picker-content\" cellspacing=\"0\" role=\"grid\">\n <thead *ngIf=\"headRow && headRow.length > 0\">\n <tr role=\"row\">\n <th *ngIf=\"showWeek\" role=\"columnheader\"></th>\n <th *ngFor=\"let cell of headRow\" role=\"columnheader\" title=\"{{ cell.title }}\">\n {{ cell.content }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of bodyRows; trackBy: trackByBodyRow\" [ngClass]=\"row.classMap\" role=\"row\">\n <td *ngIf=\"row.weekNum\" role=\"gridcell\" class=\"{{ prefixCls }}-cell-week\">\n {{ row.weekNum }}\n </td>\n <td\n *ngFor=\"let cell of row.dateCells; trackBy: trackByBodyColumn\"\n title=\"{{ cell.title }}\"\n role=\"gridcell\"\n [ngClass]=\"cell.classMap\"\n (click)=\"cell.isDisabled ? null : cell.onClick()\"\n (mouseenter)=\"cell.isDisablcellRendered ? null : cell.onMouseEnter()\"\n >\n <ng-container [ngSwitch]=\"prefixCls\">\n <ng-container *ngSwitchCase=\"'ant-picker'\">\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"isTemplateRef(cell.cellRender)\">\n <ng-container\n *ngTemplateOutlet=\"cell.cellRender; context: { $implicit: cell.value }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"isNonEmptyString(cell.cellRender)\">\n <span [innerHTML]=\"cell.cellRender\"></span>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div\n class=\"{{ prefixCls }}-cell-inner\"\n [attr.aria-selected]=\"cell.isSelected\"\n [attr.aria-disabled]=\"cell.isDisabled\"\n >\n {{ cell.content }}\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'ant-picker-calendar'\">\n <div\n class=\"{{ prefixCls }}-date ant-picker-cell-inner\"\n [class.ant-picker-calendar-date-today]=\"cell.isToday\"\n >\n <ng-container *ngIf=\"cell.fullCellRender; else defaultCell\">\n <ng-container\n *ngTemplateOutlet=\"cell.fullCellRender; context: { $implicit: cell.value }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultCell>\n <div class=\"{{ prefixCls }}-date-value\">{{ cell.content }}</div>\n <div class=\"{{ prefixCls }}-date-content\">\n <ng-container\n *ngTemplateOutlet=\"cell.cellRender; context: { $implicit: cell.value }\"\n ></ng-container>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </ng-container>\n </td>\n </tr>\n </tbody>\n</table>\n" }] } ]; /** @nocollapse */ YearTableComponent.ctorParameters = function () { return [ { type: DateHelperService } ]; }; return YearTableComponent; }(AbstractTable)); export { YearTableComponent }; if (false) { /** @type {?} */ YearTableComponent.prototype.MAX_ROW; /** @type {?} */ YearTableComponent.prototype.MAX_COL; /** * @type {?} * @private */ YearTableComponent.prototype.dateHelper; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkL2RhdGUtcGlja2VyLyIsInNvdXJjZXMiOlsibGliL3llYXItdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFRQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUE0QixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHakQ7SUFRd0Msc0NBQWE7SUFJbkQsNEJBQW9CLFVBQTZCO1FBQWpELFlBQ0UsaUJBQU8sU0FDUjtRQUZtQixnQkFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFIakQsYUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLGFBQU8sR0FBRyxDQUFDLENBQUM7O0lBSVosQ0FBQzs7Ozs7SUFFRCx3Q0FBVzs7OztJQUFYLFVBQVksT0FBc0I7UUFDaEMsaUJBQU0sV0FBVyxZQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDL0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2Y7SUFDSCxDQUFDOzs7O0lBRUQsd0NBQVc7OztJQUFYO1FBQ0UsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOzs7O0lBRUQseUNBQVk7OztJQUFaO1FBQUEsaUJBdUNDOztZQXRDTyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTs7WUFDMUQsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFHLFdBQVcsR0FBRyxF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QUUsQ0FBQztJQUNoQixDQUFDOztnQkFqRkYsU0FBUyxTQUFDO29CQUNULGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7b0JBRS9DLFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUUsV0FBVztvQkFDckIsbTdGQUFrQztpQkFDbkM7Ozs7Z0JBWFEsaUJBQWlCOztJQXNGMUIseUJBQUM7Q0FBQSxBQWxGRCxDQVF3QyxhQUFhLEdBMEVwRDtTQTFFWSxrQkFBa0I7OztJQUM3QixxQ0FBWTs7SUFDWixxQ0FBWTs7Ozs7SUFFQSx3Q0FBcUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWxpYmFiYS5jb20gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdmFsdWVGdW5jdGlvblByb3AgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdXRpbCc7XG5pbXBvcnQgeyBEYXRlSGVscGVyU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaTE4bic7XG5pbXBvcnQgeyBBYnN0cmFjdFRhYmxlIH0gZnJvbSAnLi9hYnN0cmFjdC10YWJsZSc7XG5pbXBvcnQgeyBEYXRlQm9keVJvdywgRGF0ZUNlbGwsIFllYXJDZWxsIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICd5ZWFyLXRhYmxlJyxcbiAgZXhwb3J0QXM6ICd5ZWFyVGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJ2Fic3RyYWN0LXRhYmxlLmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFllYXJUYWJsZUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0VGFibGUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBNQVhfUk9XID0gNDtcbiAgTUFYX0NPTCA9IDM7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRlSGVscGVyOiBEYXRlSGVscGVyU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgaWYgKGNoYW5nZXMudmFsdWUgfHwgY2hhbmdlcy5kaXNhYmxlZERhdGUgfHwgY2hhbmdlcy5hY3RpdmVEYXRlKSB7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgfVxuXG4gIG1ha2VIZWFkUm93KCk6IERhdGVDZWxsW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIG1ha2VCb2R5Um93cygpOiBEYXRlQm9keVJvd1tdIHtcbiAgICBjb25zdCBjdXJyZW50WWVhciA9IHRoaXMuYWN0aXZlRGF0ZSAmJiB0aGlzLmFjdGl2ZURhdGUuZ2V0WWVhcigpO1xuICAgIGNvbnN0IHN0YXJ0WWVhciA9IHBhcnNlSW50KGAke2N1cnJlbnRZZWFyIC8gMTB9YCwgMTApICogMTA7XG4gICAgY29uc3QgZW5kWWVhciA9IHN0YXJ0WWVhciArIDk7XG4gICAgY29uc3QgcHJldmlvdXNZZWFyID0gc3RhcnRZZWFyIC0gMTtcblxuICAgIGNvbnN0IHllYXJzOiBEYXRlQm9keVJvd1tdID0gW107XG5cbiAgICBsZXQgeWVhclZhbHVlID0gMDtcbiAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgdGhpcy5NQVhfUk9XOyByb3dJbmRleCsrKSB7XG4gICAgICBjb25zdCByb3c6IERhdGVDZWxsW10gPSBbXTtcbiAgICAgIGZvciAobGV0IGNvbEluZGV4ID0gMDsgY29sSW5kZXggPCB0aGlzLk1BWF9DT0w7IGNvbEluZGV4KyspIHtcbiAgICAgICAgY29uc3QgeWVhck51bSA9IHByZXZpb3VzWWVhciArIHllYXJWYWx1ZTtcbiAgICAgICAgY29uc3QgeWVhciA9IHRoaXMuYWN0aXZlRGF0ZS5zZXRZZWFyKHllYXJOdW0pO1xuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5kYXRlSGVscGVyLmZvcm1hdCh5ZWFyLm5hdGl2ZURhdGUsICd5eXl5Jyk7XG4gICAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkRGF0ZSA/IHRoaXMuZGlzYWJsZWREYXRlKHllYXIubmF0aXZlRGF0ZSkgOiBmYWxzZTtcblxuICAgICAgICBjb25zdCBjZWxsOiBZZWFyQ2VsbCA9IHtcbiAgICAgICAgICB2YWx1ZTogeWVhci5uYXRpdmVEYXRlLFxuICAgICAgICAgIGlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNTYW1lRGVjYWRlOiB5ZWFyTnVtID49IHN0YXJ0WWVhciAmJiB5ZWFyTnVtIDw9IGVuZFllYXIsXG4gICAgICAgICAgaXNTZWxlY3RlZDogeWVhck51bSA9PT0gKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5nZXRZZWFyKCkpLFxuICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgdGl0bGU6IGNvbnRlbnQsXG4gICAgICAgICAgY2xhc3NNYXA6IHt9LFxuICAgICAgICAgIGNlbGxSZW5kZXI6IHZhbHVlRnVuY3Rpb25Qcm9wKHRoaXMuY2VsbFJlbmRlciwgeWVhciksIC8vIEN1c3RvbWl6ZWQgY29udGVudFxuICAgICAgICAgIGZ1bGxDZWxsUmVuZGVyOiB2YWx1ZUZ1bmN0aW9uUHJvcCh0aGlzLmZ1bGxDZWxsUmVuZGVyLCB5ZWFyKSxcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB0aGlzLmNob29zZVllYXIoY2VsbC52YWx1ZS5nZXRGdWxsWWVhcigpKSwgLy8gZG9uJ3QgdXNlIHllYXJWYWx1ZSBoZXJlLFxuICAgICAgICAgIG9uTW91c2VFbnRlcjogKCkgPT4gbnVsbFxuICAgICAgICB9O1xuXG4gICAgICAgIGNlbGwuY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGNlbGwpO1xuXG4gICAgICAgIHJvdy5wdXNoKGNlbGwpO1xuICAgICAgICB5ZWFyVmFsdWUrKztcbiAgICAgIH1cbiAgICAgIHllYXJzLnB1c2goeyBkYXRlQ2VsbHM6IHJvdyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHllYXJzO1xuICB9XG5cbiAgZ2V0Q2xhc3NNYXAoY2VsbDogWWVhckNlbGwpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tY2VsbGBdOiB0cnVlLFxuICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1jZWxsLWluLXZpZXdgXTogISFjZWxsLmlzU2FtZURlY2FkZSxcbiAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tY2VsbC1zZWxlY3RlZGBdOiBjZWxsLmlzU2VsZWN0ZWQsXG4gICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWNlbGwtZGlzYWJsZWRgXTogY2VsbC5pc0Rpc2FibGVkXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY2hvb3NlWWVhcih5ZWFyOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5hY3RpdmVEYXRlLnNldFllYXIoeWVhcik7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cbn1cbiJdfQ==