A subclass of [ObjectField]ObjectField which embeds some other DataModel definition as an inner object.

Hierarchy (view full)

Constructors

Properties

model: typeof DataModel

The base DataModel definition which is contained in this field.

fields: DataSchema

The contained field definitions.

unknownKeys: string[]

Any unknown keys encountered during the last cleaning.

name: string

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

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

recursive: boolean = true
hierarchical: boolean = false

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

Accessors

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

    Returns string

  • get _defaults(): object
  • Default parameters for this field type

    Returns object

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

    Returns boolean

Methods

  • 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

    • options: any

      Additional options for how the field is cleaned

    Returns any

    The cast value

  • 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

    • value: any

      The initial value

    • options: any

      Options which affect validation behavior

    Returns DataModelValidationFailure

    Returns a DataModelValidationFailure if a validation failure occurred.

  • Parameters

    • value: any
    • model: any
    • options: {} = {}

      Returns any

    • Parameters

      • sourceData: any
      • fieldData: any

      Returns void

    • An array of field names which are present in the schema.

      Returns string[]

    • Test whether a certain field name belongs to this schema definition.

      Parameters

      • fieldName: string

        The field name

      Returns boolean

      Does the named field exist in this schema?

    • Get a DataField instance from the schema by name

      Parameters

      • fieldName: string

        The field name

      Returns DataField

      The DataField instance or undefined

    • Traverse the schema, obtaining the DataField definition for a particular field.

      Parameters

      • fieldName: string | string[]

        A field path like ["abilities", "strength"] or "abilities.strength"

      Returns SchemaField | DataField

      The corresponding DataField definition for that field, or undefined

    • Parameters

      • value: any

      Returns any

    • Apply any cleaning logic specific to this DataField type.

      Parameters

      • data: any

        The appropriately coerced value.

      • options: {} = {}

        Additional options for how the field is cleaned.

        Returns any

        The cleaned value.

      • Parameters

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

            Returns {}

            • Iterate over a SchemaField by iterating over its fields.

              Returns Generator<any, void, unknown>

            • 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

            • 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

              Initialize and validate the structure of the provided field definitions.

              Parameters

              • fields: DataSchema

                The provided field definitions

              Returns DataSchema

              The validated schema

            • 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

              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.