|
@@ -28,7 +28,7 @@ interface Option {
|
|
|
}
|
|
|
|
|
|
interface OptionsFieldMetaData extends SimpleFieldMetaData {
|
|
|
- options: Option[]; // Array of Options - for select, radio-button-group and other 'multiple-choice' types
|
|
|
+ options; // Array of Options - for select, radio-button-group and other 'multiple-choice' types
|
|
|
}
|
|
|
interface DropdownModifiedInputFieldMetaData extends SimpleFieldMetaData {
|
|
|
modifiers: string[];
|
|
@@ -71,10 +71,25 @@ class SimpleField {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+class Option {
|
|
|
+ constructor(opt: string | Option) {
|
|
|
+ if (typeof opt === 'object') {
|
|
|
+ this.label = opt.label;
|
|
|
+ this.value = opt.value;
|
|
|
+ } else if (typeof opt === 'string') {
|
|
|
+ this.label = opt;
|
|
|
+ this.value = opt;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
class OptionsField extends SimpleField {
|
|
|
- options: Option[];
|
|
|
+ options: Option[] = [];
|
|
|
constructor(meta: OptionsFieldMetaData) {
|
|
|
super(meta);
|
|
|
+ if (Array.isArray(meta.options)) {
|
|
|
+ this.options = meta.options.reduce((acc, opt) => { acc.push(new Option(opt)); return acc; }, []);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|