Skip to content
import FieldInfo from "@arcgis/core/popup/FieldInfo.js";
Inheritance:
FieldInfoAccessor
Since
ArcGIS Maps SDK for JavaScript 4.11

The FieldInfo class defines how a Field participates, or in some cases, does not participate, in a PopupTemplate.

See also
Example
let fieldInfo = new FieldInfo({
fieldName: 'PROMINENCE_ft',
label: 'Prominence (feet)',
//autocasts to FieldInfo.Format
format: {
places: 0,
digitSeparator: true
}
});

Constructors

Constructor

Constructor
Parameters
ParameterTypeDescriptionRequired
properties
See the properties table for a list of all the properties that may be passed into the constructor.

Properties

Any properties can be set, retrieved or listened to. See the Watch for changes topic.

declaredClass

readonlyinherited Property
Type
string
Inherited from: Accessor

The name of the class. The declared class name is formatted as esri.folder.className.

fieldFormat

autocast Property
Type
FieldFormatUnion | null | undefined
Since
ArcGIS Maps SDK for JavaScript 4.34

Provides formatting options for numerical or date fields, using the same format types as the layer level field formatting. Setting this property automatically updates the format property. This property takes precedence over the format property when both are set and working with supported layer types. FieldInfo.fieldFormat should be used in the context of fields content used within PopupTemplate.content, rather than directly on the PopupTemplate.fieldInfos property.

Notes:

See also

fieldName

Property
Type
string | null | undefined

The field name as defined by the service or the ExpressionInfo.name of an Arcade expression. Arcade expression names are defined in the PopupTemplate.expressionInfos property of the PopupTemplate. When referencing Arcade expressions, you must preface the name with expression/, such as expression/percent-total.

See also

format

autocast Property
Type
FieldInfoFormat | null | undefined

Class which provides formatting options for numerical or date fields and how they should display. Setting this property will also automatically update the fieldFormat property.

Notes:

  • Use this property to format date and numerical fields in the following scenarios:
  • If formatting FieldsContent for a FeatureLayer, use the fieldFormat property to format dates and numbers instead. See the fieldFormat property description for limitations.
  • If displaying a timestamp-offset or date Field.type field in a Popup, Features, or Feature widget and the MapView has a MapView.timeZone set other than unknown, the abbreviated time zone suffix will be omitted from the attribute value. For example, the attribute value will display as 9/28/2014, 7:58 PM. To display an abbreviated time zone suffix, see the Read more section.
Read More
  • If the user wants date fields to show a time zone suffix (e.g. 9/28/2014, 7:58 PM PST), then the Arcade Text function can be used to format the field value. This can be done either with ExpressionContent or attribute expressions.
    // Attribute expression using expressionInfos to append the time zone suffix to a date field.
    // Date field types will show in the MapView's current time zone.
    layer.popupTemplate = {
    title: "Display time zones",
    fieldInfos: [{
    fieldName: "expression/date-with-time-zone-suffix",
    }],
    expressionInfos: [{
    expression: `Text($feature.date_Field, "M/D/Y, h:mm A ZZZZ")`,
    name: "date-with-time-zone-suffix",
    }],
    content: [{
    type: "fields"
    }]
    };
    // ExpressionContent to append the time zone suffix to a date field.
    // Date field types will show in the MapView's current time zone by default.
    layer.popupTemplate = {
    title: "Display time zones",
    content: [{
    type: "expression",
    expressionInfo: {
    expression: `return {
    type : 'text',
    text : Text($feature.date_Field, "M/D/Y, h:mm A ZZZZ")
    }`
    }
    }]
    };
  • If the user wants timestamp-offset fields to display in the time zone from the server with an abbreviated time zone suffix, then the Arcade Text function can be used to format the field value. This can be done either with ExpressionContent or attribute expressions.
    // Attribute expression using expressionInfos to append the time zone suffix to a timestamp-offset field.
    layer.popupTemplate = {
    title: "Display time zones",
    fieldInfos: [{
    fieldName: "expression/TSO-from-server",
    }],
    expressionInfos: [{
    expression: `Text($feature.TimestampOffset_Field, "M/D/Y, h:mm A ZZZZ")`,
    name: "TSO-from-server",
    }],
    content: [{
    type: "fields"
    }]
    };
    // ExpressionContent to append the time zone suffix to a timestamp-offset field.
    layer.popupTemplate = {
    title: "Display time zones",
    content: [{
    type: "expression",
    expressionInfo: {
    expression: `return {
    type : 'text',
    text : Text($feature.TimestampOffset_Field, "M/D/Y, h:mm A ZZZZ")
    }`
    }
    }]
    };
  • If the user wants timestamp-offset fields to display in the MapView's time zone with an abbreviated time zone suffix, then the ChangeTimeZone Arcade function can be used to format the value.
    // Attribute expression using expressionInfos to append the MapView's current time zone suffix to a timestamp-offset field
    layer.popupTemplate = {
    title: "Display time zones",
    fieldInfos: [{
    fieldName: "expression/TSO-matching-view-tz",
    }],
    expressionInfos: [{
    expression: `Text(ChangeTimeZone($feature.TimestampOffset_Field, GetEnvironment().timeZone), "M/D/Y, h:mm A ZZZZ")`,
    name: "TSO-matching-view-tz",
    }],
    content: [{
    type: "fields"
    }]
    };
    // ExpressionContent to append the MapView's current time zone suffix to a timestamp-offset field
    layer.popupTemplate = {
    title: "Display time zones",
    content: [{
    type: "expression",
    expressionInfo: {
    expression: `return {
    type: "text",
    text: Text(ChangeTimeZone($feature.TimestampOffset_Field, GetEnvironment().timeZone), "M/D/Y, h:mm A ZZZZ")
    }`
    }
    }]
    };
See also

isEditable

Property
Type
boolean

A Boolean determining whether users can edit this field. This is not applicable to Arcade expressions.

Default value
true

label

Property
Type
string | null | undefined

A string containing the field alias. Not applicable to Arcade expressions as the title is used instead.

statisticType

Property
Type
"count" | "sum" | "min" | "max" | "avg" | "stddev" | "var" | null | undefined

Used in a one:many or many:many relationship to compute the statistics on the field to show in the popup. If the property is present, must be one of the following values:

stringFieldOption

Property
Type
StringFieldOption

A string determining what type of input box editors see when editing the field. Applies only to string fields. This is not applicable to Arcade expressions. If this property is present, it must be one of the following values:

Default value
"text-box"

tooltip

Property
Type
string | null | undefined

A string providing an editing hint for editors of the field. This is not applicable to Arcade expressions.

visible

Property
Type
boolean

Indicates whether the field is visible in the popup window.

As of version 4.16, the default Popup.defaultPopupTemplateEnabled has been improved to no longer display system fields that do not hold significant value, e.g. Shape__Area and Shape__Length are two fields that no longer display.

Default value
true

Methods

MethodSignatureClass
fromJSON
inherited static
fromJSON(json: any): any
clone
inherited
clone(): this
toJSON
inherited
toJSON(): any

fromJSON

inheritedstatic Method
Signature
fromJSON (json: any): any
Inherited from: JSONSupportMixin

Creates a new instance of this class and initializes it with values from a JSON object generated from an ArcGIS product. The object passed into the input json parameter often comes from a response to a query operation in the REST API or a toJSON() method from another ArcGIS product. See the Using fromJSON() topic in the Guide for details and examples of when and how to use this function.

Parameters
ParameterTypeDescriptionRequired
json
any

A JSON representation of the instance in the ArcGIS format. See the ArcGIS REST API documentation for examples of the structure of various input JSON objects.

Returns
any

Returns a new instance of this class.

clone

inherited Method
Signature
clone (): this
Inherited from: ClonableMixin

Creates a deep clone of this object. Any properties that store values by reference will be assigned copies of the referenced values on the cloned instance.

Returns
this

A deep clone of the class instance that invoked this method.

toJSON

inherited Method
Signature
toJSON (): any
Inherited from: JSONSupportMixin

Converts an instance of this class to its ArcGIS portal JSON representation. See the Using fromJSON() guide topic for more information.

Returns
any

The ArcGIS portal JSON representation of an instance of this class.

Type definitions

StringFieldOption

Type definition
Type
"text-area" | "text-box" | "rich-text"