This is an update to my previous Identify Widget to be compatible with Experience Builder 1.14. It is intended a replacement to the standard map popup and it is capable of being triggered by a map click or the included lightly modified Search Widget.
This version also fixes the previous versions dependency on setTimeout()* by adding another layer to the React tree specifically for waiting for the map layers to load and displaying a loading indicator. Results should render faster from a mouse click and on searches from a fast network and render more accurately if the network is running slow.
*I was not able to get rid of setTimeout() completely. It serves two functional roles in the widget. A one second timeout is called when a point comes in from the Search Widget. This allows for the map to start moving before setting the reactiveUtils to wait for the map to be still. Adjust this timeout if results from search are inaccurate or do not load. In the Identify.tsx, a .3 second timeout is called before passing the results to Results.tsx. This timeout allows for the data to be committed to memory before proceeding. Adjust this timeout if results are only loading the titles of the layer.
As in the previous version, you will need to find the widget_id of the sidebar to make the auto-opening/closing work and put the widget_id of the Identify Widget into the Search Widget settings for the two widgets to interact.