Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Export field types #483

Merged
merged 2 commits into from
Sep 22, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions src/field.ts
Original file line number Diff line number Diff line change
@@ -63,7 +63,7 @@ interface BaseField<T> {
*
* This includes numbers, dates and time fields.
*/
interface RangeField<T> extends BaseField<T> {
export interface RangeField<T> extends BaseField<T> {
max?: number;
min?: number;
step?: number;
@@ -72,37 +72,37 @@ interface RangeField<T> extends BaseField<T> {
/**
* Toggles/checkboxes
*/
interface BooleanField extends BaseField<boolean> {
export interface BooleanField extends BaseField<boolean> {
type: 'checkbox' | 'radio';
}

/**
* Any field that encodes itself as a string but with no
* special features.
*/
interface BasicStringField extends BaseField<string> {
export interface BasicStringField extends BaseField<string> {
type: 'color' | 'email' | 'password' | 'search' | 'tel' | 'url';
minLength?: number;
maxLength?: number;
}

interface RangeStringField extends RangeField<string> {
export interface RangeStringField extends RangeField<string> {
type: 'date' | 'month' | 'time' | 'week';
}

interface DateTimeField extends RangeField<Date> {
export interface DateTimeField extends RangeField<Date> {
type: 'datetime' | 'datetime-local';
}

interface HiddenField extends BaseField<string | number | null | boolean> {
export interface HiddenField extends BaseField<string | number | null | boolean> {
type: 'hidden';
}

interface FileField extends BaseField<never> {
export interface FileField extends BaseField<never> {
type: 'file';
}

interface NumberField extends RangeField<number> {
export interface NumberField extends RangeField<number> {
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<string> & {
export type SelectFieldSingle = BaseField<string> & {
type: 'select';
renderAs?: 'radio' | 'dropdown';
multiple?: false;
@@ -175,21 +175,21 @@ type SelectFieldSingle = BaseField<string> & {
/**
* An options field where users can select more than 1 item
*/
type SelectFieldMulti = BaseField<string> & {
export type SelectFieldMulti = BaseField<string> & {
type: 'select';
renderAs?: 'checkbox' | 'dropdown';
multiple: true;
} & OptionsDataSource;


interface TextField extends BaseField<string> {
export interface TextField extends BaseField<string> {
type: 'text';
minLength?: number;
maxLength?: number;
pattern?: RegExp;
}

interface TextAreaField extends BaseField<string> {
export interface TextAreaField extends BaseField<string> {
type: 'textarea';
minLength?: number;
maxLength?: number;
15 changes: 14 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
@@ -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';