Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | 37x 37x 37x 2x 2x 23x 7x 38x 4x 73x 4x 4x 4x 19x 19x 8x 8x 4x 19x 19x 19x 19x 19x 11x 11x 37x 37x 1x 1x 37x | import { BehaviorSubject, Observable } from 'rxjs';
import { DynamicFormClassType } from '../dynamic-form-config/dynamic-form-class-type';
import { DynamicFormElement } from '../dynamic-form-element/dynamic-form-element';
import { assignExpressionData } from '../dynamic-form-expression/dynamic-form-expression-helpers';
import { DynamicForm } from '../dynamic-form/dynamic-form';
import { DynamicFormDefinition } from '../dynamic-form/dynamic-form-definition';
import { DynamicFormTemplate } from '../dynamic-form/dynamic-form-template';
import { DynamicFormBuilder } from '../dynamic-form/dynamic-form.builder';
import { DynamicFormActionDefinition } from './dynamic-form-action-definition';
import { DynamicFormActionExpressionData } from './dynamic-form-action-expression-data';
import { DynamicFormActionExpressions } from './dynamic-form-action-expressions';
import { DynamicFormActionTemplate } from './dynamic-form-action-template';
import { DynamicFormActionType } from './dynamic-form-action-type';
import { DynamicFormDialog } from './dynamic-form-dialog';
export class DynamicFormAction<
Template extends DynamicFormActionTemplate = DynamicFormActionTemplate,
Definition extends DynamicFormActionDefinition<Template> = DynamicFormActionDefinition<Template>,
Type extends DynamicFormActionType = DynamicFormActionType
> extends DynamicFormElement<Template, Definition, undefined, DynamicFormActionExpressionData, DynamicFormActionExpressions, Type> {
private readonly _dialogOpenSubject = new BehaviorSubject(false);
private readonly _dialogOpenChanges = this._dialogOpenSubject.asObservable();
protected _dialog: DynamicFormDialog;
constructor(
builder: DynamicFormBuilder,
root: DynamicForm,
parent: DynamicFormElement,
definition: Definition,
type: Type,
) {
super(builder, root, parent, definition, type);
}
override get classType(): DynamicFormClassType { return 'action'; }
get disabled(): boolean { return this.template.disabled; }
get dialogOpen(): boolean { return this._dialogOpenSubject.value; }
get dialogOpenChanges(): Observable<boolean> { return this._dialogOpenChanges; }
get dialogDefinition(): DynamicFormDefinition { return this.definition.dialogDefinition; }
get dialogTemplate(): DynamicFormTemplate { return this.dialogDefinition.template; }
get dialog(): DynamicFormDialog { return this._dialog; }
get dialogChildren(): DynamicFormElement[] { return this._dialog.children; }
get dialogHeaderActions(): DynamicFormAction[] { return this._dialog.headerActions; }
get dialogFooterActions(): DynamicFormAction[] { return this._dialog.footerActions; }
override init(): void {
super.init();
this.initDialog();
}
openDialog(): void {
return this.dialog && !this.dialogOpen && this._dialogOpenSubject.next(true);
}
closeDialog(): void {
return this.dialog && this.dialogOpen && this._dialogOpenSubject.next(false);
}
toggleDialog(): void {
return this.dialog && this._dialogOpenSubject.next(!this.dialogOpen);
}
protected getId(): string {
return this._builder.getActionId(this);
}
protected override initId(): void {
this.definition.id = this.getId();
}
protected override getExpressions(): DynamicFormActionExpressions {
return this._builder.createActionExpressions(this);
}
protected override getChildren(): any[] {
return undefined;
}
protected initDialog(): void {
if (this.dialogDefinition) {
this._dialog = new DynamicFormDialog(this._builder, this, this.dialogDefinition, {});
this._dialog.init();
}
}
protected override createExpressionData(): DynamicFormActionExpressionData {
const expressionData = super.createExpressionData() as DynamicFormActionExpressionData;
assignExpressionData(expressionData, {
dialog: () => this.dialog ? this.dialog.expressionData : undefined,
disabled: () => this.disabled,
});
return expressionData;
}
}
|