cmv / cmv-app

CMV - The Configurable Map Viewer - A community supported open source mapping framework built with the Esri JavaScript API and the Dojo Toolkit
https://demo.cmv.io/
MIT License
323 stars 278 forks source link

Missing iconClass in widget config causes crash while loading on mobile #983

Open duckblaster opened 3 years ago

duckblaster commented 3 years ago

How often can you reproduce it?

Description:

If there is a widget configured without an iconClass when the mobile sidebar loads it throws an error about Cannot read property 'replace' of undefined at line 40 of _sidebarTab.js:

this.buttonNode = put(this.tabsButtonNode, 'li a[role=tab] i.' + this.iconClass.replace(/ /g, '.') + '<<');

Steps to reproduce:

Remove the iconClass from a widget config and load it on a mobile device. If using the mobile emulation in browser devtools you need to reload to trigger the mobile sidebar.

  1. Include a JS Bin (or equivalent) link if possible. You can use this as a starting point. Alternatively create a Gist
  2. Detail the exact steps taken to produce the problem
  3. Include a gif if possible; you can use LICEcap to make a gif: http://www.cockos.com/licecap/
  4. Check the browser console for errors (Use F12 to access the console)

Expected results:

Either a fallback icon or an error in the dev tools regardless of whether it is loaded on mobile or desktop, so it is more obvious, other widgets should continue to load. image

Actual results:

Cryptic error about Cannot read property 'replace' of undefined, other widgets listed after the problematic entry fail to load. image

Environment:

Software Version
CMV Version latest master
Browser latest chrome
Operating system windows, android, iphone
tmcgee commented 3 years ago

@duckblaster Thanks for reporting this. I have seen the issue as well and it has been fixed. I have a significantly enhanced mobile toolbar that I will be adding soon.