import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; import { ReferenceFieldsUI } from '@core/typings/ui/reference-fields.typing'; import { ComponentHelperService } from '@features/formio/services/component-helper/component-helper.service'; import { ReferenceFieldsService } from '@features/reference-fields/services/reference-fields.service'; import { FormBuilderActions } from '../form-builder.typing'; import { FormBuilderService } from '../services/form-builder/form-builder.service'; @Component({ selector: 'gc-form-builder-component-actions', templateUrl: './form-builder-component-actions.component.html', styleUrls: ['./form-builder-component-actions.component.scss'] }) export class FormBuilderComponentActionsComponent implements OnChanges { @Input() componentKey: string; @Input() componentType: string; @Output() actionClick = new EventEmitter(); FormBuilderActions = FormBuilderActions; allowPasteInto: boolean; isInvalidType: boolean; get clipboardFull () { return !!this.formBuilderService.copiedComponent; } constructor ( private formBuilderService: FormBuilderService, private componentHelper: ComponentHelperService, private referenceFieldService: ReferenceFieldsService ) { } ngOnChanges (changes: SimpleChanges) { if (changes.componentType) { const isStandardComponent = this.componentHelper.isStandardComponent( this.componentType ); const invalidTypes = [ ReferenceFieldsUI.ReferenceFieldTypes.Table, ReferenceFieldsUI.ReferenceFieldTypes.Subset, ReferenceFieldsUI.ReferenceFieldTypes.ExternalAPI, ReferenceFieldsUI.ReferenceFieldTypes.Aggregate ]; const field = this.referenceFieldService.getReferenceFieldFromCompType(this.componentType); const isValidType = !isStandardComponent && !invalidTypes.includes(field?.type); this.isInvalidType = !isValidType; this.allowPasteInto = this.componentHelper.allowPasteIntoContainer( this.componentType ); } } }