diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts index 3ba0b39a0e..699543f29a 100644 --- a/src/app/core/core.module.ts +++ b/src/app/core/core.module.ts @@ -9,8 +9,6 @@ import { Action, StoreConfig, StoreModule } from '@ngrx/store'; import { MyDSpaceGuard } from '../my-dspace-page/my-dspace.guard'; import { isNotEmpty } from '../shared/empty.util'; -import { FormBuilderService } from '../shared/form/builder/form-builder.service'; -import { FormService } from '../shared/form/form.service'; import { HostWindowService } from '../shared/host-window.service'; import { MenuService } from '../shared/menu/menu.service'; import { EndpointMockingRestService } from '../shared/mocks/dspace-rest/endpoint-mocking-rest.service'; @@ -138,9 +136,6 @@ import { import { Registration } from './shared/registration.model'; import { MetadataSchemaDataService } from './data/metadata-schema-data.service'; import { MetadataFieldDataService } from './data/metadata-field-data.service'; -import { - DsDynamicTypeBindRelationService -} from '../shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service'; import { TokenResponseParsingService } from './auth/token-response-parsing.service'; import { SubmissionCcLicenseDataService } from './submission/submission-cc-license-data.service'; import { SubmissionCcLicence } from './submission/models/submission-cc-license.model'; @@ -150,7 +145,6 @@ import { VocabularyEntry } from './submission/vocabularies/models/vocabulary-ent import { Vocabulary } from './submission/vocabularies/models/vocabulary.model'; import { VocabularyEntryDetail } from './submission/vocabularies/models/vocabulary-entry-detail.model'; import { VocabularyService } from './submission/vocabularies/vocabulary.service'; -import { VocabularyTreeviewService } from '../shared/vocabulary-treeview/vocabulary-treeview.service'; import { ConfigurationDataService } from './data/configuration-data.service'; import { ConfigurationProperty } from './shared/configuration-property.model'; import { ReloadGuard } from './reload/reload.guard'; @@ -211,12 +205,6 @@ const PROVIDERS = [ DSOResponseParsingService, { provide: MOCK_RESPONSE_MAP, useValue: mockResponseMap }, { provide: DspaceRestService, useFactory: restServiceFactory, deps: [MOCK_RESPONSE_MAP, HttpClient] }, - DynamicFormLayoutService, - DynamicFormService, - DynamicFormValidationService, - FormBuilderService, - SectionFormOperationsService, - FormService, EPersonDataService, LinkHeadService, HALEndpointService, @@ -268,7 +256,6 @@ const PROVIDERS = [ ClaimedTaskDataService, PoolTaskDataService, BitstreamDataService, - DsDynamicTypeBindRelationService, EntityTypeDataService, ContentSourceResponseParsingService, ItemTemplateDataService, @@ -304,7 +291,6 @@ const PROVIDERS = [ VocabularyService, VocabularyDataService, VocabularyEntryDetailsDataService, - VocabularyTreeviewService, SequenceService, GroupDataService, FeedbackDataService, diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.spec.ts index dd97bb74ab..27029ff2be 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.spec.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.spec.ts @@ -20,7 +20,7 @@ import { FormFieldMetadataValueObject } from '../../../models/form-field-metadat import { VocabularyEntry } from '../../../../../../core/submission/vocabularies/models/vocabulary-entry.model'; import { createTestComponent } from '../../../../../testing/utils.test'; import { DynamicLookupNameModel } from './dynamic-lookup-name.model'; -import { AuthorityConfidenceStateDirective } from '../../../../../authority-confidence/authority-confidence-state.directive'; +import { AuthorityConfidenceStateDirective } from '../../../../directives/authority-confidence-state.directive'; import { ObjNgFor } from '../../../../../utils/object-ngfor.pipe'; import { mockDynamicFormLayoutService, diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/onebox/dynamic-onebox.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/onebox/dynamic-onebox.component.spec.ts index 1102ae2e74..cf417145a7 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/onebox/dynamic-onebox.component.spec.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/onebox/dynamic-onebox.component.spec.ts @@ -21,11 +21,11 @@ import { DsDynamicOneboxComponent } from './dynamic-onebox.component'; import { DynamicOneboxModel } from './dynamic-onebox.model'; import { FormFieldMetadataValueObject } from '../../../models/form-field-metadata-value.model'; import { createTestComponent } from '../../../../../testing/utils.test'; -import { AuthorityConfidenceStateDirective } from '../../../../../authority-confidence/authority-confidence-state.directive'; +import { AuthorityConfidenceStateDirective } from '../../../../directives/authority-confidence-state.directive'; import { ObjNgFor } from '../../../../../utils/object-ngfor.pipe'; import { VocabularyEntry } from '../../../../../../core/submission/vocabularies/models/vocabulary-entry.model'; import { createSuccessfulRemoteDataObject$ } from '../../../../../remote-data.utils'; -import { VocabularyTreeviewComponent } from '../../../../../vocabulary-treeview/vocabulary-treeview.component'; +import { VocabularyTreeviewComponent } from '../../../../vocabulary-treeview/vocabulary-treeview.component'; import { mockDynamicFormLayoutService, mockDynamicFormValidationService diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/onebox/dynamic-onebox.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/onebox/dynamic-onebox.component.ts index 9d2799177c..008328bf73 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/onebox/dynamic-onebox.component.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/onebox/dynamic-onebox.component.ts @@ -30,7 +30,7 @@ import { VocabularyEntry } from '../../../../../../core/submission/vocabularies/ import { PageInfo } from '../../../../../../core/shared/page-info.model'; import { DsDynamicVocabularyComponent } from '../dynamic-vocabulary.component'; import { Vocabulary } from '../../../../../../core/submission/vocabularies/models/vocabulary.model'; -import { VocabularyTreeviewComponent } from '../../../../../vocabulary-treeview/vocabulary-treeview.component'; +import { VocabularyTreeviewComponent } from '../../../../vocabulary-treeview/vocabulary-treeview.component'; import { VocabularyEntryDetail } from '../../../../../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; /** diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/relation-group/dynamic-relation-group.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/relation-group/dynamic-relation-group.component.spec.ts index 83baeaaeaa..733758fd27 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/relation-group/dynamic-relation-group.component.spec.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/relation-group/dynamic-relation-group.component.spec.ts @@ -16,7 +16,7 @@ import { FormFieldModel } from '../../../models/form-field.model'; import { FormBuilderService } from '../../../form-builder.service'; import { FormService } from '../../../../form.service'; import { FormComponent } from '../../../../form.component'; -import { Chips } from '../../../../../chips/models/chips.model'; +import { Chips } from '../../../../chips/models/chips.model'; import { FormFieldMetadataValueObject } from '../../../models/form-field-metadata-value.model'; import { DsDynamicInputModel } from '../ds-dynamic-input.model'; import { createTestComponent } from '../../../../../testing/utils.test'; diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/relation-group/dynamic-relation-group.components.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/relation-group/dynamic-relation-group.components.ts index cd10b9a4a3..06e8c01a9b 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/relation-group/dynamic-relation-group.components.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/relation-group/dynamic-relation-group.components.ts @@ -18,10 +18,10 @@ import { FormBuilderService } from '../../../form-builder.service'; import { SubmissionFormsModel } from '../../../../../../core/config/models/config-submission-forms.model'; import { FormService } from '../../../../form.service'; import { FormComponent } from '../../../../form.component'; -import { Chips } from '../../../../../chips/models/chips.model'; +import { Chips } from '../../../../chips/models/chips.model'; import { hasValue, isEmpty, isNotEmpty, isNotNull } from '../../../../../empty.util'; import { shrinkInOut } from '../../../../../animations/shrink'; -import { ChipsItem } from '../../../../../chips/models/chips-item.model'; +import { ChipsItem } from '../../../../chips/models/chips-item.model'; import { hasOnlyEmptyProperties } from '../../../../../object.util'; import { VocabularyService } from '../../../../../../core/submission/vocabularies/vocabulary.service'; import { FormFieldMetadataValueObject } from '../../../models/form-field-metadata-value.model'; diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component.spec.ts index 7b2c416699..162d9c3cec 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component.spec.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component.spec.ts @@ -13,7 +13,7 @@ import { VocabularyService } from '../../../../../../core/submission/vocabularie import { VocabularyServiceStub } from '../../../../../testing/vocabulary-service.stub'; import { DsDynamicTagComponent } from './dynamic-tag.component'; import { DynamicTagModel } from './dynamic-tag.model'; -import { Chips } from '../../../../../chips/models/chips.model'; +import { Chips } from '../../../../chips/models/chips.model'; import { FormFieldMetadataValueObject } from '../../../models/form-field-metadata-value.model'; import { VocabularyEntry } from '../../../../../../core/submission/vocabularies/models/vocabulary-entry.model'; import { createTestComponent } from '../../../../../testing/utils.test'; diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component.ts index ef5e84e501..8a9f8e3c84 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component.ts @@ -9,7 +9,7 @@ import { isEqual } from 'lodash'; import { VocabularyService } from '../../../../../../core/submission/vocabularies/vocabulary.service'; import { DynamicTagModel } from './dynamic-tag.model'; -import { Chips } from '../../../../../chips/models/chips.model'; +import { Chips } from '../../../../chips/models/chips.model'; import { hasValue, isNotEmpty } from '../../../../../empty.util'; import { environment } from '../../../../../../../environments/environment'; import { getFirstSucceededRemoteDataPayload } from '../../../../../../core/shared/operators'; diff --git a/src/app/shared/chips/chips.component.html b/src/app/shared/form/chips/chips.component.html similarity index 100% rename from src/app/shared/chips/chips.component.html rename to src/app/shared/form/chips/chips.component.html diff --git a/src/app/shared/chips/chips.component.scss b/src/app/shared/form/chips/chips.component.scss similarity index 100% rename from src/app/shared/chips/chips.component.scss rename to src/app/shared/form/chips/chips.component.scss diff --git a/src/app/shared/chips/chips.component.spec.ts b/src/app/shared/form/chips/chips.component.spec.ts similarity index 92% rename from src/app/shared/chips/chips.component.spec.ts rename to src/app/shared/form/chips/chips.component.spec.ts index 6f9b948002..2b8a469bd1 100644 --- a/src/app/shared/chips/chips.component.spec.ts +++ b/src/app/shared/form/chips/chips.component.spec.ts @@ -3,17 +3,16 @@ import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/c import { ComponentFixture, fakeAsync, inject, TestBed, tick, waitForAsync, } from '@angular/core/testing'; import { Chips } from './models/chips.model'; -import { UploaderService } from '../uploader/uploader.service'; import { ChipsComponent } from './chips.component'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { By } from '@angular/platform-browser'; -import { FormFieldMetadataValueObject } from '../form/builder/models/form-field-metadata-value.model'; -import { createTestComponent } from '../testing/utils.test'; -import { AuthorityConfidenceStateDirective } from '../authority-confidence/authority-confidence-state.directive'; +import { FormFieldMetadataValueObject } from '../builder/models/form-field-metadata-value.model'; +import { createTestComponent } from '../../testing/utils.test'; +import { AuthorityConfidenceStateDirective } from '../directives/authority-confidence-state.directive'; import { TranslateModule } from '@ngx-translate/core'; -import { ConfidenceType } from '../../core/shared/confidence-type'; +import { ConfidenceType } from '../../../core/shared/confidence-type'; import { SortablejsModule } from 'ngx-sortablejs'; -import { environment } from '../../../environments/environment'; +import { environment } from '../../../../environments/environment'; describe('ChipsComponent test suite', () => { @@ -41,7 +40,6 @@ describe('ChipsComponent test suite', () => { providers: [ ChangeDetectorRef, ChipsComponent, - UploaderService ], schemas: [CUSTOM_ELEMENTS_SCHEMA] }); diff --git a/src/app/shared/chips/chips.component.ts b/src/app/shared/form/chips/chips.component.ts similarity index 94% rename from src/app/shared/chips/chips.component.ts rename to src/app/shared/form/chips/chips.component.ts index 17a6b034ee..31aaf04db0 100644 --- a/src/app/shared/chips/chips.component.ts +++ b/src/app/shared/form/chips/chips.component.ts @@ -5,7 +5,7 @@ import { isObject } from 'lodash'; import { Chips } from './models/chips.model'; import { ChipsItem } from './models/chips-item.model'; -import { UploaderService } from '../uploader/uploader.service'; +import { DragService } from '../../../core/drag.service'; import { TranslateService } from '@ngx-translate/core'; import { Options } from 'sortablejs'; import { BehaviorSubject } from 'rxjs'; @@ -33,7 +33,7 @@ export class ChipsComponent implements OnChanges { constructor( private cdr: ChangeDetectorRef, - private uploaderService: UploaderService, + private dragService: DragService, private translate: TranslateService) { this.options = { @@ -76,12 +76,12 @@ export class ChipsComponent implements OnChanges { onDragStart(index) { this.isDragging.next(true); - this.uploaderService.overrideDragOverPage(); + this.dragService.overrideDragOverPage(); this.dragged = index; } onDragEnd(event) { - this.uploaderService.allowDragOverPage(); + this.dragService.allowDragOverPage(); this.dragged = -1; this.chips.updateOrder(); this.isDragging.next(false); diff --git a/src/app/shared/chips/models/chips-item.model.spec.ts b/src/app/shared/form/chips/models/chips-item.model.spec.ts similarity index 94% rename from src/app/shared/chips/models/chips-item.model.spec.ts rename to src/app/shared/form/chips/models/chips-item.model.spec.ts index c85ff83c31..27b4840d46 100644 --- a/src/app/shared/chips/models/chips-item.model.spec.ts +++ b/src/app/shared/form/chips/models/chips-item.model.spec.ts @@ -1,5 +1,5 @@ import { ChipsItem, ChipsItemIcon } from './chips-item.model'; -import { FormFieldMetadataValueObject } from '../../form/builder/models/form-field-metadata-value.model'; +import { FormFieldMetadataValueObject } from '../../builder/models/form-field-metadata-value.model'; describe('ChipsItem model test suite', () => { let item: ChipsItem; diff --git a/src/app/shared/chips/models/chips-item.model.ts b/src/app/shared/form/chips/models/chips-item.model.ts similarity index 89% rename from src/app/shared/chips/models/chips-item.model.ts rename to src/app/shared/form/chips/models/chips-item.model.ts index 5d0ff20e2f..a43386862b 100644 --- a/src/app/shared/chips/models/chips-item.model.ts +++ b/src/app/shared/form/chips/models/chips-item.model.ts @@ -1,8 +1,8 @@ import { isObject, uniqueId } from 'lodash'; -import { hasValue, isNotEmpty } from '../../empty.util'; -import { FormFieldMetadataValueObject } from '../../form/builder/models/form-field-metadata-value.model'; -import { ConfidenceType } from '../../../core/shared/confidence-type'; -import { PLACEHOLDER_PARENT_METADATA } from '../../form/builder/ds-dynamic-form-ui/ds-dynamic-form-constants'; +import { hasValue, isNotEmpty } from '../../../empty.util'; +import { FormFieldMetadataValueObject } from '../../builder/models/form-field-metadata-value.model'; +import { ConfidenceType } from '../../../../core/shared/confidence-type'; +import { PLACEHOLDER_PARENT_METADATA } from '../../builder/ds-dynamic-form-ui/ds-dynamic-form-constants'; export interface ChipsItemIcon { metadata: string; diff --git a/src/app/shared/chips/models/chips.model.spec.ts b/src/app/shared/form/chips/models/chips.model.spec.ts similarity index 96% rename from src/app/shared/chips/models/chips.model.spec.ts rename to src/app/shared/form/chips/models/chips.model.spec.ts index a6cf5faf81..c86ff55c6f 100644 --- a/src/app/shared/chips/models/chips.model.spec.ts +++ b/src/app/shared/form/chips/models/chips.model.spec.ts @@ -1,6 +1,6 @@ import { Chips } from './chips.model'; import { ChipsItem } from './chips-item.model'; -import { FormFieldMetadataValueObject } from '../../form/builder/models/form-field-metadata-value.model'; +import { FormFieldMetadataValueObject } from '../../builder/models/form-field-metadata-value.model'; describe('Chips model test suite', () => { let items: any[]; diff --git a/src/app/shared/chips/models/chips.model.ts b/src/app/shared/form/chips/models/chips.model.ts similarity index 89% rename from src/app/shared/chips/models/chips.model.ts rename to src/app/shared/form/chips/models/chips.model.ts index c15badb976..73ccdd3e54 100644 --- a/src/app/shared/chips/models/chips.model.ts +++ b/src/app/shared/form/chips/models/chips.model.ts @@ -1,11 +1,11 @@ import { findIndex, isEqual, isObject } from 'lodash'; import { BehaviorSubject } from 'rxjs'; import { ChipsItem, ChipsItemIcon } from './chips-item.model'; -import { hasValue, isNotEmpty } from '../../empty.util'; -import { MetadataIconConfig } from '../../../../config/submission-config.interface'; -import { FormFieldMetadataValueObject } from '../../form/builder/models/form-field-metadata-value.model'; -import { VocabularyEntry } from '../../../core/submission/vocabularies/models/vocabulary-entry.model'; -import { PLACEHOLDER_PARENT_METADATA } from '../../form/builder/ds-dynamic-form-ui/ds-dynamic-form-constants'; +import { hasValue, isNotEmpty } from '../../../empty.util'; +import { MetadataIconConfig } from '../../../../../config/submission-config.interface'; +import { FormFieldMetadataValueObject } from '../../builder/models/form-field-metadata-value.model'; +import { VocabularyEntry } from '../../../../core/submission/vocabularies/models/vocabulary-entry.model'; +import { PLACEHOLDER_PARENT_METADATA } from '../../builder/ds-dynamic-form-ui/ds-dynamic-form-constants'; export class Chips { chipsItems: BehaviorSubject; diff --git a/src/app/shared/authority-confidence/authority-confidence-state.directive.ts b/src/app/shared/form/directives/authority-confidence-state.directive.ts similarity index 83% rename from src/app/shared/authority-confidence/authority-confidence-state.directive.ts rename to src/app/shared/form/directives/authority-confidence-state.directive.ts index 8999a643e8..0500b42dfb 100644 --- a/src/app/shared/authority-confidence/authority-confidence-state.directive.ts +++ b/src/app/shared/form/directives/authority-confidence-state.directive.ts @@ -1,3 +1,11 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ + import { AfterViewInit, Directive, @@ -13,13 +21,13 @@ import { import { findIndex } from 'lodash'; -import { VocabularyEntry } from '../../core/submission/vocabularies/models/vocabulary-entry.model'; -import { FormFieldMetadataValueObject } from '../form/builder/models/form-field-metadata-value.model'; -import { ConfidenceType } from '../../core/shared/confidence-type'; -import { isNotEmpty, isNull } from '../empty.util'; -import { ConfidenceIconConfig } from '../../../config/submission-config.interface'; -import { environment } from '../../../environments/environment'; -import { VocabularyEntryDetail } from '../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; +import { VocabularyEntry } from '../../../core/submission/vocabularies/models/vocabulary-entry.model'; +import { FormFieldMetadataValueObject } from '../builder/models/form-field-metadata-value.model'; +import { ConfidenceType } from '../../../core/shared/confidence-type'; +import { isNotEmpty, isNull } from '../../empty.util'; +import { ConfidenceIconConfig } from '../../../../config/submission-config.interface'; +import { environment } from '../../../../environments/environment'; +import { VocabularyEntryDetail } from '../../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; /** * Directive to add to the element a bootstrap utility class based on metadata confidence value diff --git a/src/app/shared/form/form.module.ts b/src/app/shared/form/form.module.ts index 62ab5bd647..dd370fdf31 100644 --- a/src/app/shared/form/form.module.ts +++ b/src/app/shared/form/form.module.ts @@ -2,10 +2,7 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormComponent } from './form.component'; import { DsDynamicFormComponent } from './builder/ds-dynamic-form-ui/ds-dynamic-form.component'; -import { - DsDynamicFormControlContainerComponent, - dsDynamicFormControlMapFn -} from './builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component'; +import { DsDynamicFormControlContainerComponent, dsDynamicFormControlMapFn } from './builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component'; import { DsDynamicListComponent } from './builder/ds-dynamic-form-ui/models/list/dynamic-list.component'; import { DsDynamicLookupComponent } from './builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component'; import { DsDynamicDisabledComponent } from './builder/ds-dynamic-form-ui/models/disabled/dynamic-disabled.component'; @@ -24,12 +21,21 @@ import { DsDynamicLookupRelationExternalSourceTabComponent } from './builder/ds- import { SharedModule } from '../shared.module'; import { TranslateModule } from '@ngx-translate/core'; import { SearchModule } from '../search/search.module'; -import { DYNAMIC_FORM_CONTROL_MAP_FN, DynamicFormsCoreModule } from '@ng-dynamic-forms/core'; +import { DYNAMIC_FORM_CONTROL_MAP_FN, DynamicFormLayoutService, DynamicFormsCoreModule, DynamicFormService, DynamicFormValidationService } from '@ng-dynamic-forms/core'; import { ExistingMetadataListElementComponent } from './builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component'; import { ExistingRelationListElementComponent } from './builder/ds-dynamic-form-ui/existing-relation-list-element/existing-relation-list-element.component'; import { ExternalSourceEntryImportModalComponent } from './builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component'; import { CustomSwitchComponent } from './builder/ds-dynamic-form-ui/models/custom-switch/custom-switch.component'; import { DynamicFormsNGBootstrapUIModule } from '@ng-dynamic-forms/ui-ng-bootstrap'; +import { ChipsComponent } from './chips/chips.component'; +import { NumberPickerComponent } from './number-picker/number-picker.component'; +import { AuthorityConfidenceStateDirective } from './directives/authority-confidence-state.directive'; +import { SortablejsModule } from 'ngx-sortablejs'; +import { VocabularyTreeviewComponent } from './vocabulary-treeview/vocabulary-treeview.component'; +import { VocabularyTreeviewService } from './vocabulary-treeview/vocabulary-treeview.service'; +import { FormBuilderService } from './builder/form-builder.service'; +import { DsDynamicTypeBindRelationService } from './builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service'; +import { FormService } from './form.service'; const COMPONENTS = [ CustomSwitchComponent, @@ -53,12 +59,20 @@ const COMPONENTS = [ ExistingMetadataListElementComponent, ExistingRelationListElementComponent, ExternalSourceEntryImportModalComponent, - FormComponent + FormComponent, + ChipsComponent, + NumberPickerComponent, + VocabularyTreeviewComponent, +]; + +const DIRECTIVES = [ + AuthorityConfidenceStateDirective, ]; @NgModule({ declarations: [ - ...COMPONENTS + ...COMPONENTS, + ...DIRECTIVES, ], imports: [ CommonModule, @@ -66,16 +80,25 @@ const COMPONENTS = [ DynamicFormsNGBootstrapUIModule, SearchModule, SharedModule, - TranslateModule + TranslateModule, + SortablejsModule, ], exports: [ - ...COMPONENTS + ...COMPONENTS, + ...DIRECTIVES, ], providers: [ { provide: DYNAMIC_FORM_CONTROL_MAP_FN, useValue: dsDynamicFormControlMapFn - } + }, + VocabularyTreeviewService, + DynamicFormLayoutService, + DynamicFormService, + DynamicFormValidationService, + FormBuilderService, + DsDynamicTypeBindRelationService, + FormService, ] }) export class FormModule { diff --git a/src/app/shared/number-picker/number-picker.component.html b/src/app/shared/form/number-picker/number-picker.component.html similarity index 100% rename from src/app/shared/number-picker/number-picker.component.html rename to src/app/shared/form/number-picker/number-picker.component.html diff --git a/src/app/shared/number-picker/number-picker.component.scss b/src/app/shared/form/number-picker/number-picker.component.scss similarity index 100% rename from src/app/shared/number-picker/number-picker.component.scss rename to src/app/shared/form/number-picker/number-picker.component.scss diff --git a/src/app/shared/number-picker/number-picker.component.spec.ts b/src/app/shared/form/number-picker/number-picker.component.spec.ts similarity index 96% rename from src/app/shared/number-picker/number-picker.component.spec.ts rename to src/app/shared/form/number-picker/number-picker.component.spec.ts index 0cc073644e..d4484dbfa3 100644 --- a/src/app/shared/number-picker/number-picker.component.spec.ts +++ b/src/app/shared/form/number-picker/number-picker.component.spec.ts @@ -2,12 +2,11 @@ import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { ComponentFixture, inject, TestBed, waitForAsync, } from '@angular/core/testing'; -import { UploaderService } from '../uploader/uploader.service'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { By } from '@angular/platform-browser'; import { NumberPickerComponent } from './number-picker.component'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { createTestComponent } from '../testing/utils.test'; +import { createTestComponent } from '../../testing/utils.test'; describe('NumberPickerComponent test suite', () => { @@ -33,7 +32,6 @@ describe('NumberPickerComponent test suite', () => { providers: [ ChangeDetectorRef, NumberPickerComponent, - UploaderService ], schemas: [CUSTOM_ELEMENTS_SCHEMA] }); diff --git a/src/app/shared/number-picker/number-picker.component.ts b/src/app/shared/form/number-picker/number-picker.component.ts similarity index 98% rename from src/app/shared/number-picker/number-picker.component.ts rename to src/app/shared/form/number-picker/number-picker.component.ts index 465e905713..0df1e050cd 100644 --- a/src/app/shared/number-picker/number-picker.component.ts +++ b/src/app/shared/form/number-picker/number-picker.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, SimpleChanges, } from '@angular/core'; import { ControlValueAccessor, FormBuilder, NG_VALUE_ACCESSOR } from '@angular/forms'; -import { isEmpty } from '../empty.util'; +import { isEmpty } from '../../empty.util'; @Component({ selector: 'ds-number-picker', diff --git a/src/app/shared/vocabulary-treeview/vocabulary-tree-flat-data-source.ts b/src/app/shared/form/vocabulary-treeview/vocabulary-tree-flat-data-source.ts similarity index 100% rename from src/app/shared/vocabulary-treeview/vocabulary-tree-flat-data-source.ts rename to src/app/shared/form/vocabulary-treeview/vocabulary-tree-flat-data-source.ts diff --git a/src/app/shared/vocabulary-treeview/vocabulary-tree-flattener.ts b/src/app/shared/form/vocabulary-treeview/vocabulary-tree-flattener.ts similarity index 100% rename from src/app/shared/vocabulary-treeview/vocabulary-tree-flattener.ts rename to src/app/shared/form/vocabulary-treeview/vocabulary-tree-flattener.ts diff --git a/src/app/shared/vocabulary-treeview/vocabulary-treeview-node.model.ts b/src/app/shared/form/vocabulary-treeview/vocabulary-treeview-node.model.ts similarity index 88% rename from src/app/shared/vocabulary-treeview/vocabulary-treeview-node.model.ts rename to src/app/shared/form/vocabulary-treeview/vocabulary-treeview-node.model.ts index 63039e6c75..c167328cab 100644 --- a/src/app/shared/vocabulary-treeview/vocabulary-treeview-node.model.ts +++ b/src/app/shared/form/vocabulary-treeview/vocabulary-treeview-node.model.ts @@ -1,7 +1,7 @@ /* eslint-disable max-classes-per-file */ import { BehaviorSubject } from 'rxjs'; -import { VocabularyEntryDetail } from '../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; -import { PageInfo } from '../../core/shared/page-info.model'; +import { VocabularyEntryDetail } from '../../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; +import { PageInfo } from '../../../core/shared/page-info.model'; export const LOAD_MORE = 'LOAD_MORE'; export const LOAD_MORE_ROOT = 'LOAD_MORE_ROOT'; diff --git a/src/app/shared/vocabulary-treeview/vocabulary-treeview.component.html b/src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.html similarity index 100% rename from src/app/shared/vocabulary-treeview/vocabulary-treeview.component.html rename to src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.html diff --git a/src/app/shared/vocabulary-treeview/vocabulary-treeview.component.scss b/src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.scss similarity index 100% rename from src/app/shared/vocabulary-treeview/vocabulary-treeview.component.scss rename to src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.scss diff --git a/src/app/shared/vocabulary-treeview/vocabulary-treeview.component.spec.ts b/src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.spec.ts similarity index 91% rename from src/app/shared/vocabulary-treeview/vocabulary-treeview.component.spec.ts rename to src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.spec.ts index 1bdf4b9df7..cf8fbd8c49 100644 --- a/src/app/shared/vocabulary-treeview/vocabulary-treeview.component.spec.ts +++ b/src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.spec.ts @@ -8,18 +8,18 @@ import { TranslateModule } from '@ngx-translate/core'; import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; import { provideMockStore } from '@ngrx/store/testing'; -import { createTestComponent } from '../testing/utils.test'; +import { createTestComponent } from '../../testing/utils.test'; import { VocabularyTreeviewComponent } from './vocabulary-treeview.component'; import { VocabularyTreeviewService } from './vocabulary-treeview.service'; -import { VocabularyEntryDetail } from '../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; +import { VocabularyEntryDetail } from '../../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; import { TreeviewFlatNode } from './vocabulary-treeview-node.model'; -import { FormFieldMetadataValueObject } from '../form/builder/models/form-field-metadata-value.model'; -import { VocabularyOptions } from '../../core/submission/vocabularies/models/vocabulary-options.model'; -import { PageInfo } from '../../core/shared/page-info.model'; -import { VocabularyEntry } from '../../core/submission/vocabularies/models/vocabulary-entry.model'; -import { AuthTokenInfo } from '../../core/auth/models/auth-token-info.model'; -import { authReducer } from '../../core/auth/auth.reducer'; -import { storeModuleConfig } from '../../app.reducer'; +import { FormFieldMetadataValueObject } from '../builder/models/form-field-metadata-value.model'; +import { VocabularyOptions } from '../../../core/submission/vocabularies/models/vocabulary-options.model'; +import { PageInfo } from '../../../core/shared/page-info.model'; +import { VocabularyEntry } from '../../../core/submission/vocabularies/models/vocabulary-entry.model'; +import { AuthTokenInfo } from '../../../core/auth/models/auth-token-info.model'; +import { authReducer } from '../../../core/auth/auth.reducer'; +import { storeModuleConfig } from '../../../app.reducer'; describe('VocabularyTreeviewComponent test suite', () => { diff --git a/src/app/shared/vocabulary-treeview/vocabulary-treeview.component.ts b/src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.ts similarity index 93% rename from src/app/shared/vocabulary-treeview/vocabulary-treeview.component.ts rename to src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.ts index 9850947f60..408d656f42 100644 --- a/src/app/shared/vocabulary-treeview/vocabulary-treeview.component.ts +++ b/src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.ts @@ -7,17 +7,17 @@ import { Observable, Subscription } from 'rxjs'; import { select, Store } from '@ngrx/store'; import { TranslateService } from '@ngx-translate/core'; -import { VocabularyEntryDetail } from '../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; -import { hasValue, isEmpty, isNotEmpty } from '../empty.util'; -import { isAuthenticated } from '../../core/auth/selectors'; +import { VocabularyEntryDetail } from '../../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; +import { hasValue, isEmpty, isNotEmpty } from '../../empty.util'; +import { isAuthenticated } from '../../../core/auth/selectors'; import { VocabularyTreeviewService } from './vocabulary-treeview.service'; import { LOAD_MORE, LOAD_MORE_ROOT, TreeviewFlatNode, TreeviewNode } from './vocabulary-treeview-node.model'; -import { VocabularyOptions } from '../../core/submission/vocabularies/models/vocabulary-options.model'; -import { PageInfo } from '../../core/shared/page-info.model'; -import { VocabularyEntry } from '../../core/submission/vocabularies/models/vocabulary-entry.model'; +import { VocabularyOptions } from '../../../core/submission/vocabularies/models/vocabulary-options.model'; +import { PageInfo } from '../../../core/shared/page-info.model'; +import { VocabularyEntry } from '../../../core/submission/vocabularies/models/vocabulary-entry.model'; import { VocabularyTreeFlattener } from './vocabulary-tree-flattener'; import { VocabularyTreeFlatDataSource } from './vocabulary-tree-flat-data-source'; -import { CoreState } from '../../core/core-state.model'; +import { CoreState } from '../../../core/core-state.model'; /** * Component that show a hierarchical vocabulary in a tree view diff --git a/src/app/shared/vocabulary-treeview/vocabulary-treeview.service.spec.ts b/src/app/shared/form/vocabulary-treeview/vocabulary-treeview.service.spec.ts similarity index 94% rename from src/app/shared/vocabulary-treeview/vocabulary-treeview.service.spec.ts rename to src/app/shared/form/vocabulary-treeview/vocabulary-treeview.service.spec.ts index c1c64c80bd..752ef10fee 100644 --- a/src/app/shared/vocabulary-treeview/vocabulary-treeview.service.spec.ts +++ b/src/app/shared/form/vocabulary-treeview/vocabulary-treeview.service.spec.ts @@ -5,15 +5,15 @@ import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-transla import { cold, getTestScheduler, hot } from 'jasmine-marbles'; import { VocabularyTreeviewService } from './vocabulary-treeview.service'; -import { VocabularyService } from '../../core/submission/vocabularies/vocabulary.service'; -import { TranslateLoaderMock } from '../mocks/translate-loader.mock'; -import { VocabularyOptions } from '../../core/submission/vocabularies/models/vocabulary-options.model'; +import { VocabularyService } from '../../../core/submission/vocabularies/vocabulary.service'; +import { TranslateLoaderMock } from '../../mocks/translate-loader.mock'; +import { VocabularyOptions } from '../../../core/submission/vocabularies/models/vocabulary-options.model'; import { LOAD_MORE_NODE, LOAD_MORE_ROOT_NODE, TreeviewFlatNode, TreeviewNode } from './vocabulary-treeview-node.model'; -import { PageInfo } from '../../core/shared/page-info.model'; -import { VocabularyEntryDetail } from '../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; -import { buildPaginatedList } from '../../core/data/paginated-list.model'; -import { createSuccessfulRemoteDataObject } from '../remote-data.utils'; -import { VocabularyEntry } from '../../core/submission/vocabularies/models/vocabulary-entry.model'; +import { PageInfo } from '../../../core/shared/page-info.model'; +import { VocabularyEntryDetail } from '../../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; +import { buildPaginatedList } from '../../../core/data/paginated-list.model'; +import { createSuccessfulRemoteDataObject } from '../../remote-data.utils'; +import { VocabularyEntry } from '../../../core/submission/vocabularies/models/vocabulary-entry.model'; import { expand, map, switchMap } from 'rxjs/operators'; import { from as observableFrom } from 'rxjs'; diff --git a/src/app/shared/vocabulary-treeview/vocabulary-treeview.service.ts b/src/app/shared/form/vocabulary-treeview/vocabulary-treeview.service.ts similarity index 94% rename from src/app/shared/vocabulary-treeview/vocabulary-treeview.service.ts rename to src/app/shared/form/vocabulary-treeview/vocabulary-treeview.service.ts index ad2525bb7f..04203ebf79 100644 --- a/src/app/shared/vocabulary-treeview/vocabulary-treeview.service.ts +++ b/src/app/shared/form/vocabulary-treeview/vocabulary-treeview.service.ts @@ -10,17 +10,17 @@ import { TreeviewFlatNode, TreeviewNode } from './vocabulary-treeview-node.model'; -import { VocabularyEntry } from '../../core/submission/vocabularies/models/vocabulary-entry.model'; -import { VocabularyService } from '../../core/submission/vocabularies/vocabulary.service'; -import { PageInfo } from '../../core/shared/page-info.model'; -import { isEmpty, isNotEmpty } from '../empty.util'; -import { VocabularyOptions } from '../../core/submission/vocabularies/models/vocabulary-options.model'; +import { VocabularyEntry } from '../../../core/submission/vocabularies/models/vocabulary-entry.model'; +import { VocabularyService } from '../../../core/submission/vocabularies/vocabulary.service'; +import { PageInfo } from '../../../core/shared/page-info.model'; +import { isEmpty, isNotEmpty } from '../../empty.util'; +import { VocabularyOptions } from '../../../core/submission/vocabularies/models/vocabulary-options.model'; import { getFirstSucceededRemoteDataPayload, getFirstSucceededRemoteListPayload -} from '../../core/shared/operators'; -import { PaginatedList } from '../../core/data/paginated-list.model'; -import { VocabularyEntryDetail } from '../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; +} from '../../../core/shared/operators'; +import { PaginatedList } from '../../../core/data/paginated-list.model'; +import { VocabularyEntryDetail } from '../../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; /** * A service that provides methods to deal with vocabulary tree diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index 45e9764151..a47712f261 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -74,8 +74,6 @@ import { TruncatableComponent } from './truncatable/truncatable.component'; import { TruncatableService } from './truncatable/truncatable.service'; import { TruncatablePartComponent } from './truncatable/truncatable-part/truncatable-part.component'; import { UploaderComponent } from './uploader/uploader.component'; -import { ChipsComponent } from './chips/chips.component'; -import { NumberPickerComponent } from './number-picker/number-picker.component'; import { MockAdminGuard } from './mocks/admin-guard.service.mock'; import { AlertComponent } from './alert/alert.component'; import { @@ -111,7 +109,6 @@ import { EmphasizePipe } from './utils/emphasize.pipe'; import { InputSuggestionsComponent } from './input-suggestions/input-suggestions.component'; import { CapitalizePipe } from './utils/capitalize.pipe'; import { ObjectKeysPipe } from './utils/object-keys-pipe'; -import { AuthorityConfidenceStateDirective } from './authority-confidence/authority-confidence-state.directive'; import { LangSwitchComponent } from './lang-switch/lang-switch.component'; import { PlainTextMetadataListElementComponent @@ -232,7 +229,6 @@ import { ImportableListItemControlComponent } from './object-collection/shared/importable-list-item-control/importable-list-item-control.component'; import { ItemVersionsComponent } from './item/item-versions/item-versions.component'; -import { SortablejsModule } from 'ngx-sortablejs'; import { LogInContainerComponent } from './log-in/container/log-in-container.component'; import { LogInShibbolethComponent } from './log-in/methods/shibboleth/log-in-shibboleth.component'; import { LogInPasswordComponent } from './log-in/methods/password/log-in-password.component'; @@ -258,7 +254,6 @@ import { NgForTrackByIdDirective } from './ng-for-track-by-id.directive'; import { FileDownloadLinkComponent } from './file-download-link/file-download-link.component'; import { CollectionDropdownComponent } from './collection-dropdown/collection-dropdown.component'; import { EntityDropdownComponent } from './entity-dropdown/entity-dropdown.component'; -import { VocabularyTreeviewComponent } from './vocabulary-treeview/vocabulary-treeview.component'; import { CurationFormComponent } from '../curation-form/curation-form.component'; import { PublicationSidebarSearchListElementComponent @@ -327,7 +322,6 @@ import { GoogleRecaptchaModule } from '../core/google-recaptcha/google-recaptcha const MODULES = [ CommonModule, - SortablejsModule, FileUploadModule, FormsModule, InfiniteScrollModule, @@ -377,7 +371,6 @@ const COMPONENTS = [ AuthNavMenuComponent, ThemedAuthNavMenuComponent, UserMenuComponent, - ChipsComponent, DsSelectComponent, ErrorComponent, FileSectionComponent, @@ -386,7 +379,6 @@ const COMPONENTS = [ ThemedLoadingComponent, LogInComponent, LogOutComponent, - NumberPickerComponent, ObjectListComponent, ThemedObjectListComponent, ObjectDetailComponent, @@ -605,7 +597,6 @@ const DIRECTIVES = [ DragClickDirective, DebounceDirective, ClickOutsideDirective, - AuthorityConfidenceStateDirective, InListValidator, AutoFocusDirective, RoleDirective, diff --git a/src/app/submission/form/submission-upload-files/submission-upload-files.component.ts b/src/app/submission/form/submission-upload-files/submission-upload-files.component.ts index a56b371456..721a6c108b 100644 --- a/src/app/submission/form/submission-upload-files/submission-upload-files.component.ts +++ b/src/app/submission/form/submission-upload-files/submission-upload-files.component.ts @@ -9,7 +9,7 @@ import { hasValue, isEmpty, isNotEmpty } from '../../../shared/empty.util'; import { normalizeSectionData } from '../../../core/submission/submission-response-parsing.service'; import { SubmissionService } from '../../submission.service'; import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { UploaderOptions } from '../../../shared/uploader/uploader-options.model'; +import { UploaderOptions } from '../../../shared/upload/uploader/uploader-options.model'; import parseSectionErrors from '../../utils/parseSectionErrors'; import { SubmissionJsonPatchOperationsService } from '../../../core/submission/submission-json-patch-operations.service'; import { WorkspaceItem } from '../../../core/submission/models/workspaceitem.model'; diff --git a/src/app/submission/submission.module.ts b/src/app/submission/submission.module.ts index d1e8dfd44e..0324ea345a 100644 --- a/src/app/submission/submission.module.ts +++ b/src/app/submission/submission.module.ts @@ -63,6 +63,7 @@ import { import { MetadataInformationComponent } from './sections/sherpa-policies/metadata-information/metadata-information.component'; +import { SectionFormOperationsService } from './sections/form/section-form-operations.service'; const ENTRY_COMPONENTS = [ // put only entry components that use custom decorator @@ -117,13 +118,17 @@ const DECLARATIONS = [ NgbAccordionModule ], declarations: DECLARATIONS, - exports: DECLARATIONS, + exports: [ + ...DECLARATIONS, + FormModule, + ], providers: [ SectionUploadService, SectionsService, SubmissionUploadsConfigDataService, SubmissionAccessesConfigDataService, SectionAccessesService, + SectionFormOperationsService, ] }) diff --git a/src/app/submit-page/submit-page.module.ts b/src/app/submit-page/submit-page.module.ts index e43d9d36aa..6942628e9e 100644 --- a/src/app/submit-page/submit-page.module.ts +++ b/src/app/submit-page/submit-page.module.ts @@ -3,6 +3,7 @@ import { NgModule } from '@angular/core'; import { SharedModule } from '../shared/shared.module'; import { SubmitPageRoutingModule } from './submit-page-routing.module'; import { SubmissionModule } from '../submission/submission.module'; +import { FormModule } from '../shared/form/form.module'; @NgModule({ imports: [ @@ -10,6 +11,7 @@ import { SubmissionModule } from '../submission/submission.module'; CommonModule, SharedModule, SubmissionModule, + FormModule, ], }) /**