Components
Creating a modal with a title and some content in Ajax callback is easy:
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Ajax\AjaxResponse;
use Drupal\Core\Ajax\OpenModalDialogCommand;
public function ajaxCallback(array $form, FormStateInterface $form_state) {
$response = new AjaxResponse();
$response->addCommand(new OpenModalDialogCommand($this->t('Title!'), $this->t('Some content.')));
return $response;
}
If you also want to display a button in the modal, just provide the third parameter like this:
$options = [
'buttons' => [
'button1' => [
'text' => $this->t('Close'),
'id' => 'close-button',
'onclick' => "jQuery('.ui-icon-closethick').click()",
],
],
];
...
$response->addCommand(new OpenModalDialogCommand($this->t('Title!'), $this->t('Some content.'), $options));
...
As you can see, by clicking on this button the modal will be closed.