An abstract class that defines the base pattern for a data field within a data schema.

Abstract

Mixes

DataFieldOptions

Hierarchy (view full)

Constructors

Properties

name: string

The name of this data field within the schema that contains it.

parent: DataField

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

The initially provided options which configure the data field

hierarchical: boolean = false

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

recursive: boolean = false

Does this field type contain other fields in a recursive structure? Examples of recursive fields are SchemaField, ArrayField, or TypeDataField Examples of non-recursive fields are StringField, NumberField, or ObjectField

Accessors

  • get fieldPath(): string
  • A dot-separated string representation of the field path within the parent schema.

    Returns string

  • get hasFormSupport(): boolean
  • Does this form field class have defined form support?

    Returns boolean

Methods

  • Apply a function to this DataField which propagates through recursively to any contained data schema.

    Parameters

    • fn: string | Function

      The function to apply

    • value: any

      The current value of this field

    • Optional options: object = {}

      Additional options passed to the applied function

    Returns object

    The results object

  • 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

      The initial value

    • Optional options: {
          partial: boolean;
          source: object;
      } = {}

      Additional options for how the field is cleaned

      • partial: boolean

        Whether to perform partial cleaning?

      • source: 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 valid initial value

    Throws

    An error if there is no valid initial value defined

  • 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 DataModelValidationFailure

    Returns a DataModelValidationFailure if a validation failure occurred.

  • 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

    Throws

    An error if joint model validation fails

  • Initialize the original source data into a mutable copy for the DataModel instance.

    Parameters

    • value: any

      The source value of the field

    • model: Object

      The DataModel instance that this field belongs to

    • Optional options: object = {}

      Initialization options

    Returns any

    An initialized copy of the source data

  • Export the current value of the field into a serializable object.

    Parameters

    • value: any

      The initialized value of the field

    Returns any

    An exported representation of the field

  • Internal

    Recursively traverse a schema and retrieve a field specification by a given path

    Parameters

    • path: string[]

      The field path as an array of strings

    Returns DataField

  • Render this DataField as an HTML element.

    Parameters

    • config: FormInputConfig = {}

      Form element configuration parameters

    Returns HTMLElement | HTMLCollection

    A rendered HTMLElement for the field

    Throws

    An Error if this DataField subclass does not support input rendering

  • 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

  • Apply an ActiveEffectChange to this field.

    Parameters

    • value: any

      The field's current value.

    • model: DataModel

      The model instance.

    • change: EffectChangeData

      The change to apply.

    Returns any

    The updated value.

  • Internal

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

    Parameters

    • delta: any

      The change delta.

    Returns any

  • Protected

    Apply any cleaning logic specific to this DataField type.

    Parameters

    • value: any

      The appropriately coerced value.

    • Optional options: object

      Additional options for how the field is cleaned.

    Returns any

    The cleaned value.

  • Protected

    Cast a non-default value to ensure it is the correct type for the field

    Parameters

    • value: any

      The provided non-default value

    Returns any

    The standardized value

  • Protected

    Special validation rules which supersede regular field validation. This validator screens for certain values which are otherwise incompatible with this field like null or undefined.

    Parameters

    • value: any

      The candidate value

    Returns boolean | void

    A boolean to indicate with certainty whether the value is valid. Otherwise, return void.

    Throws

    May throw a specific error if the value is not valid

  • Protected

    A default type-specific validator that can be overridden by child classes

    Parameters

    Returns boolean | void | DataModelValidationFailure

    A boolean to indicate with certainty whether the value is valid, or specific DataModelValidationFailure information, otherwise void.

    Throws

    May throw a specific error if the value is not valid

  • Protected

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

    Parameters

    • config: FormInputConfig

      Form element configuration parameters

    Returns HTMLElement | HTMLCollection

    A rendered HTMLElement for the field

    Throws

    An Error if this DataField subclass does not support input rendering

  • Protected

    Apply an ADD change to this field.

    Parameters

    • value: any

      The field's current value.

    • delta: any

      The change delta.

    • model: DataModel

      The model instance.

    • change: EffectChangeData

      The original change data.

    Returns any

    The updated value.

  • Protected

    Apply a MULTIPLY change to this field.

    Parameters

    • value: any

      The field's current value.

    • delta: any

      The change delta.

    • model: DataModel

      The model instance.

    • change: EffectChangeData

      The original change data.

    Returns any

    The updated value.

  • Protected

    Apply an OVERRIDE change to this field.

    Parameters

    • value: any

      The field's current value.

    • delta: any

      The change delta.

    • model: DataModel

      The model instance.

    • change: EffectChangeData

      The original change data.

    Returns any

    The updated value.

  • Protected

    Apply an UPGRADE change to this field.

    Parameters

    • value: any

      The field's current value.

    • delta: any

      The change delta.

    • model: DataModel

      The model instance.

    • change: EffectChangeData

      The original change data.

    Returns any

    The updated value.

  • Protected

    Apply a DOWNGRADE change to this field.

    Parameters

    • value: any

      The field's current value.

    • delta: any

      The change delta.

    • model: DataModel

      The model instance.

    • change: EffectChangeData

      The original change data.

    Returns any

    The updated value.

  • Protected

    Apply a CUSTOM change to this field.

    Parameters

    • value: any

      The field's current value.

    • delta: any

      The change delta.

    • model: DataModel

      The model instance.

    • change: EffectChangeData

      The original change data.

    Returns any

    The updated value.