What's new 1.16

Builder updates

ArcGIS Experience Builder 1.16 includes several new features and enhancements as listed below:

  • Actions—Adds the Edit data action. You can use this new data action to select a feature in another widget, open an Edit widget, and start editing the feature. The target Edit widget must be in a Widget Controller widget and must be connected to the same data source as the source widget. A Table widget can now target itself with the View in table data action. This is useful if you want to, for example, select some records and view them in a new sheet in the same table. Some message actions, including Zoom to, now prompt you to choose trigger data. Trigger data is the data that triggers the message action. It can either be all of the data connected to the source widget, or some specific data. If you use the Show on map data action to view features from another widget in a Map widget, the features that you add to the map also appear in layer lists. A Map widget now returns to its default extent after you unselect a feature in a List widget that is configured with the Zoom to or Pan to message actions. Additionally, widgets that you move to the pending list do not appear as available targets when you are adding a message action. If you move a widget to the pending list that is already the target of a message action, that message action is turned off only for the device modes where you moved the widget to the pending list.
  • Builder—In the settings of the Button, Menu, Views Navigation, and Widget Controller widgets, if any of the sections under Advanced are gray-ed out, it means the settings are synced to the theme. If you customize any of the advanced settings, the new Reset button appears next to each section that you customize. Click this button to return to the theme style.
  • Data sources—Experience Builder now supports subtype group layers. For many widgets, the way you connect to a data source is unified and improved. The Edit widget, Feature Info widget, Map Layers widget, Search widget, Select widget, and Table widget now all have two options for connecting to data—connect to individual data sources or interact with a Map widget. When you choose to interact with a Map widget, the interacting widget connects to the first map on the current page automatically and syncs with data from the map.
  • Express mode—Express mode is a new app editing mode that focuses on the most essential features. It is a simplified version of Experience Builder designed to let you efficiently make an app. You can start with nine different map-centric templates. You can add widgets in specific places in each template, and each template is optimized for medium- and small-screen devices. If you start in express mode and then decide you want to access all of Experience Builder's app editing features, you can move an app from express mode to full mode. However, you cannot move an app from full mode to express mode.
  • Style settings—In widget style settings, you can now style all sides of the widget panel border at the same time or style each of them separately. This enhancement also applies to widgets that have border settings in their Content settings (List, Card, Button, and Views Navigation).
  • Templates—Adds the Edifice fullscreen template, the Vista multi-page template, and two new scrolling page templates—Recap and Skyline.
  • URL parameters—Adds the zoom_to_selection parameter. To make all maps zoom to selected features, you can add zoom_to_selection=true to the app URL. To make all maps pan to selected features, you can add zoom to selection=false. The General tab on the left of the builder now includes a Zoom to selected features check box under Manage URL status. The check box appears if you turn on Data selection. Check the box to include the zoom_to_selection=true parameter in the app URL when the user selects a feature.

Widgets

Other improvements include the following new and updated widgets:

  • Accordion widget (new)—The Accordion widget is a layout container that you can use to organize other widgets into a vertically stacked menu with expand and collapse buttons.
  • Add Data widget—You can choose to include the Rename button for each added data source in the widget panel at run time.
  • Analysis widget—You can edit the names of custom geoprocessing tools that you add in the widget's settings. Geoprocessing tools can return many different kinds of error, warning, and status messages, and you can now choose which kinds of messages you want a custom tool to give to users. The widget supports three new data types—GPArealUnit, GPMultiValue:GPArealUnit, and GPComposite—as input and output data for custom geoprocessing tools.
  • Basemap Gallery widget—When you are importing basemaps, you can now sort basemaps by relevance to a search term, date modified, title, view count, or owner. For those last four cateogires you can also choose a sort direction. Additionally, you can add basemaps by URL. The widget supports five types of basemap layers by URL—VectorTileLayer, ImageryLayer, ImageryTileLayer, TileLayer, and MapImageLayer. You can edit the attributes, including the label and thumbnail, of a basemap that you add by URL.
  • Bookmark widget—You can hide bookmark names from bookmarks in the grid, gallery, and slides templates. If the template you choose supports bookmark names or descriptions, you can customize the font, style, color, and size. You can hide bookmark icons from the list template. You can choose to honor bookmark sizing from the connected web map or web scene. The Bookmark widget automatically connects to the first Map widget in the current page and displays any bookmarks from that map by default. The settings for customizing a bookmark's title, description, and image are improved to make them more user friendly.
  • Business Analyst widget—Adds more ways to calculate travel time buffers. You can create buffers based on driving time, rural driving time, and trucking time. For all three, you can choose a travel direction, either away from the facility or towards the facility. Additionally, you can include traffic in travel time calculations, based on either live traffic or typical traffic for a specific time and day of the week. You can set a time offset for traffic conditions.
  • Coordinates widget—You can use the new Use transform forward setting to specify whether you want to perform a datum transformation in the forward or reverse direction. You can enter a label for each coordinate system that you add. By default, the label is the coordinate system's name.
  • Chart widget—You can now use a layer's symbology to color a chart. The bar and column charts now support time binning when you make the category field a date field. For line charts, if you use a number field as the category field, you can numerically parse the field as continuous or discrete on an axis. Parsing is the process of converting a string representation of a number into a numeric representation. You can turn off x- and y- axis labels. For series charts, you can hide any series that is empty, meaning it contains no data points, from the chart and legend. The widget now generates a default title based on your data. You can change this title in the widget's settings. You can now customize the label for an auxiliary guide by changing its color, style, and size. Additionally, the Chart widget no longer supports using ID fields for statistics other than count. If you have an existing chart that does this, the chart may fail and you should reconfigure the widget.
  • Directions widget—In the widget's settings, you can choose to include route layers created by the Directions widget to appear in the layer lists, such as the Map Layers widget and the Map widget Layers tool.
  • Draw widget—Adds a text drawing tool for writing text on a map. The tool includes common text formatting options that let you customize the font, font size, color, outline width, outline color, opacity, background color, and background opacity. Additionally, you can now include drawn features as a layer in layer lists, such as the Map Layers widget and the Map widget Layers tool.
  • Edit widget—You can connect individual data sources or interact with a Map widget. If you connect the Edit widget to a Map widget, all layers from the Map widget are automatically synced to the Edit widget. If you only want to connect specific map layers to the widget, you can open the Select layers panel and turn on Customize layers. You can have the Enable tooltips option be turned on by default when the widget first loads. You can show vertices for selected line and polygon features. Users can drag, add, and delete vertices. The Edit features and Create features sections now only appear in the widget panel at run time if you turn on the relevant editing capabilities in the widget's settings.
  • Elevation Profile widget—You can generate an elevation profile from multiple elevation layers. You can select lines from layers added at run time with the Add Data widget and use them to generate an elevation profile. Highlight next selectable is a new setting under Selectable Layers. You can choose whether to highlight connected line segments that can be selected next.
  • Feature Info widget—The new Show index setting lets you show the total number of features in a layer.
  • Filter widget—If you want users to create their own filter clauses at run time, you can add custom filters in the widget's settings. When you add a custom filter, you choose the data, and at run time the user can add clauses and clause sets using an expression builder.
  • Grid widget—The buttons in the widget toolbar for adding new grid items, formerly named Split horizontally and Split vertically, are now named Insert after and Insert below. Additionally, you can choose a grid item to appear first when the app is viewed on a small-screen device.
  • Map widget—You can make pop-ups appear at the Default docked position or switch to Custom and choose one of six anchor points within the frame of the Map widget. The default position is the top right corner of the map on large- and medium-screen devices and the bottom of the map on small-screen devices. The zoom_to_selection URL parameter now supports all three selection types: selections based on recordID (id), selection based on features' locations relative to other features (geometry), and selections based on attributes (where). If you configure another widget to target the Map widget with the Record selection changes trigger and the Zoom to or Pan to action, the map automatically zooms or pans back to its initial extent once you remove the selection. If you use the Show on map message or data action to view features from another widget in a Map widget, the features that you add to the map also appear in layer lists, and you can use the new Set as operational layers setting to enable pop-ups for those layers. Some message actions, including Zoom to and Pan to, now prompt you to choose trigger data. Trigger data is the data that triggers the message action. It can either be all of the data connected to the source widget, or some specific data. When you configure the Record selection changes trigger with the Flash or Filter actions, you can use the new Automatic setting to make the widget flash or filter if the data from the source widget is in the Map widget. To save space, the settings in the Map widget's settings panel are collapsed by default.
  • Map Layers widget—You can turn pop-ups on or off for each layer. When pop-ups are turned on for a layer, they appear when you click a feature in that layer.
  • Menu widget—You can enter a border radius for the widget background in pixels or percent.
  • My Location widget—Now out of beta. Layer visibility settings are synced between the My Location widget and the Swipe, Map Layers, and Map widgets. If you hide a layer in one widget, it is also hidden for the other widgets. You can show the Locations and Paths layers created by the My Location widget in the layer lists of other widgets, such as the Map Layers widget and the Map widget Layers tool.
  • Near Me widget—If a data source has related data and you configure related records in pop-ups in Map Viewer, you can view related records in the Near Me widget. You can include polygons that intersect with an input location in results. You can choose to include features from layers that have their visibility turned off in an analysis results. A loading icon now appears while an analysis is running. Users can click this icon to cancel an analysis if it is taking too long. Additionally, the widget supports five more data actions—Zoom to, Pan to, Show on map, Set location, and Plan route.
  • Query widget—You can allow users to run spatial filters with runtime data, such as layers added with the Add Data widget.
  • Search widget—You can add individual search sources or interact with a Map widget. If you connect to a Map widget, by default the Search widget uses any layer and locators that are already configured as map search sources. If you want to change the search sources you can turn on Customize search sources and select available sources from the list that appears, or add new sources by clicking New search source. Additionally, in the Select data panel you can click a web map or service to add all of its layers as search sources at the same time. You can automatically select the first result when the user performs a search without having to turn on the result panel. If you are using the ArcGIS World Geocoding Service, you can enter a country code to narrow search results to that country.
  • Select widget—There are two ways to connect the widget to data—you can add individual data sources or interact with a Map widget. If you connect to a Map widget, all visible layers in the connected maps or scenes are automatically synced to the Select widget. You can turn on Customize layers to choose specific layers to make selectable.
  • Sidebar widget—When you configure the Open sidebar message action with the Record selection changes trigger, you are prompted to choose trigger data. Trigger data is the data that triggers the message action. It can either be all of the data connected to the source widget, or some specific data. Additionally, you can set the size of the sidebar based on percent of the widget panel.
  • Table widget—You can connect individual layers or interact with a Map widget. If you connect to a Map widget, any web maps or web scenes in the Map widget appear in a list in the Table widget's settings. Optionally, you can choose which layers from these maps and scenes to include in the table. Additionally, the Table widget can target itself with the View in table data action. This is useful if you want to, for example, select some records and view them in a new sheet in the same table. The new Filter by map extent tool allows you to filter the table based on the current map extent.
  • Text widget—You can apply heading and paragraph formatting to text. You can apply six different heading levels. When you select the entire text box, text font color now also applies to bullets and numbering in lists.
  • Timeline widget—You can connect individual data sources or interact with a Map widget. If you connect to a Map widget, the Timeline widget automatically syncs any time-aware data from the Map widget. There is a new method for visualizing data, Show current features. With this option, the widget only shows data at one particular point in time. The timeline will have a point that modes along the slider. Additionally, you can now choose to have the Timeline filtering applied option be turned on or off by default when the widget first loads at run time. You can set a level of display accuracy for the widget, ranging from years to seconds.
  • Views Navigation widget—You can enter a border radius for the widget background in pixels or percent.
  • Widget Controller widget—You can align widgets in the controller. Note that you will only notice a difference between alignments if the width or height of the controller is greater than the total length of the widgets. If there are too many widgets to fit in the length of the controller, you can now add arrows for navigating through all the widgets or add an icon labeled More widgets to the end of the controller. When the user clocks this icon, a window appears listing the remaining widgets. When you configure the Open widget message action, you are now prompted to choose trigger data. Trigger data is the data that triggers the message action. It can either be all of the data connected to the source widget, or some specific data. Additionally, the widget toolbar now includes the Manage widgets button. You can click this button to view a list of all the widgets in the controller. You can reorder widgets, remove them, or place them in a group. You create a group by in the controller by dragging a widget on top of another widget in the Manage widgets panel. Groups are simply Accordion widgets. They are useful because they allow you to place multiple widgets in one panel in the controller. A group has all the same settings as an Accordion widget, the only difference is that it is named a Group in the page outline. When you click a group in the controller, widgets in the group appear in a vertically stacked menu with expand and collapse buttons.

Developer edition updates

Breaking changes

jimu-core

  • Property token is removed from State, widget Props and widget setting Props. To get the token, use SessionManager.getInstance().getMainSession()?.token instead.
  • DataSource
    • Property isDataSourceSet is changed to method isDataSourceSet().
  • ExtensionManager
    • Fix typo, the methods destryWidgetExtensions() and destryAllExtensions() are rename to destroyWidgetExtensions() and destroyAllExtensions()
  • ExtentChangeMessage
    • Fix typo, the property interacive is renamed to interactive.
  • DataRecordsSelectionChangeMessage
    • A new required property dataSourceIds is added.

jimu-ui

  • JimuLayerViewSelector and JimuLayerViewSelectorDropdown component
    • Prop defaultSelectedValues is changed to selectedValues
  • Button component
    • display style property is changed from inline-block to inline-flex. If you need to display a long string in the button, please refer to the below example:
      Use dark colors for code blocksCopy
      1
      2
      3
      <Button>
        <div className='text-truncate'>This is a very very long text</div>
      </Button>
    • The active prop is only valid when the Button is used in the AdvancedButtonGroup. For scenarios where a single button needs to have a selected state, variant and color can be combined to achieve the selected effect:
      Use dark colors for code blocksCopy
      1
      2
      3
      4
      5
        <Button
          aria-pressed={selected}
          variant={selected ?  'contained'  :  'text'}
          color={selected ? 'primary'  :  'default'}>
        </Button>
  • Tab component
    • Fix typo, prop innnerClassName is renamed to innerClassName
  • utils
    • Constant CssVariableTester is moved to colorUtils of jimu-theme
    • Method getThemeColor is removed, use it from colorUtils.getThemeColorNameColor of jimu-theme instead
    • Method getColorValue is removed, use it from colorUtils.getThemeColorVariableValue of jimu-theme instead
    • Method isColorVariable is removed, use it from colorUtils.isCSSVariable of jimu-theme instead
    • Method isValidColor is removed, use it from colorUtils.isStandardOrCSSVariableColor of jimu-theme instead
    • Method isValidNormalColor is removed, use it from colorUtils.isStandardColor of jimu-theme instead
    • Method convertJsAPISymbolColorToStringColor is moved to colorUtils of jimu-theme
    • Method convertStringColorToJsAPISymbolColor is moved to colorUtils of jimu-theme
    • Method getColorAlpha is removed
    • Method isTransparentColor is removed
  • jimu-ui/basic/list-tree
    • Prop isItemDroppable's meaning is changed. In previous versions, it means whether other items can be dropped inside the item. Since this version, it means whether other items can be dropped inside, above or below the item.
  • jimu-ui/advanced/style-setting-components
    • ThemeBorderSection component
      • Fix typo, prop onBorderRasiusChange is renamed to onBorderRadiusChange
  • jimu-ui/advanced/rich-text-editor
    • RichTextEditor component
      • Prop scrollingContainer is removed. The component will now automatically detect the scrollable ancestor, eliminating the need to provide this option.
  • jimu-ui/advanced/chart
    • Component BarChartCore is removed, use BarChart instead.
    • Component LineChartCore is removed, use LineChart instead.
    • Component PieChartCore is removed, use PieChart instead.
    • Component ScatterPlotCore is removed, use ScatterPlot instead.
    • Component HistogramCore is removed, use Histogram instead.
    • Component GaugeCore is removed, use Gauge instead.
    • The props change for the above components:
      • Prop webMapWebChart is removed, use config instead.
      • Prop dataSource is removed, use config instead.
      • Prop arcgisChartsDefaultActionSelect is removed.
      • Prop arcgisChartsActionBarToggle is removed.
      • Prop arcgisChartsSelectionComplete is renamed to onArcgisSelectionComplete
      • Prop arcgisChartsDataProcessComplete is renamed to onArcgisSelectionDataProcessComplete
      • Prop arcgisChartsDataProcessError is renamed to onArcgisDataProcessError
      • Prop arcgisChartsLegendItemVisibilityChange is renamed to onArcgisLegendItemVisibilityChange
      • Prop arcgisChartsSeriesColorChange is renamed to onArcgisSelectionSeriesColorChange
      • Prop arcgisChartsAxesMinMaxChange is renamed to onArcgisAxesMinMaxChange
      • Prop arcgisChartsNoRenderPropChange is renamed to onArcgisNoRenderPropChange
      • Prop arcgisChartsSelectionComplete is renamed to onArcgisSelectionComplete

jimu-arcgis

  • JimuMapView
    • The following methods are removed from JimuMapView: addOrRemoveDataOnMap, drawDataOnMap, drawDataRecordSet and updateDrawnDataRecordSet.

jimu-theme

  • Component ThemeSwitcher is removed, use ThemeSwitchComponent instead.

jimu-for-builder

  • AppResourceManager
    • Method getIconResourceListFromDraft() is changed togetIconResourceListFromDraft(appId: string)

Others

  • The value passed into the widget-webpack-override.js is changed from a webpack config to an array of webpack configs.

Previous releases

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.