@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
1,288 lines (1,256 loc) • 317 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs/operators'), require('ng-devui/window-ref'), require('rxjs'), require('ng-devui/input-number'), require('ng-devui/select'), require('ng-devui/tree-select'), require('ng-devui/utils'), require('ng-devui/i18n'), require('@angular/common'), require('@angular/forms'), require('@angular/cdk/scrolling'), require('ng-devui/pagination'), require('ng-devui/common'), require('ng-devui/datepicker'), require('ng-devui/checkbox'), require('ng-devui/button'), require('ng-devui/dropdown'), require('ng-devui/tooltip'), require('ng-devui/dragdrop')) :
typeof define === 'function' && define.amd ? define('ng-devui/data-table', ['exports', '@angular/core', 'rxjs/operators', 'ng-devui/window-ref', 'rxjs', 'ng-devui/input-number', 'ng-devui/select', 'ng-devui/tree-select', 'ng-devui/utils', 'ng-devui/i18n', '@angular/common', '@angular/forms', '@angular/cdk/scrolling', 'ng-devui/pagination', 'ng-devui/common', 'ng-devui/datepicker', 'ng-devui/checkbox', 'ng-devui/button', 'ng-devui/dropdown', 'ng-devui/tooltip', 'ng-devui/dragdrop'], factory) :
(global = global || self, factory((global['ng-devui'] = global['ng-devui'] || {}, global['ng-devui']['data-table'] = {}), global.ng.core, global.rxjs.operators, global['ng-devui']['window-ref'], global.rxjs, global['ng-devui']['input-number'], global['ng-devui'].select, global['ng-devui']['tree-select'], global['ng-devui'].utils, global['ng-devui'].i18n, global.ng.common, global.ng.forms, global.ng.cdk.scrolling, global['ng-devui'].pagination, global['ng-devui'].common, global['ng-devui'].datepicker, global['ng-devui'].checkbox, global['ng-devui'].button, global['ng-devui'].dropdown, global['ng-devui'].tooltip, global['ng-devui'].dragdrop));
}(this, (function (exports, core, operators, windowRef, rxjs, inputNumber, select, treeSelect, utils, i18n, common, forms, scrolling, pagination, common$1, datepicker, checkbox, button, dropdown, tooltip, dragdrop) { 'use strict';
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __rest(s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
}
function __decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __param(paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
}
function __metadata(metadataKey, metadataValue) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
}
function __awaiter(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
}
function __exportStar(m, exports) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
function __values(o) {
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
if (m) return m.call(o);
return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
}
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
}
function __spreadArrays() {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
function __await(v) {
return this instanceof __await ? (this.v = v, this) : new __await(v);
}
function __asyncGenerator(thisArg, _arguments, generator) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var g = generator.apply(thisArg, _arguments || []), i, q = [];
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
function fulfill(value) { resume("next", value); }
function reject(value) { resume("throw", value); }
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
}
function __asyncDelegator(o) {
var i, p;
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
}
function __asyncValues(o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
}
function __makeTemplateObject(cooked, raw) {
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
return cooked;
};
function __importStar(mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result.default = mod;
return result;
}
function __importDefault(mod) {
return (mod && mod.__esModule) ? mod : { default: mod };
}
/**
* @fileoverview added by tsickle
* Generated from: tmpl/data-table-cell-edit-tmpl.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var DataTableCellEditTmplComponent = /** @class */ (function () {
function DataTableCellEditTmplComponent() {
}
DataTableCellEditTmplComponent.decorators = [
{ type: core.Component, args: [{
selector: 'd-cell-edit',
template: '',
changeDetection: core.ChangeDetectionStrategy.OnPush
}] }
];
DataTableCellEditTmplComponent.propDecorators = {
template: [{ type: core.ContentChild, args: [core.TemplateRef, { static: false },] }]
};
return DataTableCellEditTmplComponent;
}());
if (false) {
/** @type {?} */
DataTableCellEditTmplComponent.prototype.template;
/** @type {?} */
DataTableCellEditTmplComponent.prototype.dataPicker;
}
/**
* @fileoverview added by tsickle
* Generated from: tmpl/data-table-cell-view-tmpl.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var DataTableCellViewTmplComponent = /** @class */ (function () {
function DataTableCellViewTmplComponent() {
}
DataTableCellViewTmplComponent.decorators = [
{ type: core.Component, args: [{
selector: 'd-cell',
template: '',
changeDetection: core.ChangeDetectionStrategy.OnPush
}] }
];
DataTableCellViewTmplComponent.propDecorators = {
template: [{ type: core.ContentChild, args: [core.TemplateRef, { static: false },] }]
};
return DataTableCellViewTmplComponent;
}());
if (false) {
/** @type {?} */
DataTableCellViewTmplComponent.prototype.template;
}
/**
* @fileoverview added by tsickle
* Generated from: tmpl/data-table-head-cell-tmpl.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var DataTableHeadCellTmplComponent = /** @class */ (function () {
function DataTableHeadCellTmplComponent() {
}
DataTableHeadCellTmplComponent.decorators = [
{ type: core.Component, args: [{
selector: 'd-head-cell',
template: '',
changeDetection: core.ChangeDetectionStrategy.OnPush
}] }
];
DataTableHeadCellTmplComponent.propDecorators = {
template: [{ type: core.ContentChild, args: [core.TemplateRef, { static: false },] }]
};
return DataTableHeadCellTmplComponent;
}());
if (false) {
/** @type {?} */
DataTableHeadCellTmplComponent.prototype.template;
}
/**
* @fileoverview added by tsickle
* Generated from: tmpl/data-table-column-tmpl.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var DataTableColumnTmplComponent = /** @class */ (function () {
function DataTableColumnTmplComponent() {
this.fieldType = 'text';
this.order = Number.MAX_VALUE;
this.nestedColumn = false;
this.filterChange = new core.EventEmitter();
this.filterMultiple = true;
this.orderChange = new core.EventEmitter();
// 鼠标是否移动到当前表头单元格
this.selected = false;
this.filterIconActiveInner = false;
}
/**
* @return {?}
*/
DataTableColumnTmplComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
if (this.filterable) {
if (this.filterList) {
if (!this.searchFn) {
this.searchFn = (/**
* @param {?} item
* @return {?}
*/
function (item) {
return rxjs.of((_this.filterList ? _this.filterList : [])
.filter((/**
* @param {?} value
* @return {?}
*/
function (value) { return value.name.toLowerCase().includes(item.toLowerCase()); })));
});
}
}
}
};
/**
* @param {?} changes
* @return {?}
*/
DataTableColumnTmplComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
if (changes['order']) {
this.orderChange.emit(changes['order'].currentValue);
}
if (changes['filterList']) {
if (this.filterIconActive !== undefined) {
return;
}
/** @type {?} */
var checkedList = this.filterList.filter((/**
* @param {?} item
* @return {?}
*/
function (item) { return item.checked; }));
if (checkedList.length && (checkedList.length < this.filterList.length)) {
this.filterIconActiveInner = true;
}
else {
this.filterIconActiveInner = false;
}
}
};
/**
* @return {?}
*/
DataTableColumnTmplComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.orderChange.unsubscribe();
};
// column.extraOptions?.dateFormat
// column.extraOptions?.dateFormat
/**
* @param {?} filterData
* @return {?}
*/
DataTableColumnTmplComponent.prototype.emitFilterData =
// column.extraOptions?.dateFormat
/**
* @param {?} filterData
* @return {?}
*/
function (filterData) {
this.filterChange.emit(filterData);
};
/**
* @param {?} isOpen
* @return {?}
*/
DataTableColumnTmplComponent.prototype.canFilter = /**
* @param {?} isOpen
* @return {?}
*/
function (isOpen) {
/** @type {?} */
var changeResult = Promise.resolve(true);
if (this.beforeFilter) {
/** @type {?} */
var result = this.beforeFilter(isOpen);
if (typeof result !== 'undefined') {
if (result.then) {
changeResult = result;
}
else if (result.subscribe) {
changeResult = ((/** @type {?} */ (result))).toPromise();
}
else {
changeResult = Promise.resolve(result);
}
}
}
return changeResult;
};
DataTableColumnTmplComponent.decorators = [
{ type: core.Component, args: [{
selector: 'd-column',
template: '',
changeDetection: core.ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
DataTableColumnTmplComponent.ctorParameters = function () { return []; };
DataTableColumnTmplComponent.propDecorators = {
advancedHeader: [{ type: core.Input }],
fieldType: [{ type: core.Input }],
maxWidth: [{ type: core.Input }],
minWidth: [{ type: core.Input }],
field: [{ type: core.Input }],
header: [{ type: core.Input }],
sortable: [{ type: core.Input }],
editable: [{ type: core.Input }],
unresizable: [{ type: core.Input }],
filterable: [{ type: core.Input }],
cellClass: [{ type: core.Input }],
width: [{ type: core.Input }],
fixedLeft: [{ type: core.Input }],
fixedRight: [{ type: core.Input }],
extraOptions: [{ type: core.Input }],
order: [{ type: core.Input }],
nestedColumn: [{ type: core.Input }],
filterList: [{ type: core.Input }],
filterChange: [{ type: core.Output }],
filterMultiple: [{ type: core.Input }],
filterIconActive: [{ type: core.Input }],
filterBoxWidth: [{ type: core.Input }],
filterBoxHeight: [{ type: core.Input }],
beforeFilter: [{ type: core.Input }],
cellCmp: [{ type: core.ContentChild, args: [DataTableCellViewTmplComponent, { static: false },] }],
cellEditCmp: [{ type: core.ContentChild, args: [DataTableCellEditTmplComponent, { static: false },] }],
headCellTmpl: [{ type: core.ContentChild, args: [DataTableHeadCellTmplComponent, { static: false },] }],
customFilterTemplate: [{ type: core.Input }],
searchFn: [{ type: core.Input }]
};
return DataTableColumnTmplComponent;
}());
if (false) {
/** @type {?} */
DataTableColumnTmplComponent.prototype.advancedHeader;
/** @type {?} */
DataTableColumnTmplComponent.prototype.fieldType;
/** @type {?} */
DataTableColumnTmplComponent.prototype.maxWidth;
/** @type {?} */
DataTableColumnTmplComponent.prototype.minWidth;
/** @type {?} */
DataTableColumnTmplComponent.prototype.field;
/** @type {?} */
DataTableColumnTmplComponent.prototype.header;
/** @type {?} */
DataTableColumnTmplComponent.prototype.sortable;
/** @type {?} */
DataTableColumnTmplComponent.prototype.editable;
/** @type {?} */
DataTableColumnTmplComponent.prototype.unresizable;
/** @type {?} */
DataTableColumnTmplComponent.prototype.filterable;
/** @type {?} */
DataTableColumnTmplComponent.prototype.cellClass;
/** @type {?} */
DataTableColumnTmplComponent.prototype.width;
/** @type {?} */
DataTableColumnTmplComponent.prototype.fixedLeft;
/** @type {?} */
DataTableColumnTmplComponent.prototype.fixedRight;
/** @type {?} */
DataTableColumnTmplComponent.prototype.extraOptions;
/** @type {?} */
DataTableColumnTmplComponent.prototype.order;
/** @type {?} */
DataTableColumnTmplComponent.prototype.nestedColumn;
/**
* 传入筛选列表
* @type {?}
*/
DataTableColumnTmplComponent.prototype.filterList;
/** @type {?} */
DataTableColumnTmplComponent.prototype.filterChange;
/** @type {?} */
DataTableColumnTmplComponent.prototype.filterMultiple;
/** @type {?} */
DataTableColumnTmplComponent.prototype.filterIconActive;
/** @type {?} */
DataTableColumnTmplComponent.prototype.filterBoxWidth;
/** @type {?} */
DataTableColumnTmplComponent.prototype.filterBoxHeight;
/** @type {?} */
DataTableColumnTmplComponent.prototype.beforeFilter;
/** @type {?} */
DataTableColumnTmplComponent.prototype.cellCmp;
/** @type {?} */
DataTableColumnTmplComponent.prototype.cellEditCmp;
/** @type {?} */
DataTableColumnTmplComponent.prototype.headCellTmpl;
/** @type {?} */
DataTableColumnTmplComponent.prototype.customFilterTemplate;
/** @type {?} */
DataTableColumnTmplComponent.prototype.searchFn;
/** @type {?} */
DataTableColumnTmplComponent.prototype.orderChange;
/** @type {?} */
DataTableColumnTmplComponent.prototype._formatter;
/** @type {?} */
DataTableColumnTmplComponent.prototype.selected;
/** @type {?} */
DataTableColumnTmplComponent.prototype.filterIconActiveInner;
}
/**
* @fileoverview added by tsickle
* Generated from: tmpl/data-table-foot-tmpl.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var DataTableFootTmplComponent = /** @class */ (function () {
function DataTableFootTmplComponent() {
}
DataTableFootTmplComponent.decorators = [
{ type: core.Component, args: [{
selector: 'd-foot',
template: '',
changeDetection: core.ChangeDetectionStrategy.OnPush
}] }
];
DataTableFootTmplComponent.propDecorators = {
template: [{ type: core.ContentChild, args: [core.TemplateRef, { static: false },] }]
};
return DataTableFootTmplComponent;
}());
if (false) {
/** @type {?} */
DataTableFootTmplComponent.prototype.template;
}
/**
* @fileoverview added by tsickle
* Generated from: tmpl/data-table-head-tmpl.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var DataTableHeadTmplComponent = /** @class */ (function () {
function DataTableHeadTmplComponent() {
}
DataTableHeadTmplComponent.decorators = [
{ type: core.Component, args: [{
selector: 'd-head',
template: '',
changeDetection: core.ChangeDetectionStrategy.OnPush
}] }
];
DataTableHeadTmplComponent.propDecorators = {
template: [{ type: core.ContentChild, args: [core.TemplateRef, { static: false },] }]
};
return DataTableHeadTmplComponent;
}());
if (false) {
/** @type {?} */
DataTableHeadTmplComponent.prototype.template;
}
/**
* @fileoverview added by tsickle
* Generated from: tmpl/data-table-pager-tmpl.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var DataTablePagerTmplComponent = /** @class */ (function () {
function DataTablePagerTmplComponent() {
}
DataTablePagerTmplComponent.decorators = [
{ type: core.Component, args: [{
selector: 'd-pager-panel',
template: '',
changeDetection: core.ChangeDetectionStrategy.OnPush
}] }
];
DataTablePagerTmplComponent.propDecorators = {
template: [{ type: core.ContentChild, args: [core.TemplateRef, { static: false },] }]
};
return DataTablePagerTmplComponent;
}());
if (false) {
/** @type {?} */
DataTablePagerTmplComponent.prototype.template;
}
/**
* @fileoverview added by tsickle
* Generated from: data-table.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var DataTableComponent = /** @class */ (function () {
function DataTableComponent(windowRef, elementRef, changeDetectorRef, ngZone, renderer) {
var _this = this;
this.windowRef = windowRef;
this.elementRef = elementRef;
this.changeDetectorRef = changeDetectorRef;
this.ngZone = ngZone;
this.renderer = renderer;
/**
* 【可选】默认表格使用的表格类型,可选值为'cell'
*/
this.editModel = 'cell';
/**
* 表格类型,striped表现为条纹间隔
*/
this.type = '';
/**
* 表格是否开启鼠标hover行高亮效果
*/
this.hover = true;
/**
* 表格宽度
*/
this.tableWidth = '100%';
/**
* 【可选】多列选择数组,用来指导那几列会被排序
*/
this.multiSort = [];
/**
* 【可选】用来自定义不可拖拽的前几列
*/
this.colDropFreezeTo = 0;
/**
* 【可选】同时绑定单击、双击事件时,用于区分点击的时间间隔,默认300ms,两个事件不同时使用可以指定为0
*/
this.timeout = 300;
/**
* 【可选】是否显示排序未激活图标,默认显示,
*/
this.showSortIcon = true;
/**
* 多列选择Change事件,用来更新多列选择数组
*
*/
this.multiSortChange = new core.EventEmitter();
/**
* 表格单元格点击事件
*/
this.cellClick = new core.EventEmitter();
/**
* 表格单元格双击事件
*/
this.cellDBClick = new core.EventEmitter();
/**
* 表格行点击事件
*/
this.rowClick = new core.EventEmitter();
/**
* 表格行双击事件
*/
this.rowDBClick = new core.EventEmitter();
/**
* 行detail toggle事件
*/
this.detialToggle = new core.EventEmitter();
/**
* 表格单元格开始编辑事件
*/
this.cellEditStart = new core.EventEmitter();
/**
* 表格单元格结束编辑事件
*/
this.cellEditEnd = new core.EventEmitter();
/**
* 某行的勾选状态变化事件
*/
this.rowCheckChange = new core.EventEmitter();
/**
* 当前页码全勾选状态变化事件
*/
this.checkAllChange = new core.EventEmitter();
/**
* 页码变化事件
*/
this.pageIndexChange = new core.EventEmitter();
/**
* 延迟懒加载完成事件
*/
this.loadMore = new core.EventEmitter();
/**
* 列宽变化事件
*/
this.resize = new core.EventEmitter();
/**
* 当前表格层级,默认为0,在树形表格场景下自增长
*/
this.tableLevel = 0;
/**
* 配置树形表格的父子选中是否互相关联
* upward:选中子关联父
* downward: 选中父关联子
*/
this.checkableRelation = { upward: true, downward: true };
/**
* 子列表关闭事件
*/
this.childrenTableClose = new core.EventEmitter();
/**
* 全部子列表关闭事件
*/
this.allChildrenTableClose = new core.EventEmitter();
this._dataSource = [];
this._pageAllChecked = false;
this.selectable = true;
this.allChecked = [];
this.documentClickEvent = new core.EventEmitter();
this.cellEditorClickEvent = new core.EventEmitter();
this._hideColumn = [];
this._lazy = false;
this.scrollStream = new core.EventEmitter();
this.searchQueryChange = new core.EventEmitter();
this.halfChecked = false;
this.tableStatusEnum = {
open: true,
close: false
};
this.scrollY = 0;
// 判断数据是否存在选中状态
this.hasChecked = (/**
* @param {?} data
* @return {?}
*/
function (data) {
if (data.$checked) {
return true;
}
if (data.children) {
return data.children.some(_this.hasChecked);
}
});
// 判断数据是否存在未选中状态
this.hasUnChecked = (/**
* @param {?} data
* @return {?}
*/
function (data) {
if (!data.$checked) {
return true;
}
if (data.children) {
return data.children.some(_this.hasUnChecked);
}
});
}
Object.defineProperty(DataTableComponent.prototype, "resizeBar", {
set: /**
* @param {?} content
* @return {?}
*/
function (content) {
var _this = this;
setTimeout((/**
* @return {?}
*/
function () {
_this.resizeBarRefElement = content;
if (!_this.changeDetectorRef['destroyed']) {
_this.changeDetectorRef.detectChanges();
}
}));
},
enumerable: true,
configurable: true
});
Object.defineProperty(DataTableComponent.prototype, "dataSource", {
get: /**
* @return {?}
*/
function () {
return this._dataSource;
},
set: /**
* @param {?} dataSource
* @return {?}
*/
function (dataSource) {
if (null === dataSource || !dataSource) {
dataSource = [];
}
this._dataSource = dataSource;
/** @type {?} */
var hasChecked = this.dataSource.some(this.hasChecked);
/** @type {?} */
var hasUnChecked = this.dataSource.some(this.hasUnChecked);
this._pageAllChecked = dataSource && dataSource.length > 0 && !hasUnChecked;
this.halfChecked = hasChecked && hasUnChecked;
},
enumerable: true,
configurable: true
});
Object.defineProperty(DataTableComponent.prototype, "hideColumn", {
get: /**
* @return {?}
*/
function () {
return this._hideColumn;
},
set: /**
* @param {?} hideColume
* @return {?}
*/
function (hideColume) {
this._hideColumn = hideColume;
if (this._columns) {
this.updateColumns();
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(DataTableComponent.prototype, "pager", {
get: /**
* @return {?}
*/
function () {
return this._pager;
},
set: /**
* @param {?} pager
* @return {?}
*/
function (pager) {
if (pager === undefined || pager === null) {
return;
}
else {
this._pager = {
total: pager.total,
pageIndex: pager.pageIndex || 1,
pageSize: pager.pageSize || 10,
maxItems: pager.maxItems || 8,
selectDirection: pager.selectDirection || 'auto'
};
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(DataTableComponent.prototype, "pageAllChecked", {
get: /**
* @return {?}
*/
function () {
return this._pageAllChecked;
},
set: /**
* @param {?} pageAllChecked
* @return {?}
*/
function (pageAllChecked) {
if (this.dataSource) {
this._dataSource = this.setCheckedStatus(this.dataSource, pageAllChecked);
}
this._pageAllChecked = pageAllChecked;
this.halfChecked = this.dataSource.some(this.hasChecked) && this.dataSource.some(this.hasUnChecked);
},
enumerable: true,
configurable: true
});
Object.defineProperty(DataTableComponent.prototype, "lazy", {
get: /**
* @return {?}
*/
function () {
return this._lazy;
},
set: /**
* @param {?} lazy
* @return {?}
*/
function (lazy) {
this._lazy = lazy;
},
enumerable: true,
configurable: true
});
/**
* @private
* @return {?}
*/
DataTableComponent.prototype.getColumns = /**
* @private
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var cols = this.columns
.filter((/**
* @param {?} column
* @return {?}
*/
function (column) {
return !_this.hideColumn.some((/**
* @param {?} field
* @return {?}
*/
function (field) { return column.field === field; }));
}));
cols.sort((/**
* @param {?} first
* @param {?} second
* @return {?}
*/
function (first, second) { return first.order - second.order; }));
return cols;
};
// life hook start
// life hook start
/**
* @return {?}
*/
DataTableComponent.prototype.ngOnInit =
// life hook start
/**
* @return {?}
*/
function () {
var _this = this;
if (this.lazy) {
this.pager = null;
}
this.setupScrollEvent();
this.ngZone.runOutsideAngular((/**
* @return {?}
*/
function () {
document.addEventListener('click', _this.onDocumentClick.bind(_this));
window.addEventListener('wheel', _this.onWinScroll.bind(_this));
}));
};
/**
* @param {?} $event
* @return {?}
*/
DataTableComponent.prototype.onDocumentClick = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
this.documentClickEvent.emit($event);
};
/**
* @param {?} $event
* @return {?}
*/
DataTableComponent.prototype.onWinScroll = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
var _this = this;
this.ngZone.run((/**
* @return {?}
*/
function () {
_this.scrollStream.emit($event);
}));
};
/**
* @return {?}
*/
DataTableComponent.prototype.ngAfterContentInit = /**
* @return {?}
*/
function () {
var _this = this;
this.updateColumns();
this.columns.forEach((/**
* @param {?} col
* @return {?}
*/
function (col) {
col.orderChange.subscribe((/**
* @param {?} order
* @return {?}
*/
function (order) {
_this.updateColumns();
}));
}));
this.columns.changes.subscribe((/**
* @return {?}
*/
function () {
_this.updateColumns();
}));
};
/**
* @private
* @return {?}
*/
DataTableComponent.prototype.updateColumns = /**
* @private
* @return {?}
*/
function () {
this._columns = this.getColumns();
};
/**
* @private
* @return {?}
*/
DataTableComponent.prototype.getScrollbarWidth = /**
* @private
* @return {?}
*/
function () {
if (this.tableBodyEl) {
/** @type {?} */
var inner = this.tableBodyEl.nativeElement.parentNode;
/** @type {?} */
var outer = inner.parentNode;
// Calculating difference between container's full width and the child width
return (outer.offsetWidth - inner.offsetWidth);
}
};
/**
* @return {?}
*/
DataTableComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.unSubscription();
};
/**
* @param {?} column
* @return {?}
*/
DataTableComponent.prototype.onHandleSort = /**
* @param {?} column
* @return {?}
*/
function (column) {
// set column direction
for (var i = 0; i < this.multiSort.length; i++) {
if (this.multiSort[i].field === column.field) {
this.multiSort[i].direction = column.direction;
break;
}
}
if (this.multiSort) {
/** @type {?} */
var multiSortIndex = this.multiSort.findIndex((/**
* @param {?} item
* @return {?}
*/
function (item) { return item.field === column.field; }));
if (multiSortIndex !== -1) {
this.multiSort.splice(multiSortIndex, 1);
}
if (column.direction === '') {
this.multiSortChange.emit(this.multiSort);
return;
}
if (!this.onlyOneColumnSort) {
this.multiSort.push(column);
}
else {
this.multiSort = [column];
}
}
else {
this.multiSort = [column];
}
this.multiSortChange.emit(this.multiSort);
};
/**
* @param {?} $event
* @return {?}
*/
DataTableComponent.prototype.onCellClick = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
var _this = this;
this.selectedRowItem = $event.rowItem;
this.selectedColumnItem = $event.column;
this.ngZone.run((/**
* @return {?}
*/
function () {
_this.cellClick.emit($event);
}));
};
/**
* @param {?} $event
* @return {?}
*/
DataTableComponent.prototype.onCellEditStart = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
this.isCellEdit = true;
this.cellEditStart.emit($event);
};
/**
* @param {?} $event
* @return {?}
*/
DataTableComponent.prototype.onCellEditEnd = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
this.isCellEdit = false;
this.cellEditEnd.emit($event);
};
/**
* @param {?} $event
* @return {?}
*/
DataTableComponent.prototype.onCellDBClick = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
var _this = this;
this.ngZone.run((/**
* @return {?}
*/
function () {
_this.cellDBClick.emit($event);
}));
};
/**
* @param {?} $event
* @return {?}
*/
DataTableComponent.prototype.onRowClick = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
var _this = this;
this.selectedRowItem = $event.rowItem;
this.ngZone.run((/**
* @return {?}
*/
function () {
_this.rowClick.emit($event);
}));
};
/**
* @param {?} $event
* @return {?}
*/
DataTableComponent.prototype.onRowDBClick = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
var _this = this;
this.ngZone.run((/**
* @return {?}
*/
function () {
_this.rowDBClick.emit($event);
}));
};
/**
* @param {?} $event
* @return {?}
*/
DataTableComponent.prototype.onDetailToggle = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
this.detialToggle.emit($event);
};
/**
* @param {?} $event
* @return {?}
*/
DataTableComponent.prototype.onRowCheckChange = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
// 处理children的选中
if ($event.rowItem.children && this.checkableRelation.downward) {
this.setCheckedStatus($event.rowItem.children, $event.checked);
}
// 处理parents的选中
if (this.checkableRelation.upward) {
/** @type {?} */
var nestedIndexArray = $event.nestedIndex.split(',');
nestedIndexArray.shift();
/** @type {?} */
var nestedIndexArrayToInt = nestedIndexArray.map((/**
* @param {?} value
* @return {?}
*/
function (value) {
// tslint:disable-next-line:radix
return parseInt(value);
}));
// 通过选中行的父级索引设置父的选中状态
this.setParentCheckStatus(nestedIndexArrayToInt);
}
// 处理整个table header的选中
/** @type {?} */
var hasChecked = this.dataSource.some(this.hasChecked);
if ($event) {
/** @type {?} */
var hasUnChecked = this.dataSource.some(this.hasUnChecked);
this._pageAllChecked = !hasUnChecked;
this.halfChecked = hasChecked && hasUnChecked;
}
else {
this._pageAllChecked = false;
this.halfChecked = hasChecked;
}
this.rowCheckChange.emit($event);
};
/**
* @private
* @param {?} nestedIndex
* @return {?}
*/
DataTableComponent.prototype.setParentCheckStatus = /**
* @private
* @param {?} nestedIndex
* @return {?}
*/
function (nestedIndex) {
if (nestedIndex.length > 0) {
/** @type {?} */
var topIndex = nestedIndex[0];
/** @type {?} */
var topParent = this.dataSource[topIndex];
/** @type {?} */
var argNestedIndex = __spread(nestedIndex);
argNestedIndex.shift();
/** @type {?} */
var lastParent = this.findLastParent(topParent, argNestedIndex);
this.setSelfCheckStatus(lastParent);
nestedIndex.pop();
if (nestedIndex.length > 0) {
this.setParentCheckStatus(nestedIndex);
}
}
};
/**
* @private
* @param {?} source
* @param {?} indexArray
* @return {?}
*/
DataTableComponent.prototype.findLastParent = /**
* @private
* @param {?} source
* @param {?} indexArray
* @return {?}
*/
function (source, indexArray) {
if (source && indexArray.length > 0) {
/** @type {?} */
var topIndex = indexArray[0];
/** @type {?} */
var topParent = source.children[topIndex];
indexArray.shift();
return this.findLastParent(topParent, indexArray);
}
else {
return source;
}
};
/**
* @private
* @param {?} data
* @return {?}
*/
DataTableComponent.prototyp