Builder updates
ArcGIS Experience Builder 1.17 includes several new features and enhancements as listed below:
- Accessibility—The Accordion widget supports accessibility features. Custom filters in the Filter widget support keyboard navigation. In theme settings, you can change the color of the focus indicator that shows which interactive element of the app page has keyboard focus. By default, the focus indicator color is linked to the primary theme color. It is a different shade of that color. Changing the primary theme color also changes the focus indicator color. If you change the focus indicator color with its associated color picker, the two colors un-link, but you can click Reset to re-link them. Job Hunting (A11Y) is a new scrolling-page template optimized for accessibility. You can find it on the ArcGIS Online tab of the template gallery. There is more documentation about the builder A11Y button.
- Actions—Adds two new data actions—Select and Show pop-up. You can use the Select data action to select loaded records. You can use the Show pop-up data action to make the pop-up appear on the map for selected, loaded, or current records. Object identifier fields are now excluded from use with the Statistics data action. Additionally, the Select widget and Feature Info widget load pop-up fields in data actions. If you run the Statistic data action with either widget, you can view statistics for fields used in pop-ups.
- Builder—When you duplicate a page, view, section, or window, widgets in the duplicate layout maintain the same relationships with each other and with the framework as the original widgets.
- Data sources—In widget settings, if you switch between data views that come from the same data source, the widget retains all of its settings. You do not need to reconfigure anything. Additionally, Experience Builder now supports dynamic imagery layers without field information. If you connect a widget, such as a Table widget or Select widget, to a Map widget with Interact with a Map widget mode and do not customize layers, any map layer fields that are used in popups are considered used fields and appear in exports from those widgets.
- Export—You can open the new Export settings panel from the Data panel in the builder. All maps and scenes in the app and their supported layers appear in a Layers list. You can allow exporting and choose supported file formats for individual layers. You can also use batch options to turn on exporting and choose file formats for all layers.
- Images—You can upload WebP images.
- Layer selector component—You can search for layers by name and use the Batch options drop-down menu to apply options to all available layers. The Edit, Map Layers, Processing Templates, Select, Swipe, and Table widgets all use this component.
- Sharing—If you click More in the toolbar at the top of the builder, you can scan QR codes to open the draft and published versions of an app. This is useful if you want to quickly view an app on a mobile device. You can also download .png files of the QR codes.
- Templates—Adds the Poster window template, the Booth and FAQ scrolling-page templates, the Catalog full-screen page template, and the Prism multi-page template.
- Updating—In the builder, widgets now update to the latest available version when you open at least one of their type of widget. Opening a widget means switching to the page or view that contains the widget. When you open a specific type of widget in the builder, all widgets of that type upgrade simultaneously. For example opening one Map widget updates all Map widgets in an app.
Widgets
Other improvements include the following new and updated widgets:
- Flow Row widget (new)—A layout container that you can use to position content in a continuous row on a page. It is similar to the Row widget, except the area of the Row widget is divided into 12 discrete columns, while the Flow Row widget is continuous, similar to a scrolling page and the Column widget. When you remove a widget from a Flow Row widget, any remaining widgets shift to fill the remaining space.
- Oriented Imagery Viewer widget (new)—Interact with and visualize oriented imagery layers, which can contain imagery captured from any angle—including oblique, bubble, street-side, inspection, and 360-degree images—in a 2D map or 3D scene. Oriented imagery can be sourced from a variety of camera devices, including mobile cameras, drones, and terrestrial sensors.
- Processing Templates widget (new)—Apply raster function templates to their associated imagery layers. ArcGIS imagery layers can have associated processing templates, called raster function templates, which are reusable items that can contain one or more raster functions chained together. You can use this widget to change imagery layer display on the fly.
- Add Data widget—At run time, you can drag the corners of the Add data panel to resize it. You can now sort items by relevance to the search term. You can upload multiple files at the same time from local storage. You can upload up to 30 files at once.
- Analysis widget—Adds two new spatial analysis tools—Tabulate Area and Zonal Geometry as Table. Tabulate Area calculates the cross-tabulated areas between two datasets and reports results as a table. Zonal Geometry as Table calculates geometry measures for each zone in a dataset and reports results as a table. If a parameter is not required (Required: False), you can uncheck the Visible check box to remove the parameter from the widget. The widget now supports map service layers as input layers and supports subtype group layers.
- Business Analyst widget—Adds documentation about adding a custom GeoEnrichment utility service by URL.
- Chart widget—For applicable charts, you can define the amount of space in pixels between tick marks on the value axis. There are three new label behaviors—Default, Stagger, and Wrap—that you can use to make category axis labels easier to read. You can include counts of values and percentage labels in pie chart legends. You can enter a message to display when no data is selected or the chart is otherwise not displaying data.
- Classic Oriented Imagery widget (previously the Oriented Imagery widget)—With the addition of the Oriented Imagery Viewer widget in this update, this widget is now named the Classic Oriented Imagery widget.
- Directions widget—You can edit a route by clicking the map to add stops and barriers. Barriers allow you to define parts of a road network that cannot be traversed. The new Optimize order tool calculates the best route for your stops using optimized routing. You can choose a system of measurement for values displayed in the widget, either imperial or metric. By default, this is the system defined in your profile settings. You can add point layers as search sources. You can limit search results to only include places or features within the current map extent. Additionally, you can enter a country code to limit search results to that country.
- Draw widget—If you turn on tooltips in the widget settings, users can press Tab to type values in the tooltips that appear while drawing features. Users can press Enter to set input values. Users can also press Tab to navigate between input fields. Additionally, the Draw widget now supports snapping settings. In the widget settings, you can use Flexible mode to allow users to change snapping settings at run time, or use Prescriptive mode to make the snapping settings you configure unchangeable by users at run time. In Flexible mode, you can turn on a grid that overlays on the map. Users can snap drawings to the grid. The widget also adds two new measurement units for length—nautical miles and yards—and one new unit for area—square yards.
- Edit widget—In Flexible mode, you can turn on a grid that overlays on the map. Users can snap features to the grid. If you attempt to do something that would discard any edits without saving them, such as change your selection, the widget warns you that you have unsaved edits that could be lost and prompts you to either confirm or cancel.
- Elevation Profile widget—You can allow the user to select one or multiple line segments at a time to generate an elevation profile. The widget now uses the Map widget highlight color to highlight features on the map. Selecting features with the Elevation Profile widget now also selects them at the data source level.
- Embed widget—The widget can autoplay a YouTube video if you include the autoplay parameter in a URL or HTML iframe. For a YouTube video to autoplay, your browser site settings must allow sound. If you display text in the Embed widget with HTML, you can apply the app theme font to the text.
- Feature Info widget—You can add a Clear selection button to the widget panel.
- Filter widget—You can add a Turn off all filters button to the widget panel. This update removes the limitation that caused the operators is in the last, is not in the last, is in the next, and is not in the next to only work with ArcGIS Online hosted feature services.
- List widget—Adds a new category for list templates—Flow. In these templates, list items are scroll vertically and behave like Flow Row widgets. When you remove a widget from one of these templates, any remaining widgets shift to fill the remaining space.
- Map widget—For 2D maps, you can limit the scale range that users can zoom to. Zoom levels can range from building rooms to the entire globe. One the scale range bar, an indicator shows the scale of the current map view. You can drag the minimum and maximum scales to change the range. You can also click the two drop-down menus to choose scales or enter specific scale values. The map bar or bars show the level of detail of the basemaps in the connected maps. If the minimum and maximum scale values are both outside of the level of detail range, a warning appears. Additionally, when you add a Zoom to message action and choose Automatic for the Zoom scale, the widget has an improved ability to zooms to appropriate scales. Specifically, when you configure the Zoom to message action with the Search widget and use a locator source, the locator source generates extent data when you search for an address of place, and Experience Builder now uses that extent data to zoom to an appropriate scale.
- Map Layers widget—You can choose to expand all group layers by default when the widget first loads. The new Visibility range tool lets you specify the zoom levels at which layers appear. You can include a Tables section in the widget that lists any tables from the connected map or scene. You can add a button at the top of the widget panel that opens a drop-down menu for applying batch options to all layers in the widget. You can add a tool for change the transparency of layers with a slider. You can choose to display layers added run time, with widgets such as the Add Data widget, in the layer list.
- Near Me widget—You can export to PDF. If you do not need advanced reporting capabilities, you want better performance, and you do not need to customize the print layout, exporting to PDF with the Export data action is the easiest way to generate a report. Additionally, you can save the input location of an analysis as a feature layer and save a search area as a polygon layer.
- Print widget—Supports dynamic elements in layouts from custom print services. You can have dynamic text and dynamic tables in a print layout. If there are any dynamic elements in a layout, you can click Select data to connect each element to a data source.
- Search widget—When there are multiple search sources, you choose to include the drop-down menu that allows users to turn individual sources on and off. When you choose Interact with a Map widget, you can limit search results to only include places within the current map extent. You can also allow users to perform local searches. Local searches prioritize results that are near the current map center. You can set a minimum scale at which to apply local search.
- Table widget—You can include an Attachments column at the end of each sheet in a table. If a feature has any attachments, you can view them from the Table widget. If a layer supports attachments and editing, and if the user has editing privileges, the user can add, update, and delete attachments.
- Text widget—You can insert images into a Text widget. You can upload files from local storage or by providing a URL. The Text widget supports https and base64 URLs. You can upload files in PNG, GIF, JPG, JPEG, BMP and WebP formats. There are three options for aligning images with text: You can place images in line with text, wrap text around images, or have text appear above and below images. You can set links on images and provide alternative text for assistive technology, such as screen readers.
Developer edition updates
- When you register a
client
with your organization to work with the developer edition, thisID client
by default will be used in the config.json file of your downloaded app.ID - You can now add your help documentation for your custom widgets. See the Add help to your widget topic under Widget development.
- Add a new component
Floating
in the StorybookPanel - The following new samples are available:
Breaking changes
jimu-arcgis
ArcGIS
is removed from theData Source Types jimu-arcgis
, useData
in theSource Types jimu-core
instead.All
is deprecated, useData Source Types Data
in theSource Types jimu-core
instead.- JimuMapView
- Method
get
returns theAll Jimu Layer Views Jimu
s by layer rendering order. The order of the returnedLayer View Jimu
s in the previous versions is random.Layer View
- Method
jimu-core
- All data source related interfaces are moved to
jimu-core
, import them like the below:Use dark colors for code blocks Copy import type { MapDataSource, FeatureLayerDataSource } from 'jimu-core'
jimu-core/data-source
entry is moved tojimu-data-source
.data
is moved fromSource Json Creator jimu-core/data-source
todata
, import it fromSource Utils jimu-core
.Use dark colors for code blocks Copy import { dataSourceUtils } from 'jimu-core' const dataSourceJsonCreator = dataSourceUtils.dataSourceJsonCreator
- Util
data
is removed, useSource Utils.format Date Field (value, esri Date Format : Esri Date Formats, intl : Intl Shape) date
instead.Utils.format Date Value By Esri Format(value : number | Date, esri Date Format : Esri Date Formats, intl : Intl Shape) - Util
data
is removed, useSource Utils.get Formatted Date Field Value(field, value : number, intl? : Intl Shape) date
instead.Utils.format Date Value By Esri Format(value : number | Date, esri Date Format : Esri Date Formats, intl : Intl Shape) - Util
date
is removed. There is no need to get date time format, please useUtils.get Date Time Format (intl : Intl Shape, date Format : Esri Date Formats | string, time Format? : string) date
to get date string from date value directly.Utils.format Date Value() - Util
date
is renamed toUtils.format Date Field(value, esri Date Format : Esri Date Formats, intl : Intl Shape) date
Utils.format Date Value By Esri Format(value : number | Date, esri Date Format : Esri Date Formats, intl : Intl Shape) - Util
date
is renamed toUtils.format Date Locally(value, intl : Intl Shape, date Pattern? : string, time Pattern? : string) date
Utils.format Date Value(value : number | Date, intl : Intl Shape, date Pattern? : string, time Pattern? : string) - ReactResizeDetector component:
on
function receives a single object now. Get the width and height parameters as the following:Resize Use dark colors for code blocks Copy onResize: ({ width, height, entry }) => { if (width && height) { ... } }
- Use
target
prop to set the element you want to detect size to, it must be an instance ofRef React.use
orRef React.create
function.Ref
jimu-ui
-
Popper component
- Prop
floating
is removed, useFloating
with propPanel reference
instead. - Prop
show
is deprecated, useArrow arrow
instead.Options - Prop
arrow
is deprecated, useStyle arrow
instead.Options - Prop
offset
is deprecated, useoffset
instead.Options - Prop
popper
is deprecated, useNode Ref ref
instead. - Prop
listen
is deprecated, useContext Popper Version auto
instead.Update - Prop
reference
is deprecated, useHidden Visibility hide
instead.Options - Prop
modifiers
is deprecated, usehide
,Options shift
,Options flip
,Options offset
andOptions size
instead.Options
- Prop
-
TextInput component
- If you use the
on
prop, please use theKey Up on
prop to replace it to handle thePress Enter Enter
event. Theon
will handle all key up events now.Key Up
- If you use the
-
The following classes are moved to
jimu-core
:Open
,Types Link
,Param IM
andLink Param Link
.Target -
Input
component is removedGroup Addon -
Select component
- The second parameter of prop
on
is changed to theChange value
of the option. - The following props have not been used and are removed:
- Prop
menu
is removed.Role - Prop
button
is removed.Props - Prop
menu
is removed.Props - Prop
is
is removed.Open - Prop
toggle
is removed. - Prop
tag
is removed. - Prop
nav
is removed. - Prop
fluid
is removed. - Prop
auto
is removed.Width - Prop
in
is removed.Navbar - Prop
is
is removed.Sub Menu Item - Prop
active
is removed.Icon - Prop
menu
is removed.Item Check Mode - Prop
support
is removed.Inside Nodes Accessible
- Prop
- The second parameter of prop
-
Option component
- Invalid prop
label
is deprecated, usechildren
instead.
- Invalid prop
-
DropdownMenu component
- Invalid prop
flip
is removed. - Invalid prop
in
is removed.Navbar - Prop
z
type is changed to number.Index
- Invalid prop
-
Component
Dropdown
is removed, useSub Menu Item Dropdown
component withis
instead.Sub Menu Item=true -
ScrollList component
- Prop
use
is renamed toWhell use
.Wheel
- Prop
-
Type
Popper
is removed.Instance -
Type
Popper
is removed.State -
Type
Modifier
is removed. -
Type
Base
is removed.Placement -
Type
Positioning
is removed.Strategy -
Method
use
is removed.Popper -
Method
create
is removed.Chained Function -
Method
get
is removed.Base Placement -
Method
get
is removed.Opposite Placement -
Method
get
is removed.Opposite Variation Placement -
Method
get
is removed.Variation -
Method
compute
is removed.Auto Placement -
Methods
get
,Max Size Modifier max
,Size Modifier apply
,Max Size Modifier apply
are deprecated, use the propsMax Size Modifier size
ofOptions Popper
component instead. -
Modal component
- Prop
container
is removed.
- Prop
-
jimu-ui/advanced/map
- JimuDraw component
- Add a required prop
operator
.Widget Id
- Add a required prop
- JimuDraw component
-
jimu-ui/basic/qr-code
- QRCode component
- Prop
include
is changed toMargin margin
.Size
- Prop
- QRCode component
-
jimu-ui/advanced/setting-components
- SettingRow component
- Deprecated prop
action
andon
have been removedDrill Down
- Deprecated prop
- SettingRow component
-
jimu-ui/advanced/chart
- Component
Bar
and typeChart Bar
are removed, useChart Props Chart
andChart
instead.Props - Component
Line
and typeChart Line
are removed, useChart Props Chart
andChart
instead.Props - Component
Pie
and typeChart Pie
are removed, useChart Props Chart
andChart
instead.Props - Component
Scatter
and typePlot Scatter
are removed, usePlot Props Chart
andChart
instead.Props - Component
Histogram
and typeHistogram
are removed, useProps Chart
andChart
instead.Props - Component
Gauge
and typeGauge
are removed, useProps Chart
andChart
instead.Props - Useless type
Chart
is removed.Component Event Callbacks - Useless type
Bar
is removed.And Line Data Label Format Callback - Useless type
Bar
is removed.And Line Tooltip Format Callback - Useless type
Histogram
is removed.Label Format Callback - Useless type
Pie
is removed.Chart Label Format Callback - Useless type
Pie
is removed.Chart Legend Value Label Format Callback - Useless type
Scatter
is removed.Plot Label Format Callback - Useless method
use
is removed.Register Event
- Component
New lint rules
- no-import-type-side-effects
- @typescript-eslint/no-empty-function
- no-unlimited-disable
- @typescript-eslint/require-await
- @typescript-eslint/switch-exhaustiveness-check
- @typescript-eslint/prefer-promise-reject-errors
- @typescript-eslint/max-params
- react-hooks/rules-of-hooks
- array-callback-return
- no-deprecated
- react/no-unused-class-component-methods
Previous releases
- Version 1.16 December 2024
- Version 1.15 July 2024
- Version 1.14 March 2024
- Version 1.13 November 2023
- Version 1.12 July 2023
- Version 1.11 March 2023
- Version 1.10 November 2022
- Version 1.9 June 2022
- Version 1.8 April 2022
- Version 1.7 January 2022
- Version 1.6 October 2021
- Version 1.5 July 2021
- Version 1.4 May 2021
- Version 1.3 January 2021
- Version 1.2 November 2020
- Version 1.1 July 2020