mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 01:54:15 +00:00
54 lines
1.8 KiB
TypeScript
54 lines
1.8 KiB
TypeScript
import { Inject } from '@angular/core';
|
|
import { FormFieldModel } from '../models/form-field.model';
|
|
import {
|
|
CONFIG_DATA,
|
|
FieldParser,
|
|
INIT_FORM_VALUES,
|
|
PARSER_OPTIONS,
|
|
SUBMISSION_ID
|
|
} from './field-parser';
|
|
import { DynamicFormControlLayout, } from '@ng-dynamic-forms/core';
|
|
import {
|
|
DynamicScrollableDropdownModel,
|
|
DynamicScrollableDropdownModelConfig
|
|
} from '../ds-dynamic-form-ui/models/scrollable-dropdown/dynamic-scrollable-dropdown.model';
|
|
import { isNotEmpty } from '../../../empty.util';
|
|
import { FormFieldMetadataValueObject } from '../models/form-field-metadata-value.model';
|
|
import { ParserOptions } from './parser-options';
|
|
|
|
export class DropdownFieldParser extends FieldParser {
|
|
|
|
constructor(
|
|
@Inject(SUBMISSION_ID) submissionId: string,
|
|
@Inject(CONFIG_DATA) configData: FormFieldModel,
|
|
@Inject(INIT_FORM_VALUES) initFormValues,
|
|
@Inject(PARSER_OPTIONS) parserOptions: ParserOptions
|
|
) {
|
|
super(submissionId, configData, initFormValues, parserOptions)
|
|
}
|
|
|
|
public modelFactory(fieldValue?: FormFieldMetadataValueObject | any, label?: boolean): any {
|
|
const dropdownModelConfig: DynamicScrollableDropdownModelConfig = this.initModel(null, label);
|
|
let layout: DynamicFormControlLayout;
|
|
|
|
if (isNotEmpty(this.configData.selectableMetadata[0].controlledVocabulary)) {
|
|
this.setVocabularyOptions(dropdownModelConfig);
|
|
if (isNotEmpty(fieldValue)) {
|
|
dropdownModelConfig.value = fieldValue;
|
|
}
|
|
layout = {
|
|
element: {
|
|
control: 'col'
|
|
},
|
|
grid: {
|
|
host: 'col'
|
|
}
|
|
};
|
|
const dropdownModel = new DynamicScrollableDropdownModel(dropdownModelConfig, layout);
|
|
return dropdownModel;
|
|
} else {
|
|
throw Error(`Controlled Vocabulary name is not available. Please check the form configuration file.`);
|
|
}
|
|
}
|
|
}
|