canceraiddev/elm-form-builder/23.0.0

NOTE: the latest version is 28.0.1

Form.Field

Field type and helper functions

Field

type Field
= StringField_ StringField
| MultiStringField_ MultiStringField
| BoolField_ BoolField
| IntegerField_ IntegerField
= SimpleField SimpleFieldProperties
| DateField DateFieldProperties
| SelectField (SelectFieldProperties {})
| SearchableSelectField SearchableSelectFieldProperties
| HttpSelectField HttpSelectFieldProperties
| HttpSearchableSelectField HttpSearchableSelectFieldProperties
| RadioField RadioFieldProperties
= MultiSelectField (MultiSelectFieldProperties {})
| SearchableMultiSelectField SearchableMultiSelectFieldProperties
| MultiHttpSelectField MultiHttpSelectFieldProperties
| TagField TagFieldProperties
= CheckboxField CheckboxFieldProperties
| RadioBoolField RadioBoolFieldProperties
| RadioEnumField RadioEnumFieldProperties
= IntegerField IntegerFieldProperties

Properties

FieldProperties {}
type alias DateFieldProperties =
StringFieldProperties
{ tipe : DateFieldType
, parsedDate : Maybe Posix
}
StringFieldProperties
{ tipe : SimpleFieldType
, regexValidation : List RegexValidation
}
type alias SelectFieldProperties a =
StringFieldProperties
{ a
| default : Maybe String
, options : List Option
, placeholder : String
, hasSelectablePlaceholder : Bool
}
SelectFieldProperties
{ showDropdown : Bool
, searchInput : String
}
StringFieldProperties
{ url : String
, default : Maybe String
, options : RemoteData (Error String) (List Option)
, placeholder : String
, hasSelectablePlaceholder : Bool
, decoderForOptions : DecoderForOptions
}
StringFieldProperties
{ url : String
, default : Maybe String
, options : RemoteData (Error String) (List Option)
, placeholder : String
, hasSelectablePlaceholder : Bool
, showDropdown : Bool
, searchInput : String
, decoderForOptions : DecoderForOptions
}
MultiStringFieldProperties
{ a
| placeholder : String
, showDropdown : Bool
, options : List Option
}
MultiSelectFieldProperties
{ searchableOptions : List Option
, searchInput : String
}
MultiStringFieldProperties
{ placeholder : String
, showDropdown : Bool
, url : String
, options : RemoteData (Error String) (List Option)
, decoderForOptions : DecoderForOptions
}
StringFieldProperties
{ default : Maybe String
, options : List Option
, direction : Direction
}
type alias BoolFieldProperties a =
FieldProperties { a | value : Bool }
BoolFieldProperties { tipe : CheckboxFieldType }
FieldProperties { value : Maybe Bool }
FieldProperties
{ value : Maybe Value
, default : Maybe Value
, options : List Value
}
type alias StringFieldProperties a =
FieldProperties { a | value : String }
type alias TagFieldProperties =
MultiStringFieldProperties
{ inputBar : String
, placeholder : Maybe String
}
type alias FieldProperties a =
{ a
| required : IsRequired
, label : String
, width : Width
, enabledBy : Maybe String
, order : Int
, disabled : Bool
, hidden : Bool
, unhiddenBy : Maybe String
}
FieldProperties
{ tipe : IntegerFieldType
, value : Maybe Int
}

Default Properties

integerDefault : IntegerFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , tipe = { min = Nothing, max = Nothing } , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , value = Nothing }

checkboxDefault : CheckboxFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , value = False , tipe = FieldType.Checkbox }

dateDefault : DateFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , tipe = { min = Nothing, max = Nothing } , value = "" , parsedDate = Nothing }

emailDefault : SimpleFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , regexValidation = [] , tipe = FieldType.Email , value = "" }

httpSelectDefault : HttpSelectFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , value = "" , url = "" , default = Nothing , options = RemoteData.NotAsked , placeholder = "" , hasSelectablePlaceholder = False }

searchableSelectDefault : SearchableSelectFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , value = Set.empty , options = [] , placeholder = "" , showDropdown = False , searchableOptions = [] , searchInput = "" }

httpSearchableSelectDefault : HttpSearchableSelectFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , value = "" , url = "" , default = Nothing , options = RemoteData.NotAsked , placeholder = "" , hasSelectablePlaceholder = False , showDropdown = False , searchInput = "" }

multiHttpSelectDefault : MultiHttpSelectFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , value = Set.empty , options = RemoteData.NotAsked , placeholder = "" , showDropdown = False , url = "" }

multiSelectDefault : MultiSelectFieldProperties {}

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , value = Set.empty , options = [] , placeholder = "" , showDropdown = False }

phoneDefault : SimpleFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , regexValidation = [] , tipe = FieldType.Phone , value = "" }

timeDefault : SimpleFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , regexValidation = [] , tipe = FieldType.Time , value = "" }

radioBoolDefault : RadioBoolFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , value = Nothing }

radioDefault : RadioFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , value = "" , default = Nothing , options = [] , direction = Direction.Column }

radioEnumDefault : RadioEnumFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , value = Nothing , default = Nothing , options = [ RadioEnum.Yes, RadioEnum.No, RadioEnum.NA ] }

searchableMultiSelectDefault : SearchableMultiSelectFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , value = Set.empty , options = [] , placeholder = "" , showDropdown = False , searchableOptions = [] , searchInput = "" }

selectDefault : SelectFieldProperties {}

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , value = "" , default = Nothing , options = [] , placeholder = "" , hasSelectablePlaceholder = False }

tagDefault : TagFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , value = Set.empty , inputBar = "" , placeholder = Nothing }

textAreaDefault : SimpleFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , regexValidation = [] , tipe = FieldType.TextArea , value = "" }

textDefault : SimpleFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , regexValidation = [] , tipe = FieldType.Text , value = "" }

urlDefault : SimpleFieldProperties

{ required = Required.No , label = "" , width = Width.FullSize , enabledBy = Nothing , order = 0 , disabled = False , hidden = False , unhiddenBy = Nothing , regexValidation = [] , tipe = FieldType.Url , value = "" }

Constructors

integer : IntegerFieldProperties -> Field

Makes an age input field.

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
checkbox : CheckboxFieldProperties -> Field

Makes a checkbox field.

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
date : DateFieldProperties -> Field

Makes a date input field. By default, dates 100 years from the start of the Unix epoch (00:00:00 UTC on 1 January 1970) are allowed. Use setters to customise this.

In addition to the common builders, the following are available:

  • setDateOfBirth
  • setDateFuture
  • setDatePast
  • setDateBounds Time.Posix Time.Posix
  • setDateOffset ( TimeExtra.Interval, Int ) ( TimeExtra.Interval, Int )

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
httpSelect : String -> HttpSelectFieldProperties -> Field

Makes a remotely fetched drop-down select field.

In addition to the common builders, the following are available:

  • setDefault String
  • setOptions (RemoteData.RemoteData (HttpDetailed.Error String) (List Option.Option))
  • setPlaceholder String
  • setRemoteUrl String
  • setSelectablePlaceholder

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
text : SimpleFieldProperties -> Field

Makes an input field, defaulting to text input.

In addition to the common builders, the following are available:

  • setRegexValidation (List RegexValidation.RegexValidation)

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
multiHttpSelect : String -> MultiHttpSelectFieldProperties -> Field

Makes a remotely fetched multi select field.

In addition to the common builders, the following are available:

  • setOptions (List Option.Option)
  • setPlaceholder String
  • setRemoteUrl String

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
multiSelect : List Option -> MultiSelectFieldProperties {} -> Field

Makes a multi select field from a list of options.

In addition to the common builders, the following are available:

  • setOptions (List Option.Option)
  • setPlaceholder String

A list of options needs to be passed in, but setters passed in will override these.

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
radio : List Option -> RadioFieldProperties -> Field

Makes a radio field.

In addition to the common builders, the following are available:

  • setDefault String
  • setOptions (List Option.Option)
  • setDirection Direction.Direction

A list of options needs to be passed in, but setters passed in will override these.

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
radioBool : RadioBoolFieldProperties -> Field

Makes a boolean radio field.

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
radioEnum : RadioEnumFieldProperties -> Field

Makes a radio field for selection of Yes/No/N/A enums, with all three as an option by default. Override with setOptions.

In addition to the common builders, the following are available:

  • setDefault RadioEnum.Value
  • setOptions (List RadioEnum.Value)

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
searchableSelect : SearchableSelectFieldProperties -> Field

Makes a searchable select field, with options that are searchable.

In addition to the common builders, the following are available:

  • setDefault String
  • `setOptions (List Option.Option)
  • setPlaceholder String
  • setSelectablePlaceholder

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
httpSearchableSelect : String -> HttpSearchableSelectFieldProperties -> Field

Makes a remotely fetched drop-down searchable select field.

In addition to the common builders, the following are available:

  • setDefault String
  • setOptions (RemoteData.RemoteData (HttpDetailed.Error String) (List Option.Option))
  • setPlaceholder String
  • setRemoteUrl String
  • setSelectablePlaceholder

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
searchableMultiSelect : SearchableMultiSelectFieldProperties -> Field

Makes a searchable multi select field, with two categories of options: searchable and non-searchable. Neither category is mandatory, so make sure to set at least one for the field to be useful.

In addition to the common builders, the following are available:

  • setOptions (List Option.Option)
  • setSearchableOptions (List Option.Option)
  • setPlaceholder String

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
select : List Option -> SelectFieldProperties {} -> Field

Makes a drop-down select field from a list of options.

In addition to the common builders, the following are available:

  • setDefault String
  • setOptions (List Option.Option)
  • setPlaceholder String
  • setSelectablePlaceholder

A list of options needs to be passed in, but setters passed in will override these.

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
tag : TagFieldProperties -> Field

Makes a tag field.

In addition to the common builders, the following are available:

  • setTagsInputBar String
  • setPlaceholder (Maybe String)

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
url : SimpleFieldProperties -> Field

Makes a url field.

In addition to the common builders, the following are available:

  • setRegexValidation (List RegexValidation.RegexValidation)

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
phone : SimpleFieldProperties -> Field

Makes a phone field.

In addition to the common builders, the following are available:

  • setRegexValidation (List RegexValidation.RegexValidation)

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
time : SimpleFieldProperties -> Field

Makes a time field.

In addition to the common builders, the following are available:

  • setRegexValidation (List RegexValidation.RegexValidation)

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
textArea : SimpleFieldProperties -> Field

Makes a multiline text area field.

In addition to the common builders, the following are available:

  • setRegexValidation (List RegexValidation.RegexValidation)

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String
email : SimpleFieldProperties -> Field

Makes an email input field.

In addition to the common builders, the following are available:

  • setForbiddenEmailDomains (List EmailFormat.ForbiddenDomain)

Common builders:

  • setIsRequired Required.IsRequired
  • setLabel String
  • setWidth Width.Width
  • setEnabledBy String
  • setOrder Int
  • setDisabled
  • setHidden
  • setUnhiddenBy String

Construction Property Setters

setDateDefault : DateFieldProperties -> DateFieldProperties

Sets the selectable date to be any range.

setDateFuture : DateFieldProperties -> DateFieldProperties

Sets the selectable date range to be the next 10 years.

setDateOfBirth : DateFieldProperties -> DateFieldProperties

Sets the selectable date range to be the last 120 years.

setDatePast : DateFieldProperties -> DateFieldProperties

Sets the selectable date range to be the last 120 years.

setMinDate : Posix -> DateFieldProperties -> DateFieldProperties

Sets the max selectable date range to specified absolute date in POSIX time.

setMaxDate : Posix -> DateFieldProperties -> DateFieldProperties

Sets the max selectable date range to specified absolute date in POSIX time.

setMinDateOffset : ( Interval, Int ) -> DateFieldProperties -> DateFieldProperties

Sets the max selectable date range to specified interval relative to the current date. For example, to select a min date of 2 years ago, use: setMinDateOffset ( TimeExtra.Year, 2 )

setMaxDateOffset : ( Interval, Int ) -> DateFieldProperties -> DateFieldProperties

Sets the max selectable date range to specified interval relative to the current date. For example, to select a max date 5 years from now, use: setMaxDateOffset ( TimeExtra.Year, 5 )

setMin : Int -> IntegerFieldProperties -> IntegerFieldProperties

Sets the min integer value.

setMax : Int -> IntegerFieldProperties -> IntegerFieldProperties

Sets the max integer value.

d
-> FieldProperties { a | default : Maybe d }
-> FieldProperties { a | default : Maybe d }
setDirection : Direction -> RadioFieldProperties -> RadioFieldProperties
setDisabled : FieldProperties a -> FieldProperties a
setEnabledBy : String -> FieldProperties a -> FieldProperties a
List ForbiddenDomain
-> SimpleFieldProperties
-> SimpleFieldProperties
setHidden : FieldProperties a -> FieldProperties a
setIsRequired : IsRequired -> FieldProperties a -> FieldProperties a
setLabel : String -> FieldProperties a -> FieldProperties a
o
-> FieldProperties { a | options : o }
-> FieldProperties { a | options : o }
setOrder : Int -> FieldProperties a -> FieldProperties a
p
-> FieldProperties { a | placeholder : p }
-> FieldProperties { a | placeholder : p }
List RegexValidation
-> SimpleFieldProperties
-> SimpleFieldProperties
String
-> FieldProperties { a | url : String }
-> FieldProperties { a | url : String }
List Option
-> SearchableMultiSelectFieldProperties
-> SearchableMultiSelectFieldProperties
FieldProperties { a | hasSelectablePlaceholder : Bool }
-> FieldProperties { a | hasSelectablePlaceholder : Bool }
setTagsInputBar : String -> TagFieldProperties -> TagFieldProperties
setUnhiddenBy : String -> FieldProperties a -> FieldProperties a
v
-> FieldProperties { a | value : v }
-> FieldProperties { a | value : v }
setWidth : Width -> FieldProperties a -> FieldProperties a

Getters

getBoolProperties : Field -> Maybe Bool
getEnabledBy : Field -> Maybe String
getUnhiddenBy : Field -> Maybe String
getLabel : Field -> String
getIntegerValue : Field -> Maybe Int
getOrder : Field -> Int
getProperties : Field -> CommonFieldProperties
getStringValue : Field -> Maybe String
getUrl : Field -> Maybe String
getDecoderForOptions : Field -> Maybe DecoderForOptions

Setters

updateRadioBoolValue : Maybe Bool -> Field -> Field
updateRemoteOptions : RemoteData (Error String) (List Option) -> Field -> Field
updateMultiStringOption : Option -> Bool -> Field -> Field
maybeUpdateStringValue : Maybe String -> Field -> Field

Keep existing field if the value is Nothing

updateTagsValue : Bool -> String -> Field -> Field

Predicates

isCheckbox : Field -> Bool

Encode

encode : Field -> Value

Metadata

metadataKey : String -> Maybe String