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 | 14x 14x 14x 14x 14x 14x 5x 10x 4x 4x 5x 21x 2x 7x 7x 7x 7x 2x 2x 6x 2x 2x 8x 8x 4x 7x 7x 7x 7x | import { BehaviorSubject, Observable } from 'rxjs'; import { DynamicFormAction } from '../../dynamic-form-action/dynamic-form-action'; import { DynamicForm } from '../../dynamic-form/dynamic-form'; import { DynamicFormBuilder } from '../../dynamic-form/dynamic-form.builder'; import { DynamicFormElement } from '../dynamic-form-element'; import { DynamicFormElementType } from '../dynamic-form-element-type'; import { DynamicFormModalDefinition } from './dynamic-form-modal-definition'; import { DynamicFormModalTemplate } from './dynamic-form-modal-template'; export class DynamicFormModal< Template extends DynamicFormModalTemplate = DynamicFormModalTemplate, Definition extends DynamicFormModalDefinition<Template> = DynamicFormModalDefinition<Template> > extends DynamicFormElement<Template, Definition> { private readonly _isOpenSubject: BehaviorSubject<boolean>; private readonly _isOpenChanges: Observable<boolean>; protected _trigger: DynamicFormAction; protected _headerActions: DynamicFormAction[] = []; protected _footerActions: DynamicFormAction[] = []; constructor( builder: DynamicFormBuilder, root: DynamicForm, parent: DynamicFormElement, definition: Definition, type: DynamicFormElementType, ) { super(builder, root, parent, definition, type); this._isOpenSubject = new BehaviorSubject(false); this._isOpenChanges = this._isOpenSubject.asObservable(); this.extendExpressionData({ isOpen: () => this.isOpen, maximized: () => this.template.maximized, }); } get trigger(): DynamicFormAction { return this._trigger; } get headerActions(): DynamicFormAction[] { return this._headerActions; } get footerActions(): DynamicFormAction[] { return this._footerActions; } get isOpen(): boolean { return this._isOpenSubject.value; } get isOpenChanges(): Observable<boolean> { return this._isOpenChanges; } override init(): void { super.init(); this.initTrigger(); this.initHeaderActions(); this.initFooterActions(); } open(): void { return !this.isOpen && this.toggle(); } close(): void { return this.isOpen && this.toggle(); } toggle(): void { this._isOpenSubject.next(!this.isOpen); } maximize(): void { return !this.template.maximized && this.toggleSize(); } minimize(): void { return this.template.maximized && this.toggleSize(); } toggleSize(): void { const descriptor = Object.getOwnPropertyDescriptor(this.template, 'maximized'); if (!descriptor || descriptor.writable) { this.template.maximized = !this.template.maximized; } } protected override getChildren(): DynamicFormElement[] { return this._builder.createFormElements(this.root, this.parent, this.definition.children); } protected initTrigger(): void { this._trigger = this._builder.createFormAction(this.root, this, this.definition.trigger); } protected initHeaderActions(): void { this._headerActions = this._builder.createFormActions(this.root, this, this.definition.headerActions) || []; } protected initFooterActions(): void { this._footerActions = this._builder.createFormActions(this.root, this, this.definition.footerActions) || []; } } |