diff --git a/src/Fields.tsx b/src/Fields.tsx index 9eac86f..9635272 100644 --- a/src/Fields.tsx +++ b/src/Fields.tsx @@ -18,6 +18,7 @@ import { IVGSCollectDateField, IVGSCollectForm, VGSCollectStateParams, + IVGSCollectDropdownField, } from './types/Form'; import { @@ -212,6 +213,16 @@ const FileField = React.memo((props: Partial) => { + return ( + + ) +}); + export { TextField, CardNumberField, @@ -223,5 +234,6 @@ export { TextareaField, NumberField, FileField, - DateField + DateField, + DropdownField }; diff --git a/src/Form.tsx b/src/Form.tsx index 2587217..54c8e6e 100644 --- a/src/Form.tsx +++ b/src/Form.tsx @@ -9,7 +9,8 @@ import { SSNField, TextField, TextareaField, - ZipCodeField + ZipCodeField, + DropdownField } from './Fields'; import { DispatchStateContext, DispatchSubmitContext } from './provider'; import { FormStateProvider, DispatchFormContext } from './formStateProvider'; @@ -165,3 +166,4 @@ VGSCollectForm.TextareaField = TextareaField; VGSCollectForm.NumberField = NumberField; VGSCollectForm.FileField = FileField; VGSCollectForm.DateField = DateField; +VGSCollectForm.DropdownField = DropdownField diff --git a/src/constants.ts b/src/constants.ts index 4dd4b7c..fdfe4c0 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -52,6 +52,10 @@ const DEFAULT_CONFIG = { DATE: { type: 'date', placeholder: '' + }, + DROPDOWN: { + type: 'dropdown', + placeholder: '', } }; diff --git a/src/types/Form.ts b/src/types/Form.ts index 2dbe1ea..558d7e8 100644 --- a/src/types/Form.ts +++ b/src/types/Form.ts @@ -91,6 +91,11 @@ interface IFieldTokenization { storage?: StorageTypes; } +interface IDropdownOption { + value: string, + text: string +} + interface IDefaultFieldOptions { type: VGSCollectFieldType; name: string; @@ -108,6 +113,7 @@ interface IDefaultFieldOptions { readonly?: BooleanValue; inputMode?: InputMode; tokenization?: IFieldTokenization | boolean; + defaultValue?: string } type FieldConfig = @@ -191,6 +197,10 @@ interface IVGSCollectFileField extends IDefaultFieldOptions { maxFiled: number; } +interface IVGSCollectDropdownField extends IDefaultFieldOptions { + options?: IDropdownOption[] +} + interface IVGSCollectDateField extends IDefaultFieldOptions { type: 'date'; min?: number; @@ -306,6 +316,7 @@ export type { IVGSCollectTextareaField, IVGSCollectDateField, IVGSCollectFileField, + IVGSCollectDropdownField, ICollectFormProps, ICollectFormPayloadStructure, VGSCollectFormState,