[web/data] Fix userCallbackThenUpdateUI to completely replace old DOM elements
Without the 'swap' parameter, userCallbackThenUpdateUI() would replace
the _children_ of the component with a new version of the componenent,
thus creating nested divs/spans/buttons/etc.
Closes #4881299
Upstream Author:
%(author)s <%(author-email)s>
Copyright:
Copyright (c) %(year)s %(author)s.
%(author-web-site)s -- mailto:%(author-email)s