com.phloxui
Version:
PhloxUI Ng2+ Framework
1,079 lines (1,078 loc) • 110 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, EventEmitter, Output } from '@angular/core';
import { I18N, Option } from '../../decorator/decorators';
import { Draggable } from '../../directive/Draggable.directive';
import { DefaultTableRow } from './DefaultTableRow.component';
import { NeedFocusService } from '../../service/NeedFocusService.service';
const /** @type {?} */ TYPE_NAME = "phx-expandable-table-row";
const /** @type {?} */ DEFAULT_DRAG_AUTO_EXPAND_ENABLED = true;
const /** @type {?} */ DEFAULT_DRAG_AUTO_EXPAND_DELAY = 600;
const /** @type {?} */ DEFAULT_DRAG_AUTO_EXPAND_EFFECT_CLASS = 'auto-expand';
const /** @type {?} */ DEFAULT_DRAG_AUTO_EXPAND_EFFECT_DURATION = 300;
const /** @type {?} */ DEFAULT_DRAG_AUTO_EXPAND_CONTRACT_ON_LEAVE = true;
const /** @type {?} */ DEFAULT_DRAG_AUTO_EXPAND_CONTRACT_DELAY = 600;
const /** @type {?} */ DEFAULT_DRAG_EFFECT_MOVE_OUT_CLASS = 'move-out';
const /** @type {?} */ DEFAULT_DRAG_EFFECT_MOVE_OUT_DURATION = 300;
const /** @type {?} */ DEFAULT_DRAG_EFFECT_MOVE_IN_CLASS = 'move-in';
const /** @type {?} */ DEFAULT_DRAG_EFFECT_MOVE_IN_DURATION = 2000;
export class ExpandableTableRow extends DefaultTableRow {
/**
* @param {?} elRef
* @param {?} needFocusService
*/
constructor(elRef, needFocusService) {
super(elRef, needFocusService);
this.showing = true;
this.autoExpanding = false;
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
// Set default option values
if (this.dragAutoExpandEnabled === null || typeof this.dragAutoExpandEnabled === 'undefined') {
this.dragAutoExpandEnabled = DEFAULT_DRAG_AUTO_EXPAND_ENABLED;
}
if (this.dragAutoExpandDelay === null || typeof this.dragAutoExpandDelay === 'undefined') {
this.dragAutoExpandDelay = DEFAULT_DRAG_AUTO_EXPAND_DELAY;
}
if (this.dragAutoExpandEffectClass === null || typeof this.dragAutoExpandEffectClass === 'undefined') {
this.dragAutoExpandEffectClass = DEFAULT_DRAG_AUTO_EXPAND_EFFECT_CLASS;
}
if (this.dragAutoExpandEffectDuration === null || typeof this.dragAutoExpandEffectDuration === 'undefined') {
this.dragAutoExpandEffectDuration = DEFAULT_DRAG_AUTO_EXPAND_EFFECT_DURATION;
}
if (this.dragAutoExpandContractOnLeave === null || typeof this.dragAutoExpandContractOnLeave === 'undefined') {
this.dragAutoExpandContractOnLeave = DEFAULT_DRAG_AUTO_EXPAND_CONTRACT_ON_LEAVE;
}
if (this.dragAutoExpandContractDelay === null || typeof this.dragAutoExpandContractDelay === 'undefined') {
this.dragAutoExpandContractDelay = DEFAULT_DRAG_AUTO_EXPAND_CONTRACT_DELAY;
}
if (this.dragEffectMoveOutClass === null || typeof this.dragEffectMoveOutClass === 'undefined') {
this.dragEffectMoveOutClass = DEFAULT_DRAG_EFFECT_MOVE_OUT_CLASS;
}
if (this.dragEffectMoveOutDuration === null || typeof this.dragEffectMoveOutDuration === 'undefined') {
this.dragEffectMoveOutDuration = DEFAULT_DRAG_EFFECT_MOVE_OUT_DURATION;
}
if (this.dragEffectMoveInClass === null || typeof this.dragEffectMoveInClass === 'undefined') {
this.dragEffectMoveInClass = DEFAULT_DRAG_EFFECT_MOVE_IN_CLASS;
}
if (this.dragEffectMoveInDuration === null || typeof this.dragEffectMoveInDuration === 'undefined') {
this.dragEffectMoveInDuration = DEFAULT_DRAG_EFFECT_MOVE_IN_DURATION;
}
this._initialParentConroller = this.getParent();
this._init();
}
/**
* @return {?}
*/
_init() {
// Check that it should be shown or not by checking its ascendants, if one of its ascendants is
// not expanding, so, this node should be hidden.
let /** @type {?} */ parent = this.controller.getParent();
while (parent !== null && typeof parent !== 'undefined') {
if (!parent.isExpanding()) {
// It should be hidden
this.setShowing(false);
break;
}
parent = parent.getParent();
}
// Check that its descendants should be shown or not by checking that this node is being expanded
// or not, if not, all of its descendants should be hidden.
if (!this.isExpanding()) {
this.contract();
}
// See that its parent or one of its ancestors' parent has been changed or not.
// If yes, it means that this node is being moved or relocated.
// So, play move-in effect.
if (this._isBeingRelocated()) {
this.playMoveInEffect();
}
}
/**
* @return {?}
*/
_isBeingRelocated() {
// This method will return true if this node is being relocated.
// (Its position in entire tree is being changed)
// Meaning that its parent or one of its ascendants' parent is being changed.
// Check that this node's parent is being changed or not
let /** @type {?} */ oldState = this.getOldState();
if (oldState !== null && typeof oldState !== 'undefined') {
let /** @type {?} */ oldParentData = null;
if (oldState.getComponentInstance() !== null && typeof oldState.getComponentInstance() !== 'undefined') {
// If there is a component instance, obtain old parent data from the
// component itself directly.
if (oldState.getComponentInstance()['_initialParentConroller'] !== null && typeof oldState.getComponentInstance()['_initialParentConroller'] !== 'undefined') {
oldParentData = oldState.getComponentInstance()['_initialParentConroller'].getData();
}
}
else {
if (oldState.getParent() !== null && typeof oldState.getParent() !== 'undefined') {
oldParentData = oldState.getParent().getData();
}
}
let /** @type {?} */ newParentData = null;
if (this.getParent() !== null && typeof this.getParent() !== 'undefined') {
newParentData = this.getParent().getData();
}
if (this.table.getRowGenerator().compareRowData(newParentData, oldParentData) !== 0) {
// Its parent is being changed
return true;
}
}
// Check for one of its ascendants' parent is being changed or not.
if (this.getParent() !== null && typeof this.getParent() !== 'undefined') {
if (this.getParent().getComponentInstance() !== null && typeof this.getParent().getComponentInstance() !== 'undefined') {
if (typeof this.getParent().getComponentInstance()._isBeingRelocated === 'function') {
return this.getParent().getComponentInstance()._isBeingRelocated();
}
}
}
return false;
}
/**
* @param {?} movedRow
* @return {?}
*/
onMoveFrom(movedRow) {
}
/**
* @return {?}
*/
onMoveToRoot() {
}
/**
* @param {?} show
* @return {?}
*/
setShowing(show) {
this.showing = show;
if (this.showing) {
$(this.elementRef.nativeElement).css('display', '');
}
else {
$(this.elementRef.nativeElement).css('display', 'none');
}
}
/**
* @return {?}
*/
isShowing() {
return this.showing;
}
/**
* @param {?} className
* @param {?=} parentRow
* @return {?}
*/
addStyleClassToDescendants(className, parentRow) {
if (parentRow === undefined) {
parentRow = /** @type {?} */ (this);
}
if (!parentRow.getChildren()) {
return;
}
for (let /** @type {?} */ child of parentRow.getChildren()) {
if (!child) {
continue;
}
if (child.getComponentInstance() && child.getComponentInstance()['elementRef']) {
$(child.getComponentInstance()['elementRef'].nativeElement).addClass(className);
}
this.addStyleClassToDescendants(className, child);
}
}
/**
* @param {?} className
* @param {?=} parentRow
* @return {?}
*/
removeStyleClassFromDescendants(className, parentRow) {
if (parentRow === undefined) {
parentRow = /** @type {?} */ (this);
}
if (!parentRow.getChildren()) {
return;
}
for (let /** @type {?} */ child of parentRow.getChildren()) {
if (!child) {
continue;
}
if (child.getComponentInstance() && child.getComponentInstance()['elementRef']) {
$(child.getComponentInstance()['elementRef'].nativeElement).removeClass(className);
}
this.removeStyleClassFromDescendants(className, child);
}
}
/**
* @return {?}
*/
setAutoExpandContractTimer() {
if (!this.autoExpanding) {
// We'll auto contract this node if it was auto expanded only.
return;
}
if (this.dragAutoExpandContractTimer !== null && typeof this.dragAutoExpandContractTimer !== 'undefined') {
// The timeout is ticking
return;
}
this.dragAutoExpandContractTimer = setTimeout(() => {
this.dragAutoExpandContractTimer = null;
this._contract();
this.autoExpanding = false;
}, this.dragAutoExpandContractDelay);
}
/**
* @return {?}
*/
cancelAutoExpandContractTimer() {
if (this.dragAutoExpandContractTimer !== null && typeof this.dragAutoExpandContractTimer !== 'undefined') {
clearTimeout(this.dragAutoExpandContractTimer);
this.dragAutoExpandContractTimer = null;
}
}
/**
* @return {?}
*/
_expand() {
if (this.controller === null || typeof this.controller === 'undefined') {
return;
}
// Delegate method call to controller
this.controller.expand();
}
/**
* @return {?}
*/
_contract() {
if (this.controller === null || typeof this.controller === 'undefined') {
return;
}
// Delegate method call to controller
this.controller.contract();
}
/**
* @return {?}
*/
_toggleExpand() {
if (this.controller === null || typeof this.controller === 'undefined') {
return;
}
// Delegate method call to controller
this.controller.toggleExpand();
}
/**
* @param {?} expand
* @return {?}
*/
_setExpanding(expand) {
if (this.controller === null || typeof this.controller === 'undefined') {
return;
}
// Delegate method call to controller
this.controller.setExpanding(expand);
}
/**
* @return {?}
*/
playMoveInEffect() {
// We do not chain playMoveInEffect() into its descendants here (like playMoveOutEffect()).
// Since, usually, this method will be called during ngOnInit(), so, its descendants'
// componentInstance should not be fully initialized.
return new Promise((resolve, reject) => {
if (this.dragMoveInEffectTimer !== null && typeof this.dragMoveInEffectTimer !== 'undefined') {
clearTimeout(this.dragMoveInEffectTimer);
}
if (this.dragMoveInEffectResolve !== null && typeof this.dragMoveInEffectResolve !== 'undefined') {
this.dragMoveInEffectResolve(false);
}
// Add move-in style class
if (this.elementRef !== null && typeof this.elementRef !== 'undefined') {
$(this.elementRef.nativeElement).addClass(this.dragEffectMoveInClass);
}
this.dragMoveInEffectTimer = setTimeout(() => {
try {
this.dragMoveInEffectTimer = null;
this.dragMoveInEffectResolve = null;
// Remove move-in style class
if (this.elementRef !== null && typeof this.elementRef !== 'undefined') {
$(this.elementRef.nativeElement).removeClass(this.dragEffectMoveInClass);
}
resolve(true);
}
catch (/** @type {?} */ e) {
reject(e);
}
}, this.dragEffectMoveInDuration);
this.dragMoveInEffectResolve = resolve;
});
}
/**
* @return {?}
*/
playMoveOutEffect() {
let /** @type {?} */ promises = [];
promises.push(new Promise((resolve, reject) => {
if (this.dragMoveOutEffectTimer !== null && typeof this.dragMoveOutEffectTimer !== 'undefined') {
clearTimeout(this.dragMoveOutEffectTimer);
}
if (this.dragMoveOutEffectResolve !== null && typeof this.dragMoveOutEffectResolve !== 'undefined') {
this.dragMoveOutEffectResolve(false);
}
// Add move-in style class
if (this.elementRef !== null && typeof this.elementRef !== 'undefined') {
$(this.elementRef.nativeElement).addClass(this.dragEffectMoveOutClass);
}
this.dragMoveOutEffectTimer = setTimeout(() => {
try {
this.dragMoveOutEffectTimer = null;
this.dragMoveOutEffectResolve = null;
// Remove move-in style class
if (this.elementRef !== null && typeof this.elementRef !== 'undefined') {
$(this.elementRef.nativeElement).removeClass(this.dragEffectMoveOutClass);
}
resolve(true);
}
catch (/** @type {?} */ e) {
reject(e);
}
}, this.dragEffectMoveOutDuration);
this.dragMoveOutEffectResolve = resolve;
}));
// Chain this effect into its descendants
for (let /** @type {?} */ child of this.getChildren()) {
if (child.getComponentInstance() !== null || typeof child.getComponentInstance() !== 'undefined') {
if (typeof child.getComponentInstance().playMoveOutEffect === 'function') {
promises.push(child.getComponentInstance().playMoveOutEffect());
}
}
}
return Promise.all(promises).then((result) => {
if (result !== null && Array.isArray(result) && result.length > 0) {
return result[0];
}
return false;
});
}
/**
* @param {?} controller
* @return {?}
*/
setController(controller) {
// Check that the given "controller" is an instance of ExpandableTableRowController or not?
if (controller !== null && typeof controller !== 'undefined') {
if (typeof controller['expand'] !== 'function') {
throw new Error('The given "controller" is not an instance of IExpandableTableRowController: ' + controller.constructor.name);
}
}
super.setController(controller);
}
/**
* @return {?}
*/
isAutoExpanding() {
return this.autoExpanding;
}
/**
* @return {?}
*/
getExpandLevel() {
let /** @type {?} */ result = 0;
if (this.controller !== null && typeof this.controller !== 'undefined') {
result = this.controller.getExpandLevel();
}
return result;
}
/**
* @return {?}
*/
expand() {
this.autoExpanding = false;
this._expand();
}
/**
* @return {?}
*/
contract() {
this.autoExpanding = false;
this._contract();
}
/**
* @return {?}
*/
toggleExpand() {
this.autoExpanding = false;
this._toggleExpand();
}
/**
* @param {?} expand
* @return {?}
*/
setExpanding(expand) {
this.autoExpanding = false;
this._setExpanding(expand);
}
/**
* @return {?}
*/
isExpanding() {
if (this.controller === null || typeof this.controller === 'undefined') {
return true;
}
// Delegate method call to controller
return this.controller.isExpanding();
}
/**
* @return {?}
*/
getParent() {
if (this.controller === null || typeof this.controller === 'undefined') {
return null;
}
// Delegate method call to controller
return this.controller.getParent();
}
/**
* @param {?} parent
* @return {?}
*/
setParent(parent) {
if (this.controller === null || typeof this.controller === 'undefined') {
return;
}
// Delegate method call to controller
if (parent instanceof ExpandableTableRow) {
this.controller.setParent((/** @type {?} */ (parent)).getController());
}
else {
this.controller.setParent(parent);
}
}
/**
* @return {?}
*/
getChildren() {
if (this.controller === null || typeof this.controller === 'undefined') {
return [];
}
// Delegate method call to controller
return this.controller.getChildren();
}
/**
* @return {?}
*/
hasChildren() {
if (this.controller === null || typeof this.controller === 'undefined') {
return false;
}
// Delegate method call to controller
return this.controller.hasChildren();
}
/**
* @param {?} child
* @return {?}
*/
hasChild(child) {
if (this.controller === null || typeof this.controller === 'undefined') {
return false;
}
// Delegate method call to controller
return this.controller.hasChild(child);
}
/**
* @param {?} event
* @return {?}
*/
onDragStart(event) {
super.onDragStart(event);
// Mark all of its descendants as dragging (add class ".dragging").
this.addStyleClassToDescendants(Draggable.CLASS_NAME_DRAGGING);
}
/**
* @param {?} event
* @return {?}
*/
onDragEnd(event) {
super.onDragEnd(event);
// Remove .dragging class from its descendants
this.removeStyleClassFromDescendants(Draggable.CLASS_NAME_DRAGGING);
}
/**
* @param {?} event
* @return {?}
*/
onDragOver(event) {
super.onDragOver(event);
if (this.dragAutoExpandEnabled) {
if (this.autoExpanding) {
// If the mouse was leaved but re-enter this node again before contract delay was reached,
// we've to cancel contract dela timer to make this node still open.
this.cancelAutoExpandContractTimer();
}
// If the mouse was entered into descendant node auto expaned by its ancestors, we've to cancel
// auto contract timer from all of its ancestors.
if (this.controller !== null && typeof this.controller !== 'undefined') {
let /** @type {?} */ parent = this.controller.getParent();
while (parent !== null && typeof parent !== 'undefined') {
// If this ancestor is auto expanding, cancel its contract timer.
if (parent.getComponentInstance() &&
typeof parent.getComponentInstance().isAutoExpanding === 'function' &&
parent.getComponentInstance().isAutoExpanding()) {
if (typeof parent.getComponentInstance().cancelAutoExpandContractTimer === 'function') {
parent.getComponentInstance().cancelAutoExpandContractTimer();
}
}
parent = parent.getParent();
}
}
// We're going to auto expand this row if it is contracting.
if (!this.isExpanding() && this.hasChildren()) {
// We'll auto expand it if it is not being auto expanded.
if (!this.autoExpanding && (this.dragAutoExpandTimer === null || typeof this.dragAutoExpandTimer === 'undefined')) {
// Wait for auto expand delay
this.dragAutoExpandTimer = setTimeout(() => {
this.dragAutoExpandTimer = null;
// Mark this node as autoExpanding
this.autoExpanding = true;
if (this.elementRef !== null && typeof this.elementRef !== 'undefined') {
// Play effect (default: blink)
$(this.elementRef.nativeElement).addClass(this.dragAutoExpandEffectClass);
// Play until duration end then reset it
this.dragAutoExpandEffectResetTimer = setTimeout(() => {
this.dragAutoExpandEffectResetTimer = null;
// Reset effect
$(this.elementRef.nativeElement).removeClass(this.dragAutoExpandEffectClass);
// Then, auto expand this node
this._expand();
}, this.dragAutoExpandEffectDuration);
}
else {
// Auto expand this node immediately (no effect will be played)
this._expand();
}
}, this.dragAutoExpandDelay);
}
}
}
}
/**
* @param {?} event
* @return {?}
*/
onDragLeave(event) {
super.onDragLeave(event);
if (this.dragAutoExpandEnabled) {
if (this.autoExpanding) {
// Auto contract this node after delay timer reached.
this.setAutoExpandContractTimer();
}
else {
// If this node was leaved before auto expand delay timer reached out, cancel it.
if (this.dragAutoExpandTimer !== null && typeof this.dragAutoExpandTimer !== 'undefined') {
clearTimeout(this.dragAutoExpandTimer);
this.dragAutoExpandTimer = null;
}
}
// If this node is descendant of auto expanding ancestors, we've to tell all of its ancestors to
// auto contract themselves.
if (this.controller !== null && typeof this.controller !== 'undefined') {
let /** @type {?} */ parent = this.controller.getParent();
while (parent !== null && typeof parent !== 'undefined') {
// If this ancestor is auto expanding, set its auto contract timer.
if (parent.getComponentInstance() &&
typeof parent.getComponentInstance().isAutoExpanding === 'function' &&
parent.getComponentInstance().isAutoExpanding()) {
if (typeof parent.getComponentInstance().setAutoExpandContractTimer === 'function') {
parent.getComponentInstance().setAutoExpandContractTimer();
}
}
parent = parent.getParent();
}
}
}
}
/**
* @param {?} event
* @param {?} data
* @return {?}
*/
onDropAccepted(event, data) {
super.onDropAccepted(event, data);
// Find dragged row in this table
let /** @type {?} */ dragRow = /** @type {?} */ (this.table.findRow(data));
if (dragRow === null || typeof dragRow === 'undefined') {
return;
}
dragRow.getComponentInstance().moveTo(this);
}
/**
* @return {?}
*/
moveToRoot() {
return this.moveTo(null);
}
/**
* @param {?} toRow
* @return {?}
*/
moveTo(toRow) {
// Passing "toRow" = null mean moving to ROOT level
if (typeof toRow === 'undefined') {
toRow = null;
}
return this.playMoveOutEffect().then((result) => {
if (!result) {
return false;
}
// Set new parent to this row
// toRow = null means maving to ROOT
this.setParent(toRow);
if (toRow !== null) {
// Trigger onMoveFrom event handler from new parent's sub class
toRow.onMoveFrom(this);
}
else {
// Trigger onMoveToRoot event handler from this node's sub class
this.onMoveToRoot();
}
// Then, re-render the table
this.table.rerender(true);
return true;
});
}
/**
* @return {?}
*/
getOldState() {
return /** @type {?} */ (super.getOldState());
}
}
ExpandableTableRow.TYPE_NAME = TYPE_NAME;
ExpandableTableRow.DEFAULT_DRAG_AUTO_EXPAND_ENABLED = DEFAULT_DRAG_AUTO_EXPAND_ENABLED;
ExpandableTableRow.DEFAULT_DRAG_AUTO_EXPAND_DELAY = DEFAULT_DRAG_AUTO_EXPAND_DELAY;
ExpandableTableRow.DEFAULT_DRAG_AUTO_EXPAND_EFFECT_CLASS = DEFAULT_DRAG_AUTO_EXPAND_EFFECT_CLASS;
ExpandableTableRow.DEFAULT_DRAG_AUTO_EXPAND_EFFECT_DURATION = DEFAULT_DRAG_AUTO_EXPAND_EFFECT_DURATION;
ExpandableTableRow.DEFAULT_DRAG_AUTO_EXPAND_CONTRACT_ON_LEAVE = DEFAULT_DRAG_AUTO_EXPAND_CONTRACT_ON_LEAVE;
ExpandableTableRow.DEFAULT_DRAG_AUTO_EXPAND_CONTRACT_DELAY = DEFAULT_DRAG_AUTO_EXPAND_CONTRACT_DELAY;
ExpandableTableRow.DEFAULT_DRAG_EFFECT_MOVE_OUT_CLASS = DEFAULT_DRAG_EFFECT_MOVE_OUT_CLASS;
ExpandableTableRow.DEFAULT_DRAG_EFFECT_MOVE_OUT_DURATION = DEFAULT_DRAG_EFFECT_MOVE_OUT_DURATION;
ExpandableTableRow.DEFAULT_DRAG_EFFECT_MOVE_IN_CLASS = DEFAULT_DRAG_EFFECT_MOVE_OUT_CLASS;
ExpandableTableRow.DEFAULT_DRAG_EFFECT_MOVE_IN_DURATION = DEFAULT_DRAG_EFFECT_MOVE_OUT_DURATION;
ExpandableTableRow.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: `<ng-template [ngIf]="getTable() !== undefined">
<div *ngFor="let cell of getTable().getModel().getRowModel().getCellModels(); let idx = index"
[style.width]="getTable().getModel().getColumnModels()[idx].getWidth()"
[style.max-width]="getTable().getModel().getColumnModels()[idx].getWidth()"
[attr.class]="'phx-table-cell' + (cell.getCSSClass() ? ' ' + cell.getCSSClass() : '')"
[phxDroppable]="this" (click)="onTableRowCellClicked($event, idx)" (dblclick)="onTableRowCellDblClicked($event, idx)">
<phx-component-wrapper [type]="cell.getComponentType()"
[options]="cell.getComponentOptions()"
[handler]="_getWrapperHandler(idx)"
[dataParent]="this"
[data]="getData()"
*ngIf="!isCellEditingMode(idx)">
</phx-component-wrapper>
<phx-component-wrapper [type]="cell.getEditorComponentType()"
[options]="cell.getEditorComponentOptions()"
[handler]="_getWrapperHandler(idx)"
[dataParent]="this"
[data]="getData()"
*ngIf="isCellEditingMode(idx)">
</phx-component-wrapper>
</div>
</ng-template>
`
},] },
];
/** @nocollapse */
ExpandableTableRow.ctorParameters = () => [
{ type: ElementRef, },
{ type: NeedFocusService, },
];
ExpandableTableRow.propDecorators = {
"dataParent": [{ type: Input },],
"ignoreParentData": [{ type: Input },],
"data": [{ type: Input },],
"ignoreParentDisabled": [{ type: Input },],
"delegateHistory": [{ type: Input },],
"onDisabled": [{ type: Input },],
"onEnabled": [{ type: Input },],
"loadingEnabled": [{ type: Input },],
"i18nKey": [{ type: Input },],
"bypass": [{ type: Input, args: ['i18nBypass',] },],
"options": [{ type: Input },],
"disabled": [{ type: Input },],
"help": [{ type: Input },],
"dropEffectRejectClass": [{ type: Input },],
"dropEffectRejectDuration": [{ type: Input },],
"dropDataTransferDropEffect": [{ type: Input },],
"dragDataTransferEffectAllowed": [{ type: Input },],
"beforeCellClickEvent": [{ type: Output, args: ['phxBeforeCellClick',] },],
"beforeCellDblClickEvent": [{ type: Output, args: ['phxBeforeCellDblClick',] },],
"beforeCellLostFocusEvent": [{ type: Output, args: ['phxBeforeCellLostFocus',] },],
"beforeCellFocusEvent": [{ type: Output, args: ['phxBeforeCellFocus',] },],
"cellClickEvent": [{ type: Output, args: ['phxCellClick',] },],
"cellDblClickEvent": [{ type: Output, args: ['phxCellDblClick',] },],
"cellLostFocusEvent": [{ type: Output, args: ['phxCellLostFocus',] },],
"cellFocusEvent": [{ type: Output, args: ['phxCellFocus',] },],
"rowDragEvent": [{ type: Output, args: ['phxRowDrag',] },],
"rowDragStartEvent": [{ type: Output, args: ['phxRowDragStart',] },],
"rowDragEndEvent": [{ type: Output, args: ['phxRowDragEnd',] },],
"rowDragEnterEvent": [{ type: Output, args: ['phxRowDragEnter',] },],
"rowDragOverEvent": [{ type: Output, args: ['phxRowDragOver',] },],
"rowDragLeaveEvent": [{ type: Output, args: ['phxRowDragLeave',] },],
"rowDropEvent": [{ type: Output, args: ['phxRowDrop',] },],
"rowDropAcceptedEvent": [{ type: Output, args: ['phxRowDropAccepted',] },],
"rowDropRejectedEvent": [{ type: Output, args: ['phxRowDropRejected',] },],
"changeEvent": [{ type: Output, args: ['phxChange',] },],
"beforeChangeEvent": [{ type: Output, args: ['phxBeforeChange',] },],
"dragAutoExpandEnabled": [{ type: Input },],
"dragAutoExpandDelay": [{ type: Input },],
"dragAutoExpandEffectClass": [{ type: Input },],
"dragAutoExpandEffectDuration": [{ type: Input },],
"dragAutoExpandContractOnLeave": [{ type: Input },],
"dragAutoExpandContractDelay": [{ type: Input },],
"dragEffectMoveOutClass": [{ type: Input },],
"dragEffectMoveOutDuration": [{ type: Input },],
"dragEffectMoveInClass": [{ type: Input },],
"dragEffectMoveInDuration": [{ type: Input },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], ExpandableTableRow.prototype, "dataParent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ExpandableTableRow.prototype, "ignoreParentData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], ExpandableTableRow.prototype, "data", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ExpandableTableRow.prototype, "ignoreParentDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ExpandableTableRow.prototype, "delegateHistory", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], ExpandableTableRow.prototype, "onDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], ExpandableTableRow.prototype, "onEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ExpandableTableRow.prototype, "loadingEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ExpandableTableRow.prototype, "i18nKey", void 0);
tslib_1.__decorate([
Option('i18nBypass'),
tslib_1.__metadata("design:type", Boolean)
], ExpandableTableRow.prototype, "bypass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ExpandableTableRow.prototype, "disabled", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", Object)
], ExpandableTableRow.prototype, "help", void 0);
tslib_1.__decorate([
Option('drop.effect.reject.class'),
tslib_1.__metadata("design:type", String)
], ExpandableTableRow.prototype, "dropEffectRejectClass", void 0);
tslib_1.__decorate([
Option('drop.effect.reject.duration'),
tslib_1.__metadata("design:type", Number)
], ExpandableTableRow.prototype, "dropEffectRejectDuration", void 0);
tslib_1.__decorate([
Option('drop.dataTransfer.dropEffect'),
tslib_1.__metadata("design:type", String)
], ExpandableTableRow.prototype, "dropDataTransferDropEffect", void 0);
tslib_1.__decorate([
Option('drag.dataTransfer.effectAllowed'),
tslib_1.__metadata("design:type", String)
], ExpandableTableRow.prototype, "dragDataTransferEffectAllowed", void 0);
tslib_1.__decorate([
Option('beforeCellClick'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "beforeCellClickEvent", void 0);
tslib_1.__decorate([
Option('beforeCellDblClick'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "beforeCellDblClickEvent", void 0);
tslib_1.__decorate([
Option('beforeCellLostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "beforeCellLostFocusEvent", void 0);
tslib_1.__decorate([
Option('beforeCellFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "beforeCellFocusEvent", void 0);
tslib_1.__decorate([
Option('cellClick'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "cellClickEvent", void 0);
tslib_1.__decorate([
Option('cellDblClick'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "cellDblClickEvent", void 0);
tslib_1.__decorate([
Option('cellLostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "cellLostFocusEvent", void 0);
tslib_1.__decorate([
Option('cellFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "cellFocusEvent", void 0);
tslib_1.__decorate([
Option('rowDrag'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "rowDragEvent", void 0);
tslib_1.__decorate([
Option('rowDragStart'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "rowDragStartEvent", void 0);
tslib_1.__decorate([
Option('rowDragEnd'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "rowDragEndEvent", void 0);
tslib_1.__decorate([
Option('rowDragEnter'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "rowDragEnterEvent", void 0);
tslib_1.__decorate([
Option('rowDragOver'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "rowDragOverEvent", void 0);
tslib_1.__decorate([
Option('rowDragLeave'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "rowDragLeaveEvent", void 0);
tslib_1.__decorate([
Option('rowDrop'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "rowDropEvent", void 0);
tslib_1.__decorate([
Option('rowDropAccepted'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "rowDropAcceptedEvent", void 0);
tslib_1.__decorate([
Option('rowDropRejected'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "rowDropRejectedEvent", void 0);
tslib_1.__decorate([
Option('change'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "changeEvent", void 0);
tslib_1.__decorate([
Option('beforeChange'),
tslib_1.__metadata("design:type", EventEmitter)
], ExpandableTableRow.prototype, "beforeChangeEvent", void 0);
tslib_1.__decorate([
Option('drag.autoExpand.enabled'),
tslib_1.__metadata("design:type", Boolean)
], ExpandableTableRow.prototype, "dragAutoExpandEnabled", void 0);
tslib_1.__decorate([
Option('drag.autoExpand.delay'),
tslib_1.__metadata("design:type", Number)
], ExpandableTableRow.prototype, "dragAutoExpandDelay", void 0);
tslib_1.__decorate([
Option('drag.autoExpand.effect.class'),
tslib_1.__metadata("design:type", String)
], ExpandableTableRow.prototype, "dragAutoExpandEffectClass", void 0);
tslib_1.__decorate([
Option('drag.autoExpand.effect.duration'),
tslib_1.__metadata("design:type", Number)
], ExpandableTableRow.prototype, "dragAutoExpandEffectDuration", void 0);
tslib_1.__decorate([
Option('drag.autoExpand.contractOnLeave'),
tslib_1.__metadata("design:type", Boolean)
], ExpandableTableRow.prototype, "dragAutoExpandContractOnLeave", void 0);
tslib_1.__decorate([
Option('drag.autoExpand.contractDelay'),
tslib_1.__metadata("design:type", Number)
], ExpandableTableRow.prototype, "dragAutoExpandContractDelay", void 0);
tslib_1.__decorate([
Option('drag.effect.moveOut.class'),
tslib_1.__metadata("design:type", String)
], ExpandableTableRow.prototype, "dragEffectMoveOutClass", void 0);
tslib_1.__decorate([
Option('drag.effect.moveOut.duration'),
tslib_1.__metadata("design:type", Number)
], ExpandableTableRow.prototype, "dragEffectMoveOutDuration", void 0);
tslib_1.__decorate([
Option('drag.effect.moveIn.class'),
tslib_1.__metadata("design:type", String)
], ExpandableTableRow.prototype, "dragEffectMoveInClass", void 0);
tslib_1.__decorate([
Option('drag.effect.moveIn.duration'),
tslib_1.__metadata("design:type", Number)
], ExpandableTableRow.prototype, "dragEffectMoveInDuration", void 0);
function ExpandableTableRow_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ExpandableTableRow.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ExpandableTableRow.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
ExpandableTableRow.propDecorators;
/** @type {?} */
ExpandableTableRow.TYPE_NAME;
/** @type {?} */
ExpandableTableRow.DEFAULT_DRAG_AUTO_EXPAND_ENABLED;
/** @type {?} */
ExpandableTableRow.DEFAULT_DRAG_AUTO_EXPAND_DELAY;
/** @type {?} */
ExpandableTableRow.DEFAULT_DRAG_AUTO_EXPAND_EFFECT_CLASS;
/** @type {?} */
ExpandableTableRow.DEFAULT_DRAG_AUTO_EXPAND_EFFECT_DURATION;
/** @type {?} */
ExpandableTableRow.DEFAULT_DRAG_AUTO_EXPAND_CONTRACT_ON_LEAVE;
/** @type {?} */
ExpandableTableRow.DEFAULT_DRAG_AUTO_EXPAND_CONTRACT_DELAY;
/** @type {?} */
ExpandableTableRow.DEFAULT_DRAG_EFFECT_MOVE_OUT_CLASS;
/** @type {?} */
ExpandableTableRow.DEFAULT_DRAG_EFFECT_MOVE_OUT_DURATION;
/** @type {?} */
ExpandableTableRow.DEFAULT_DRAG_EFFECT_MOVE_IN_CLASS;
/** @type {?} */
ExpandableTableRow.DEFAULT_DRAG_EFFECT_MOVE_IN_DURATION;
/** @type {?} */
ExpandableTableRow.prototype.dataParent;
/** @type {?} */
ExpandableTableRow.prototype.ignoreParentData;
/** @type {?} */
ExpandableTableRow.prototype.data;
/** @type {?} */
ExpandableTableRow.prototype.ignoreParentDisabled;
/** @type {?} */
ExpandableTableRow.prototype.delegateHistory;
/** @type {?} */
ExpandableTableRow.prototype.onDisabled;
/** @type {?} */
ExpandableTableRow.prototype.onEnabled;
/** @type {?} */
ExpandableTableRow.prototype.loadingEnabled;
/** @type {?} */
ExpandableTableRow.prototype.i18nKey;
/** @type {?} */
ExpandableTableRow.prototype.bypass;
/** @type {?} */
ExpandableTableRow.prototype.options;
/** @type {?} */
ExpandableTableRow.prototype.disabled;
/** @type {?} */
ExpandableTableRow.prototype.help;
/** @type {?} */
ExpandableTableRow.prototype.dropEffectRejectClass;
/** @type {?} */
ExpandableTableRow.prototype.dropEffectRejectDuration;
/** @type {?} */
ExpandableTableRow.prototype.dropDataTransferDropEffect;
/** @type {?} */
ExpandableTableRow.prototype.dragDataTransferEffectAllowed;
/** @type {?} */
ExpandableTableRow.prototype.beforeCellClickEvent;
/** @type {?} */
ExpandableTableRow.prototype.beforeCellDblClickEvent;
/** @type {?} */
ExpandableTableRow.prototype.beforeCellLostFocusEvent;
/** @type {?} */
ExpandableTableRow.prototype.beforeCellFocusEvent;
/** @type {?} */
ExpandableTableRow.prototype.cellClickEvent;
/** @type {?} */
ExpandableTableRow.prototype.cellDblClickEvent;
/** @type {?} */
ExpandableTableRow.prototype.cellLostFocusEvent;
/** @type {?} */
ExpandableTableRow.prototype.cellFocusEvent;
/** @type {?} */
ExpandableTableRow.prototype.rowDragEvent;
/** @type {?} */
ExpandableTableRow.prototype.rowDragStartEvent;
/** @type {?} */
ExpandableTableRow.prototype.rowDragEndEvent;
/** @type {?} */
ExpandableTableRow.prototype.rowDragEnterEvent;
/** @type {?} */
ExpandableTableRow.prototype.rowDragOverEvent;
/** @type {?} */
ExpandableTableRow.prototype.rowDragLeaveEvent;
/** @type {?} */
ExpandableTableRow.prototype.rowDropEvent;
/** @type {?} */
ExpandableTableRow.prototype.rowDropAcceptedEvent;
/** @type {?} */
ExpandableTableRow.prototype.rowDropRejectedEvent;
/** @type {?} */
ExpandableTableRow.prototype.changeEvent;
/** @type {?} */
ExpandableTableRow.prototype.beforeChangeEvent;
/** @type {?} */
ExpandableTableRow.prototype.dragAutoExpandEnabled;
/** @type {?} */
ExpandableTableRow.prototype.dragAutoExpandDelay;
/** @type {?} */
ExpandableTableRow.prototype.dragAutoExpandEffectClass;
/** @type {?} */
ExpandableTableRow.prototype.dragAutoExpandEffectDuration;
/** @type {?} */
ExpandableTableRow.prototype.dragAutoExpandContractOnLeave;
/** @type {?} */
ExpandableTableRow.prototype.dragAutoExpandContractDelay;
/** @type {?} */
ExpandableTableRow.prototype.dragEffectMoveOutClass;
/** @type {?} */
ExpandableTableRow.prototype.dragEffectMoveOutDuration;
/** @type {?} */
ExpandableTableRow.prototype.dragEffectMoveInClass;
/** @type {?} */
ExpandableTableRow.prototype.dragEffectMoveInDuration;
/** @type {?} */
ExpandableTableRow.prototype.controller;
/** @type {?} */
ExpandableTableRow.prototype.showing;
/** @type {?} */
ExpandableTableRow.prototype.dragAutoExpandTimer;
/** @type {?} */
ExpandableTableRow.prototype.dragAutoExpandEffectResetTimer;
/** @type {?} */
ExpandableTableRow.prototype.dragAutoExpandContractTimer;
/** @type {?} */
ExpandableTableRow.prototype.autoExpanding;
/** @type {?} */
ExpandableTableRow.prototype.dragMoveOutEffectTimer;
/** @type {?} */
ExpandableTableRow.prototype.dragMoveOutEffectResolve;
/** @type {?} */
ExpandableTableRow.prototype.dragMoveInEffectTimer;
/** @type {?} */
ExpandableTableRow.prototype.dragMoveInEffectResolve;
/** @type {?} */
ExpandableTableRow.prototype._initialParentConroller;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwYW5kYWJsZVRhYmxlUm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC90YWJsZS9FeHBhbmRhYmxlVGFibGVSb3cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBSTFFLHVCQUFNLFNBQVMsR0FBVywwQkFBMEIsQ0FBQztBQUVyRCx1QkFBTSxnQ0FBZ0MsR0FBWSxJQUFJLENBQUM7QUFDdkQsdUJBQU0sOEJBQThCLEdBQVcsR0FBRyxDQUFDO0FBQ25ELHVCQUFNLHFDQUFxQyxHQUFXLGFBQWEsQ0FBQztBQUNwRSx1QkFBTSx3Q0FBd0MsR0FBVyxHQUFHLENBQUM7QUFDN0QsdUJBQU0sMENBQTBDLEdBQVksSUFBSSxDQUFDO0FBQ2pFLHVCQUFNLHVDQUF1QyxHQUFXLEdBQUcsQ0FBQztBQUM1RCx1QkFBTSxrQ0FBa0MsR0FBVyxVQUFVLENBQUM7QUFDOUQsdUJBQU0scUNBQXFDLEdBQVcsR0FBRyxDQUFDO0FBQzFELHVCQUFNLGlDQUFpQyxHQUFXLFNBQVMsQ0FBQztBQUM1RCx1QkFBTSxvQ0FBb0MsR0FBVyxJQUFJLENBQUM7QUE2QjFELE1BQU0seUJBQTBCLFNBQVEsZUFBZTs7Ozs7Z0JBMktsQyxLQUFpQixFQUFFLGdCQUFrQztRQUN0RSxLQUFLLENBQUMsS0FBSyxF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