@ZhenZhang22
I have found a workaround, which may not be intended, but functions quite beautifully. This has a few steps:
* Position the widget in a sidebar, set to default mode expanded, resizable off. For whatever reason, the expanded state removes any functionality conflict with the calendar pop-up, leaving only visual conflicts.
* Remove all visual elements of the sidebar (button, border)
* Position the map in the non-side panel section of the sidebar
* Directly select the sidebar position element in the DOM, as such, using the widget ID from the props:
resizeContainer.current = document.querySelector('[data-widgetid="'+props.widgetId+'"]').parentElement.parentElement.parentElement.parentElement.parentElement;
Now, by setting style properties on that element directly, you can control the size of the sidebar top panel, and it will even animate nicely for you! In my case:
<button onClick={() => {
if (advancedShown.current) {
resizeContainer.current.style.height = '130px'
} else {
resizeContainer.current.style.height = '300px'
}
advancedShown.current = !advancedShown.current
}}>
Advanced
</button>
Obviously, direct DOM manipulation in React is not an elegant way to solve a problem, and this may be subject to breaking changes in the future. But for now, if anyone is looking to use a pop-up element that goes outside of a widget with set resize options for the user, this may be the way to go about it. You should ensure the panel size matches your unexpanded size in the Experience Builder user interface, and that your widget sizes within the sidebar are set to scale by %, rather than px. Also, if using calcite components, make sure overlay-positioning='fixed'.