Don’t use a modal loop unless you really need to! They’ll be deprecated at some point in the future, and especially if you’re writing a plugin, you MUST NOT do this!
If you look at the example of this in the juce demo, you’ll see it does this:
ColourSelector* colourSelector = new ColourSelector();
colourSelector->setName ("background");
colourSelector->setCurrentColour (findColour (TextButton::buttonColourId));
colourSelector->setColour (ColourSelector::backgroundColourId, Colours::transparentBlack);
colourSelector->setSize (300, 400);
CallOutBox::launchAsynchronously (colourSelector, button.getScreenBounds(), nullptr);
…and that works without a problem.