UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

1,288 lines (1,256 loc) 317 kB
(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