Как сделать интернациональную маску для input[type='tel']?
А "интернациональная" маска это какая? Каким требованиям она должна отвечать и что именно под "маской" подразумевается?
----------------------------
Ну и в принципе не дожидаясь ответа, т.к. он все равно никак не повлияет на дальнейший текст:
Как выше сказал Philipp  - не ограничивайте ввод ибо маска хороша когда известна наверняка, а поди знай какая она у той страны/региона/города которого нет в той мега-библиотеке форматов телефонов, которую вы найдете и подключите чтобы правильный inputMask задать. Я бы наверно сделал так:
Взял бы флаг, в смысле спрайт и css-ку к нему.
Получил данные о посетителе, типа такого (на клиенте!):var request = new XMLHttpRequest();
request.open('GET', 'http://api.sypexgeo.net/json', true);

request.onload = function() {
  if (request.status == 200) {
    var data = JSON.parse(request.responseText),
		telCode = "+"+data.country.phone;
		console.log(telCode); // +380 например
  } else {
		//тут сами выкручивайтесь:)))
  }
};
request.send();
Флаг есть, код есть, еще в придачу хлама всякого, на ваше усмотрение, ну и сам инпут:<input type="tel" placeholder="+380____________" required pattern="+[0-9()-.^+\/*%^]">
Где "+380" - код что из json добыли
Такой проверки должно хватить и вроде норм еще и на вид (если сверстаете ровно)))))
Проверять то все равно потом будете уже нормально, это так, для безруких хитрецов))
Такое есть еще - https://vuejs-tips.github.io/vue-the-mask/