# Interface PopupElementJson

Popup elements allow users to author popups, using multiple elements such as tabular views, string description, media (charts and images), and attachments of the attributes and control the order in which they appear. Specifically, popupElements do the following: 1) provide the ability to explicitly add a field/ value table in addition to a description, 2) allow adding multiple description elements, and 3) allow a user to author and consume elements of a popup in the order of their choosing.

Each popupElement has a type property. This string value indicates the type of popupElement used.

See https://developers.arcgis.com/web-map-specification/objects/popupElement/ and https://developers.arcgis.com/web-scene-specification/objects/popupElement/.

interface PopupElementJson {
attributes?: Record<string, unknown>;
description?: string;
displayCount?: number;
displayType?: string;
expressionInfo?: PopupExpressionInfoJson;
fieldInfos?: FieldInfoJson[];
mediaInfos?: MediaInfoJson[];
orderByFields?: OrderByFieldsJson[];
relationshipId?: number;
text?: string;
title?: string;
type?:
| "text"
| "fields"
| "media"
| "attachments"
| "expression"
| "relationship";
}

#### Hierarchy (view full)

- PopupElementJson
  - ContentProperties

#####
Index

### Properties

attributes?
description?
displayCount?
displayType?
expressionInfo?
fieldInfos?
mediaInfos?
orderByFields?
relationshipId?
text?
title?
type?

##
Properties

### `Optional` attributes

attributes?: Record<string, unknown>

A dictionary of key value pairs representing attributes to be used instead of fields and their values. This property is only used when the element is of type expression and should be returned as part of the arcade expression itself. This property allows passing arcade derived attribute values into fields or media elements.

### `Optional` description

description?: string

An optional string value describing the element in detail. This property does not apply when the type is text or expression.

### `Optional` displayCount

displayCount?: number

This property applies to elements of type relationship. An integer that indicates the maximum number of records to display.

### `Optional` displayType

displayType?: string

This property applies to elements of type attachments and relationship. A string value indicating how to display the attachment. Possible values are, 'preview', and 'list' for attachments types, and 'list' for relationship types. If list is specified, attachments show as links.

### `Optional` expressionInfo

expressionInfo?: PopupExpressionInfoJson

This property applies to elements of type expression. An Arcade expression that defines the pop-up element content.

### `Optional` fieldInfos

fieldInfos?: FieldInfoJson[]

This property applies to elements of type fields. It is an array of popupInfo.fieldInfo objects representing a field/value pair displayed as a table within the popupElement. If the fieldInfos property is not provided, the popupElement will display whatever is specified directly in the popupInfo.fieldInfos property.

### `Optional` mediaInfos

mediaInfos?: MediaInfoJson[]

This property applies to elements of type media. An array of popupInfo.mediaInfo objects representing an image or chart for display. If no mediaInfos property is provided, the popupElement will display whatever is specified in the popupInfo.mediaInfo property.

### `Optional` orderByFields

orderByFields?: OrderByFieldsJson[]

This property applies to elements of type relationship. Array of orderByFields objects indicating the field display order for the related records and whether they should be sorted in ascending 'asc' or descending 'desc' order.

### `Optional` relationshipId

relationshipId?: number

This property applies to elements of type relationship. The id of the relationship as defined in the feature layer definition.

### `Optional` text

text?: string

This property applies to elements of type text. This is string value indicating the text to be displayed within the popupElement. If no text property is provided, the popupElement will display whatever is specified in the popupInfo.description property.

### `Optional` title

title?: string

An optional string value indicating what the element represents. This property does not apply when the type is text or expression.

### `Optional` type

type?:
| "text"
| "fields"
| "media"
| "attachments"
| "expression"
| "relationship"

String value indicating which element to use.