1
0
Files
yel-dspace-angular/src/app/shared/form/builder/models/form-field.model.ts

122 lines
2.5 KiB
TypeScript

import { autoserialize } from 'cerialize';
import { LanguageCode } from './form-field-language-value.model';
import { RelationshipOptions } from './relationship-options.model';
import { FormRowModel } from '../../../../core/config/models/config-submission-form.model';
/**
* Representing SelectableMetadata properties
*/
export interface SelectableMetadata {
/**
* The key of the metadata field to use to store the input
*/
metadata: string;
/**
* The label of the metadata field to use to store the input
*/
label: string;
/**
* The name of the controlled vocabulary used to retrieve value for the input see controlled vocabularies
*/
controlledVocabulary: string;
/**
* A boolean representing if value is closely related to the controlled vocabulary entry or not
*/
closed: boolean;
}
/**
* A class representing a specific input-form field
*/
export class FormFieldModel {
/**
* The hints for this metadata field to display on form
*/
@autoserialize
hints: string;
/**
* The label for this metadata field to display on form
*/
@autoserialize
label: string;
/**
* The languages available for this metadata field to display on form
*/
@autoserialize
languageCodes: LanguageCode[];
/**
* The error message for this metadata field to display on form in case of field is required
*/
@autoserialize
mandatoryMessage: string;
/**
* Representing if this metadata field is mandatory or not
*/
@autoserialize
mandatory: string;
/**
* Representing if this metadata field is repeatable or not
*/
@autoserialize
repeatable: boolean;
/**
* Containing additional properties for this metadata field
*/
@autoserialize
input: {
/**
* Representing the type for this metadata field
*/
type: string;
/**
* Containing regex to use for field validation
*/
regex?: string;
};
/**
* Representing additional vocabulary configuration for this metadata field
*/
@autoserialize
selectableMetadata: SelectableMetadata[];
/**
* Representing additional relationship configuration for this metadata field
*/
@autoserialize
selectableRelationship: RelationshipOptions;
@autoserialize
rows: FormRowModel[];
/**
* Representing the scope for this metadata field
*/
@autoserialize
scope: string;
/**
* Containing additional css classes for this metadata field to use on form
*/
@autoserialize
style: string;
/**
* Containing the value for this metadata field
*/
@autoserialize
value: any;
}