diff --git a/src/field.ts b/src/field.ts index 95892b5..121de24 100644 --- a/src/field.ts +++ b/src/field.ts @@ -63,7 +63,7 @@ interface BaseField { * * This includes numbers, dates and time fields. */ -interface RangeField extends BaseField { +export interface RangeField extends BaseField { max?: number; min?: number; step?: number; @@ -72,7 +72,7 @@ interface RangeField extends BaseField { /** * Toggles/checkboxes */ -interface BooleanField extends BaseField { +export interface BooleanField extends BaseField { type: 'checkbox' | 'radio'; } @@ -80,29 +80,29 @@ interface BooleanField extends BaseField { * Any field that encodes itself as a string but with no * special features. */ -interface BasicStringField extends BaseField { +export interface BasicStringField extends BaseField { type: 'color' | 'email' | 'password' | 'search' | 'tel' | 'url'; minLength?: number; maxLength?: number; } -interface RangeStringField extends RangeField { +export interface RangeStringField extends RangeField { type: 'date' | 'month' | 'time' | 'week'; } -interface DateTimeField extends RangeField { +export interface DateTimeField extends RangeField { type: 'datetime' | 'datetime-local'; } -interface HiddenField extends BaseField { +export interface HiddenField extends BaseField { type: 'hidden'; } -interface FileField extends BaseField { +export interface FileField extends BaseField { type: 'file'; } -interface NumberField extends RangeField { +export interface NumberField extends RangeField { type: 'number' | 'range'; } @@ -166,7 +166,7 @@ export type OptionsDataSource = { /** * Encodes a field that has a list of options a user can choose from. */ -type SelectFieldSingle = BaseField & { +export type SelectFieldSingle = BaseField & { type: 'select'; renderAs?: 'radio' | 'dropdown'; multiple?: false; @@ -175,21 +175,21 @@ type SelectFieldSingle = BaseField & { /** * An options field where users can select more than 1 item */ -type SelectFieldMulti = BaseField & { +export type SelectFieldMulti = BaseField & { type: 'select'; renderAs?: 'checkbox' | 'dropdown'; multiple: true; } & OptionsDataSource; -interface TextField extends BaseField { +export interface TextField extends BaseField { type: 'text'; minLength?: number; maxLength?: number; pattern?: RegExp; } -interface TextAreaField extends BaseField { +export interface TextAreaField extends BaseField { type: 'textarea'; minLength?: number; maxLength?: number; diff --git a/src/index.ts b/src/index.ts index d48b6d4..638562c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -26,7 +26,20 @@ export { default as oauth2 } from './http/oauth2'; export { Problem } from './http/error'; export { Action } from './action'; -export { Field } from './field'; +export { + Field, + BooleanField, + BasicStringField, + DateTimeField, + FileField, + HiddenField, + NumberField, + SelectFieldSingle, + SelectFieldMulti, + RangeStringField, + TextAreaField, + TextField +} from './field'; export { FollowPromiseOne, FollowPromiseMany } from './follow-promise';