UNPKG

@syncfusion/ej2-grids

Version:

Feature-rich JavaScript datagrid (datatable) control with built-in support for editing, filtering, grouping, paging, sorting, and exporting to Excel.

149 lines (148 loc) 7.13 kB
var __extends = (this && this.__extends) || (function () { 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); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); import { extend, isNullOrUndefined, select } from '@syncfusion/ej2-base'; import { DropDownList } from '@syncfusion/ej2-dropdowns'; import { Query, DataManager, DataUtil, Predicate } from '@syncfusion/ej2-data'; import { isEditable, getComplexFieldID, getObject, isCellHaveWidth } from '../base/util'; import { parentsUntil } from '../base/util'; import { EditCellBase } from './edit-cell-base'; import * as literals from '../base/string-literals'; import * as events from '../base/constant'; /** * `DropDownEditCell` is used to handle dropdown cell type editing. * * @hidden */ var DropDownEditCell = /** @class */ (function (_super) { __extends(DropDownEditCell, _super); function DropDownEditCell(parent) { var _this = //constructor _super.call(this) || this; _this.parent = parent; _this.flag = false; _this.removeEventHandler = _this.removeEventListener; return _this; } DropDownEditCell.prototype.write = function (args) { var isInline = this.parent.editSettings.mode !== 'Dialog'; this.column = args.column; var pred = new Predicate(args.column.field, 'notequal', null, true, false); var params = {}; if (args.column.edit.params) { var keys = Object.keys(args.column.edit.params); for (var i = 0; i < keys.length; i++) { params[keys[parseInt(i.toString(), 10)]] = keys[parseInt(i.toString(), 10)] === 'query' ? args.column.edit.params[keys[parseInt(i.toString(), 10)]].clone() : args.column.edit.params[keys[parseInt(i.toString(), 10)]]; } } this.obj = new DropDownList(extend({ dataSource: this.parent.dataSource instanceof DataManager ? this.parent.dataSource : new DataManager(this.parent.dataSource), query: new Query().where(pred).select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element) && isCellHaveWidth(parentsUntil(args.element, 'e-rowcell'), this.parent), fields: { value: args.column.field }, value: getObject(args.column.field, args.rowData), enableRtl: this.parent.enableRtl, placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px', floatLabelType: isInline ? 'Never' : 'Always', sortOrder: 'Ascending', cssClass: this.parent.cssClass ? this.parent.cssClass : null, close: this.dropDownClose.bind(this) }, params)); if (this.parent.enableVirtualization) { if (params.dataSource) { this.obj.dataSource = params.dataSource; } else { this.obj.dataSource = args.column.isForeignColumn() ? [args.foreignKeyData[0]] : [args.rowData]; } } this.addEventListener(); this.obj.query.params = this.parent.query.params; this.obj.appendTo(args.element); /* tslint:disable-next-line:no-any */ args.element.setAttribute('name', getComplexFieldID(args.column.field)); }; DropDownEditCell.prototype.dropDownClose = function (args) { if (args.event) { if (args.event.action === 'escape') { this.parent.editModule.editCellDialogClose = true; } else if (this.parent.isEdit && this.parent.editSettings.mode === 'Batch' && args.event.action === 'enter') { args.event.stopPropagation(); } } }; DropDownEditCell.prototype.addEventListener = function () { this.ddCreated = this.dropdownCreated.bind(this); this.ddOpen = this.dropDownOpen.bind(this); this.ddBeforeOpen = this.dropdownBeforeOpen.bind(this); this.ddComplete = this.ddActionComplete.bind(this); this.obj.addEventListener(literals.create, this.ddCreated); this.obj.addEventListener(literals['open'], this.ddOpen); this.obj.addEventListener(literals.beforeOpen, this.ddBeforeOpen); this.obj.addEventListener(events.actionComplete, this.ddComplete); }; DropDownEditCell.prototype.removeEventListener = function () { if (this.obj.isDestroyed) { return; } this.obj.removeEventListener(literals.create, this.ddCreated); this.obj.removeEventListener(literals['open'], this.ddOpen); this.obj.removeEventListener(literals.beforeOpen, this.ddBeforeOpen); this.obj.removeEventListener(events.actionComplete, this.ddComplete); }; // eslint-disable-next-line @typescript-eslint/no-unused-vars DropDownEditCell.prototype.dropdownCreated = function (e) { this.flag = true; }; DropDownEditCell.prototype.dropdownBeforeOpen = function () { if (this.parent.enableVirtualization) { if (this.column.edit.params && this.column.edit.params.dataSource) { this.obj.dataSource = this.column.edit.params.dataSource; } else { this.obj.dataSource = !this.column.isForeignColumn() ? (this.parent.dataSource instanceof DataManager ? this.parent.dataSource : new DataManager(this.parent.dataSource)) : this.column.dataSource instanceof DataManager ? this.column.dataSource : new DataManager(this.column.dataSource); } } }; DropDownEditCell.prototype.ddActionComplete = function (e) { e.result = DataUtil.distinct(e.result, this.obj.fields.value, true); if (this.flag && this.column.dataSource && !(this.column.edit.params && this.column.edit.params.ddEditedData)) { if ('result' in this.column.dataSource) { this.column.dataSource.result = e.result; } else if (this.column.dataSource instanceof DataManager) { this.column.dataSource.dataSource.json = e.result; } } this.flag = false; }; DropDownEditCell.prototype.dropDownOpen = function (args) { var dlgElement = parentsUntil(this.obj.element, 'e-dialog'); if (this.parent.editSettings.mode === 'Dialog' && !isNullOrUndefined(dlgElement)) { var dlgObj = select('#' + dlgElement.id, document).ej2_instances[0]; args.popup.element.style.zIndex = (dlgObj.zIndex + 1).toString(); } }; return DropDownEditCell; }(EditCellBase)); export { DropDownEditCell };