A subclass of foundry.data.fields.DataField that defines a union of schema-constrained objects discriminable via a type property.

Hierarchy (View Summary)

Constructors

Properties

name: undefined | string

The field name of this DataField instance. This is assigned by SchemaField#initialize.

The initially provided options which configure the data field

parent: any

A reference to the parent schema to which this DataField belongs. This is assigned by SchemaField#initialize.

types: { [type: string]: SchemaField }

The types of this field.

hierarchical: boolean = false

Whether this field defines part of a Document/Embedded Document hierarchy.

recursive: boolean = true

Accessors

  • get fieldPath(): string

    A dot-separated string representation of the field path within the parent schema.

    Returns string

  • get _defaults(): DataFieldOptions & { required: boolean }

    Default parameters for this field type

    Returns DataFieldOptions & { required: boolean }

  • get hasFormSupport(): boolean

    Does this form field class have defined form support?

    Returns boolean

Methods

  • Parameters

    • source: any
    • changes: any
    • options: {} = {}

    Returns void

  • Parameters

    • value: any

    Returns any

  • Internal

    Cast a change delta into an appropriate type to be applied to this field.

    Parameters

    • delta: any

      The change delta.

    Returns any

  • Parameters

    • value: any
    • options: any

    Returns any

  • Internal

    Commit a prepared update to DataModel#_source.

    Parameters

    • source: any

      The parent source object within which the key field exists

    • key: any

      The named field in source to commit

    • value: any

      The new value of the field which should be committed to source

    • diff: any

      The reported change to the field

    • options: any

      Options which modify how this update workflow is performed.

    Returns void

  • Internal

    Update the source data for a DataModel which includes this DataField. This method is responsible for modifying the provided source data as well as updating the tracked diff included in provided metadata.

    Parameters

    • source: any

      Source data of the DataModel which should be updated. This object is always a partial node of source data, relative to which this field belongs.

    • key: any

      The name of this field within the context of the source data.

    • value: any

      The candidate value that should be applied as an update.

    • difference: any

      The accumulated diff that is recursively populated as the model traverses through its schema fields.

    • options: any

      Options which modify how this update workflow is performed.

    Returns void

    An error if the requested update cannot be performed.

  • Internal

    Certain fields may declare joint data validation criteria. This method will only be called if the field is designated as recursive.

    Parameters

    • data: object

      Candidate data for joint model validation

    • options: object = {}

      Options which modify joint model validation

    Returns void

    An error if joint model validation fails

  • Parameters

    • value: any

    Returns undefined | boolean

  • Parameters

    • fn: any
    • data: {} = {}
    • options: {} = {}

    Returns {}

  • Coerce source data to ensure that it conforms to the correct data type for the field. Data coercion operations should be simple and synchronous as these are applied whenever a DataModel is constructed. For one-off cleaning of user-provided input the sanitize method should be used.

    Parameters

    • value: any

      An initial requested value

    • Optionaloptions: { partial?: boolean; source?: object } = {}

      Additional options for how the field is cleaned

      • Optionalpartial?: boolean

        Whether to perform partial cleaning?

      • Optionalsource?: object

        The root data model being cleaned

    Returns any

    The cast value

  • Attempt to retrieve a valid initial value for the DataField.

    Parameters

    • data: object

      The source data object for which an initial value is required

    Returns any

    A proposed initial value

  • Parameters

    • value: any
    • model: any
    • options: any

    Returns any

  • Migrate this field's candidate source data.

    Parameters

    • sourceData: object

      Candidate source data of the root model

    • fieldData: any

      The value of this field within the source data

    Returns void

  • Render this DataField as a standardized form-group element.

    Parameters

    • groupConfig: FormGroupConfig = {}

      Configuration options passed to the wrapping form-group

    • inputConfig: FormInputConfig = {}

      Input element configuration options passed to DataField#toInput

    Returns HTMLDivElement

    The rendered form group element

  • Render this DataField as an HTML element.

    Parameters

    Returns HTMLElement | HTMLCollection

    A rendered HTMLElement for the field

    An Error if this DataField subclass does not support input rendering

  • Validate a candidate input for this field, ensuring it meets the field requirements. A validation failure can be provided as a raised Error (with a string message), by returning false, or by returning a DataModelValidationFailure instance. A validator which returns true denotes that the result is certainly valid and further validations are unnecessary.

    Parameters

    Returns void | DataModelValidationFailure

    Returns a DataModelValidationFailure if a validation failure occurred.

  • Protected

    Render this DataField as an HTML element. Subclasses should implement this method rather than the public toInput method which wraps it.

    Parameters

    Returns HTMLElement | HTMLCollection

    A rendered HTMLElement for the field

    An Error if this DataField subclass does not support input rendering