diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d903a8..ed813ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,11 @@ -## 3.0.0 - March 10 2023 +## 3.1.0 - October 24 2024 +- Add some improvement +## 3.0.0 - March 10 2023 - Support Flutter 3.7.0 - Restructured package follow linter ## 2.0.2 - - added localization for no_country text in italian and english (please open a pr with other languages if you know them 🙏) - added possibility to inject a custom list of countries using `CountryCodePicker.countryList` - minor fixes diff --git a/CountryCodePicker.iml b/CountryCodePicker.iml deleted file mode 100644 index e9e2e7e..0000000 --- a/CountryCodePicker.iml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/country_code_picker.iml b/country_code_picker.iml deleted file mode 100644 index d20080d..0000000 --- a/country_code_picker.iml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index b52183a..2a2d082 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -1,71 +1,58 @@ +plugins { + id "com.android.application" + id "kotlin-android" + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') +def localPropertiesFile = rootProject.file("local.properties") if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> + localPropertiesFile.withReader("UTF-8") { reader -> localProperties.load(reader) } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +def flutterVersionCode = localProperties.getProperty("flutter.versionCode") if (flutterVersionCode == null) { - flutterVersionCode = '1' + flutterVersionCode = "1" } -def flutterVersionName = localProperties.getProperty('flutter.versionName') +def flutterVersionName = localProperties.getProperty("flutter.versionName") if (flutterVersionName == null) { - flutterVersionName = '1.0' + flutterVersionName = "1.0" } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - android { - compileSdkVersion flutter.compileSdkVersion - ndkVersion flutter.ndkVersion + namespace = "com.example.example" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.example" + applicationId = "com.example.example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion flutter.minSdkVersion - targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutterVersionCode.toInteger() + versionName = flutterVersionName } buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug + signingConfig = signingConfigs.debug } } } flutter { - source '../..' -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + source = "../.." } diff --git a/example/android/build.gradle b/example/android/build.gradle index 58a8c74..d2ffbff 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,16 +1,3 @@ -buildscript { - ext.kotlin_version = '1.7.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.2.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() @@ -18,14 +5,14 @@ allprojects { } } -rootProject.buildDir = '../build' +rootProject.buildDir = "../build" subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { - project.evaluationDependsOn(':app') + project.evaluationDependsOn(":app") } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/example/android/settings.gradle b/example/android/settings.gradle index 44e62bc..536165d 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -1,11 +1,25 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "7.3.0" apply false + id "org.jetbrains.kotlin.android" version "1.7.10" apply false +} + +include ":app" diff --git a/example/lib/main.dart b/example/lib/main.dart index 6c40323..9318ecb 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -5,7 +5,7 @@ import 'package:flutter_localizations/flutter_localizations.dart'; void main() => runApp(const MyApp()); class MyApp extends StatefulWidget { - const MyApp({Key key}) : super(key: key); + const MyApp({super.key}); @override MyAppState createState() => MyAppState(); @@ -104,15 +104,14 @@ class MyAppState extends State { onChanged: print, // Initial selection and favorite can be one of code ('IT') OR dial_code('+39') initialSelection: 'IT', - favorite: const ['+39', 'FR'], - countryFilter: const ['IT', 'FR'], - showFlagDialog: false, - comparator: (a, b) => b.name.compareTo(a.name), + //You can set the margin between the flag and the country name to your taste. + margin: const EdgeInsets.symmetric(horizontal: 6), + comparator: (a, b) => b.name!.compareTo(a.name!), //Get the country information relevant to the initial selection - onInit: (code) => debugPrint( - "on init ${code.name} ${code.dialCode} ${code.name}"), + onInit: (code) => debugPrint("on init ${code?.name} ${code?.dialCode} ${code?.name}"), ), CountryCodePicker( + hideHeaderText: true, onChanged: print, // Initial selection and favorite can be one of code ('IT') OR dial_code('+39') initialSelection: 'IT', diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 1f4d287..0d08d87 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -11,7 +11,7 @@ version: 1.0.0+1 publish_to: none environment: - sdk: ">=2.0.0-dev.68.0 <3.0.0" + sdk: '>=2.17.0 <4.0.0' dependencies: flutter: diff --git a/ios/Flutter/Generated.xcconfig b/ios/Flutter/Generated.xcconfig deleted file mode 100644 index 015ea0e..0000000 --- a/ios/Flutter/Generated.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -// This is a generated file; do not edit or check into version control. -FLUTTER_ROOT=/Users/bezzo/flutter -FLUTTER_APPLICATION_PATH=/Users/bezzo/Desktop/CountryCodePicker -COCOAPODS_PARALLEL_CODE_SIGN=true -FLUTTER_TARGET=lib/main.dart -FLUTTER_BUILD_DIR=build -FLUTTER_BUILD_NAME=3.0.0 -FLUTTER_BUILD_NUMBER=3.0.0 -EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386 -EXCLUDED_ARCHS[sdk=iphoneos*]=armv7 -DART_OBFUSCATION=false -TRACK_WIDGET_CREATION=true -TREE_SHAKE_ICONS=false -PACKAGE_CONFIG=.dart_tool/package_config.json diff --git a/ios/Flutter/flutter_export_environment.sh b/ios/Flutter/flutter_export_environment.sh deleted file mode 100755 index 06333d0..0000000 --- a/ios/Flutter/flutter_export_environment.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# This is a generated file; do not edit or check into version control. -export "FLUTTER_ROOT=/Users/bezzo/flutter" -export "FLUTTER_APPLICATION_PATH=/Users/bezzo/Desktop/CountryCodePicker" -export "COCOAPODS_PARALLEL_CODE_SIGN=true" -export "FLUTTER_TARGET=lib/main.dart" -export "FLUTTER_BUILD_DIR=build" -export "FLUTTER_BUILD_NAME=3.0.0" -export "FLUTTER_BUILD_NUMBER=3.0.0" -export "DART_OBFUSCATION=false" -export "TRACK_WIDGET_CREATION=true" -export "TREE_SHAKE_ICONS=false" -export "PACKAGE_CONFIG=.dart_tool/package_config.json" diff --git a/ios/Runner/GeneratedPluginRegistrant.h b/ios/Runner/GeneratedPluginRegistrant.h deleted file mode 100644 index 7a89092..0000000 --- a/ios/Runner/GeneratedPluginRegistrant.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GeneratedPluginRegistrant_h -#define GeneratedPluginRegistrant_h - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface GeneratedPluginRegistrant : NSObject -+ (void)registerWithRegistry:(NSObject*)registry; -@end - -NS_ASSUME_NONNULL_END -#endif /* GeneratedPluginRegistrant_h */ diff --git a/ios/Runner/GeneratedPluginRegistrant.m b/ios/Runner/GeneratedPluginRegistrant.m deleted file mode 100644 index efe65ec..0000000 --- a/ios/Runner/GeneratedPluginRegistrant.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#import "GeneratedPluginRegistrant.h" - -@implementation GeneratedPluginRegistrant - -+ (void)registerWithRegistry:(NSObject*)registry { -} - -@end diff --git a/lib/country_code_picker.dart b/lib/country_code_picker.dart index 01a3263..923a352 100644 --- a/lib/country_code_picker.dart +++ b/lib/country_code_picker.dart @@ -23,6 +23,7 @@ class CountryCodePicker extends StatefulWidget { final List favorite; final TextStyle? textStyle; final EdgeInsetsGeometry padding; + final EdgeInsetsGeometry? margin; final bool showCountryOnly; final InputDecoration searchDecoration; final TextStyle? searchStyle; @@ -82,6 +83,9 @@ class CountryCodePicker extends StatefulWidget { /// Set to true if you want to hide the search part final bool hideSearch; + /// Set to true if you want to hide the close icon dialog + final bool hideCloseIcon; + /// Set to true if you want to show drop down button final bool showDropDownButton; @@ -92,6 +96,25 @@ class CountryCodePicker extends StatefulWidget { /// with customized codes. final List> countryList; + final EdgeInsetsGeometry dialogItemPadding; + + final EdgeInsetsGeometry searchPadding; + + ///Use This To Hide The Header Text + final bool hideHeaderText; + + ///Change The Header Text + final String? headerText; + + ///Header Text Style + final TextStyle headerTextStyle; + + ///Header Text Padding + final EdgeInsets topBarPadding; + + ///Header Text Alignment + final MainAxisAlignment headerAlignment; + const CountryCodePicker({ this.onChanged, this.onInit, @@ -99,6 +122,7 @@ class CountryCodePicker extends StatefulWidget { this.favorite = const [], this.textStyle, this.padding = const EdgeInsets.all(8.0), + this.margin, this.showCountryOnly = false, this.searchDecoration = const InputDecoration(), this.searchStyle, @@ -121,12 +145,20 @@ class CountryCodePicker extends StatefulWidget { this.comparator, this.countryFilter, this.hideSearch = false, + this.hideCloseIcon = false, this.showDropDownButton = false, this.dialogSize, this.dialogBackgroundColor, this.closeIcon = const Icon(Icons.close), this.countryList = codes, this.pickerStyle = PickerStyle.dialog, + this.dialogItemPadding = const EdgeInsets.symmetric(horizontal: 24, vertical: 8), + this.searchPadding = const EdgeInsets.symmetric(horizontal: 24), + this.headerAlignment = MainAxisAlignment.spaceBetween, + this.headerText = "Select County", + this.headerTextStyle = const TextStyle(fontSize: 18, fontWeight: FontWeight.bold), + this.hideHeaderText = false, + this.topBarPadding = const EdgeInsets.symmetric(vertical: 5.0, horizontal: 20), Key? key, }) : super(key: key); @@ -135,22 +167,15 @@ class CountryCodePicker extends StatefulWidget { State createState() { List> jsonList = countryList; - List elements = - jsonList.map((json) => CountryCode.fromJson(json)).toList(); + List elements = jsonList.map((json) => CountryCode.fromJson(json)).toList(); if (comparator != null) { elements.sort(comparator); } if (countryFilter != null && countryFilter!.isNotEmpty) { - final uppercaseCustomList = - countryFilter!.map((criteria) => criteria.toUpperCase()).toList(); - elements = elements - .where((criteria) => - uppercaseCustomList.contains(criteria.code) || - uppercaseCustomList.contains(criteria.name) || - uppercaseCustomList.contains(criteria.dialCode)) - .toList(); + final uppercaseCustomList = countryFilter!.map((criteria) => criteria.toUpperCase()).toList(); + elements = elements.where((criteria) => uppercaseCustomList.contains(criteria.code) || uppercaseCustomList.contains(criteria.name) || uppercaseCustomList.contains(criteria.dialCode)).toList(); } return CountryCodePickerState(elements, pickerStyle); @@ -172,7 +197,7 @@ class CountryCodePickerState extends State { internalWidget = InkWell( onTap: pickerStyle == PickerStyle.dialog ? showCountryCodePickerDialog - : showCountryCodePickerBottomSheet, + : showCountryCodePickerBottomSheet child: widget.builder!(selectedItem), ); } else { @@ -188,20 +213,14 @@ class CountryCodePickerState extends State { direction: Axis.horizontal, mainAxisSize: MainAxisSize.min, children: [ - if (widget.showFlagMain != null - ? widget.showFlagMain! - : widget.showFlag) + if (widget.showFlagMain != null ? widget.showFlagMain! : widget.showFlag) Flexible( flex: widget.alignLeft ? 0 : 1, fit: widget.alignLeft ? FlexFit.tight : FlexFit.loose, child: Container( - clipBehavior: widget.flagDecoration == null - ? Clip.none - : Clip.hardEdge, + clipBehavior: widget.flagDecoration == null ? Clip.none : Clip.hardEdge, decoration: widget.flagDecoration, - margin: widget.alignLeft - ? const EdgeInsets.only(right: 16.0, left: 8.0) - : const EdgeInsets.only(right: 16.0), + margin: widget.margin ?? (widget.alignLeft ? const EdgeInsets.only(right: 16.0, left: 8.0) : const EdgeInsets.only(right: 16.0)), child: Image.asset( selectedItem!.flagUri!, package: 'country_code_picker', @@ -213,11 +232,8 @@ class CountryCodePickerState extends State { Flexible( fit: widget.alignLeft ? FlexFit.tight : FlexFit.loose, child: Text( - widget.showOnlyCountryWhenClosed - ? selectedItem!.toCountryStringOnly() - : selectedItem.toString(), - style: widget.textStyle ?? - Theme.of(context).textTheme.labelLarge, + widget.showOnlyCountryWhenClosed ? selectedItem!.toCountryStringOnly() : selectedItem.toString(), + style: widget.textStyle ?? Theme.of(context).textTheme.labelLarge, overflow: widget.textOverflow, ), ), @@ -226,9 +242,7 @@ class CountryCodePickerState extends State { flex: widget.alignLeft ? 0 : 1, fit: widget.alignLeft ? FlexFit.tight : FlexFit.loose, child: Padding( - padding: widget.alignLeft - ? const EdgeInsets.only(right: 16.0, left: 8.0) - : const EdgeInsets.only(right: 16.0), + padding: (widget.alignLeft ? const EdgeInsets.only(right: 16.0, left: 8.0) : const EdgeInsets.only(right: 16.0)), child: Icon( Icons.arrow_drop_down, color: Colors.grey, @@ -259,11 +273,9 @@ class CountryCodePickerState extends State { if (widget.initialSelection != null) { selectedItem = elements.firstWhere( (criteria) => - (criteria.code!.toUpperCase() == - widget.initialSelection!.toUpperCase()) || + (criteria.code!.toUpperCase() == widget.initialSelection!.toUpperCase()) || (criteria.dialCode == widget.initialSelection) || - (criteria.name!.toUpperCase() == - widget.initialSelection!.toUpperCase()), + (criteria.name!.toUpperCase() == widget.initialSelection!.toUpperCase()), orElse: () => elements[0]); } else { selectedItem = elements[0]; @@ -279,11 +291,9 @@ class CountryCodePickerState extends State { if (widget.initialSelection != null) { selectedItem = elements.firstWhere( (item) => - (item.code!.toUpperCase() == - widget.initialSelection!.toUpperCase()) || + (item.code!.toUpperCase() == widget.initialSelection!.toUpperCase()) || (item.dialCode == widget.initialSelection) || - (item.name!.toUpperCase() == - widget.initialSelection!.toUpperCase()), + (item.name!.toUpperCase() == widget.initialSelection!.toUpperCase()), orElse: () => elements[0]); } else { selectedItem = elements[0]; @@ -291,10 +301,7 @@ class CountryCodePickerState extends State { favoriteElements = elements .where((item) => - widget.favorite.firstWhereOrNull((criteria) => - item.code!.toUpperCase() == criteria.toUpperCase() || - item.dialCode == criteria || - item.name!.toUpperCase() == criteria.toUpperCase()) != + widget.favorite.firstWhereOrNull((criteria) => item.code!.toUpperCase() == criteria.toUpperCase() || item.dialCode == criteria || item.name!.toUpperCase() == criteria.toUpperCase()) != null) .toList(); } @@ -317,11 +324,19 @@ class CountryCodePickerState extends State { showFlag: widget.showFlagDialog ?? widget.showFlag, flagWidth: widget.flagWidth, size: widget.dialogSize, + headerAlignment: widget.headerAlignment, + headerText: widget.headerText, + headerTextStyle: widget.headerTextStyle, + hideHeaderText: widget.hideHeaderText, + topBarPadding: widget.topBarPadding, backgroundColor: widget.dialogBackgroundColor, barrierColor: widget.barrierColor, hideSearch: widget.hideSearch, + hideCloseIcon: widget.hideCloseIcon, closeIcon: widget.closeIcon, flagDecoration: widget.flagDecoration, + dialogItemPadding: widget.dialogItemPadding, + searchPadding: widget.searchPadding, ), ), ), diff --git a/lib/src/country_code.dart b/lib/src/country_code.dart index b8a3863..cf10c9a 100644 --- a/lib/src/country_code.dart +++ b/lib/src/country_code.dart @@ -1,5 +1,7 @@ import 'package:collection/collection.dart' show IterableExtension; +import 'package:diacritic/diacritic.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'country_codes.dart'; import 'country_localizations.dart'; @@ -39,6 +41,15 @@ class CountryCode { return CountryCode.fromJson(jsonCode!); } + static CountryCode? tryFromCountryCode(String countryCode) { + try { + return CountryCode.fromCountryCode(countryCode); + } catch (e) { + if (kDebugMode) print('Failed to recognize country from countryCode: $countryCode'); + return null; + } + } + factory CountryCode.fromDialCode(String dialCode) { final Map? jsonCode = codes.firstWhereOrNull( (code) => code['dial_code'] == dialCode, @@ -46,14 +57,24 @@ class CountryCode { return CountryCode.fromJson(jsonCode!); } + static CountryCode? tryFromDialCode(String dialCode) { + try { + return CountryCode.fromDialCode(dialCode); + } catch (e) { + if (kDebugMode) print('Failed to recognize country from dialCode: $dialCode'); + return null; + } + } + CountryCode localize(BuildContext context) { + final nam = CountryLocalizations.of(context)?.translate(code) ?? name; return this - ..name = CountryLocalizations.of(context)?.translate(code) ?? name; + ..name = nam == null? name : removeDiacritics(nam); } factory CountryCode.fromJson(Map json) { return CountryCode( - name: json['name'], + name: removeDiacritics(json['name']), code: json['code'], dialCode: json['dial_code'], flagUri: 'flags/${json['code'].toLowerCase()}.png', diff --git a/lib/src/country_codes.dart b/lib/src/country_codes.dart index 7e7c082..6d33a85 100644 --- a/lib/src/country_codes.dart +++ b/lib/src/country_codes.dart @@ -1,1237 +1,529 @@ const List> codes = [ - { - "name": "افغانستان", - "code": "AF", - "dial_code": "+93", - }, - { - "name": "Åland", - "code": "AX", - "dial_code": "+358", - }, - { - "name": "Shqipëria", - "code": "AL", - "dial_code": "+355", - }, - { - "name": "الجزائر", - "code": "DZ", - "dial_code": "+213", - }, + {"name": "افغانستان", "code": "AF", "iso3Code": "AFG", "dial_code": "+93"}, + {"name": "Åland", "code": "AX", "iso3Code": "ALA", "dial_code": "+358"}, + {"name": "Shqipëria", "code": "AL", "iso3Code": "ALB", "dial_code": "+355"}, + {"name": "الجزائر", "code": "DZ", "iso3Code": "DZA", "dial_code": "+213"}, { "name": "American Samoa", "code": "AS", - "dial_code": "+1684", - }, - { - "name": "Andorra", - "code": "AD", - "dial_code": "+376", - }, - { - "name": "Angola", - "code": "AO", - "dial_code": "+244", - }, - { - "name": "Anguilla", - "code": "AI", - "dial_code": "+1264", - }, - { - "name": "Antarctica", - "code": "AQ", - "dial_code": "+672", + "iso3Code": "ASM", + "dial_code": "+1684" }, + {"name": "Andorra", "code": "AD", "iso3Code": "AND", "dial_code": "+376"}, + {"name": "Angola", "code": "AO", "iso3Code": "AGO", "dial_code": "+244"}, + {"name": "Anguilla", "code": "AI", "iso3Code": "AIA", "dial_code": "+1264"}, + {"name": "Antarctica", "code": "AQ", "iso3Code": "ATA", "dial_code": "+672"}, { "name": "Antigua and Barbuda", "code": "AG", - "dial_code": "+1268", - }, - { - "name": "Argentina", - "code": "AR", - "dial_code": "+54", - }, - { - "name": "Հայաստան", - "code": "AM", - "dial_code": "+374", - }, - { - "name": "Aruba", - "code": "AW", - "dial_code": "+297", - }, - { - "name": "Australia", - "code": "AU", - "dial_code": "+61", - }, - { - "name": "Österreich", - "code": "AT", - "dial_code": "+43", - }, - { - "name": "Azərbaycan", - "code": "AZ", - "dial_code": "+994", - }, - { - "name": "Bahamas", - "code": "BS", - "dial_code": "+1242", - }, - { - "name": "‏البحرين", - "code": "BH", - "dial_code": "+973", - }, - { - "name": "Bangladesh", - "code": "BD", - "dial_code": "+880", - }, - { - "name": "Barbados", - "code": "BB", - "dial_code": "+1246", - }, - { - "name": "Белару́сь", - "code": "BY", - "dial_code": "+375", - }, - { - "name": "België", - "code": "BE", - "dial_code": "+32", - }, - { - "name": "Belize", - "code": "BZ", - "dial_code": "+501", - }, - { - "name": "Bénin", - "code": "BJ", - "dial_code": "+229", - }, - { - "name": "Bermuda", - "code": "BM", - "dial_code": "+1441", - }, - { - "name": "ʼbrug-yul", - "code": "BT", - "dial_code": "+975", - }, - { - "name": "Bolivia", - "code": "BO", - "dial_code": "+591", + "iso3Code": "ATG", + "dial_code": "+1268" }, + {"name": "Argentina", "code": "AR", "iso3Code": "ARG", "dial_code": "+54"}, + {"name": "Հայաստան", "code": "AM", "iso3Code": "ARM", "dial_code": "+374"}, + {"name": "Aruba", "code": "AW", "iso3Code": "ABW", "dial_code": "+297"}, + {"name": "Australia", "code": "AU", "iso3Code": "AUS", "dial_code": "+61"}, + {"name": "Österreich", "code": "AT", "iso3Code": "AUT", "dial_code": "+43"}, + {"name": "Azərbaycan", "code": "AZ", "iso3Code": "AZE", "dial_code": "+994"}, + {"name": "Bahamas", "code": "BS", "iso3Code": "BHS", "dial_code": "+1242"}, + {"name": "‏البحرين", "code": "BH", "iso3Code": "BHR", "dial_code": "+973"}, + {"name": "Bangladesh", "code": "BD", "iso3Code": "BGD", "dial_code": "+880"}, + {"name": "Barbados", "code": "BB", "iso3Code": "BRB", "dial_code": "+1246"}, + {"name": "Белару́сь", "code": "BY", "iso3Code": "BLR", "dial_code": "+375"}, + {"name": "België", "code": "BE", "iso3Code": "BEL", "dial_code": "+32"}, + {"name": "Belize", "code": "BZ", "iso3Code": "BLZ", "dial_code": "+501"}, + {"name": "Bénin", "code": "BJ", "iso3Code": "BEN", "dial_code": "+229"}, + {"name": "Bermuda", "code": "BM", "iso3Code": "BMU", "dial_code": "+1441"}, + {"name": "ʼbrug-yul", "code": "BT", "iso3Code": "BTN", "dial_code": "+975"}, + {"name": "Bolivia", "code": "BO", "iso3Code": "BOL", "dial_code": "+591"}, { "name": "Bosna i Hercegovina", "code": "BA", - "dial_code": "+387", - }, - { - "name": "Botswana", - "code": "BW", - "dial_code": "+267", - }, - { - "name": "Bouvetøya", - "code": "BV", - "dial_code": "+47", - }, - { - "name": "Brasil", - "code": "BR", - "dial_code": "+55", + "iso3Code": "BIH", + "dial_code": "+387" }, + {"name": "Botswana", "code": "BW", "iso3Code": "BWA", "dial_code": "+267"}, + {"name": "Bouvetøya", "code": "BV", "iso3Code": "BVT", "dial_code": "+47"}, + {"name": "Brasil", "code": "BR", "iso3Code": "BRA", "dial_code": "+55"}, { "name": "British Indian Ocean Territory", "code": "IO", - "dial_code": "+246", + "iso3Code": "IOT", + "dial_code": "+246" }, { "name": "Negara Brunei Darussalam", "code": "BN", - "dial_code": "+673", - }, - { - "name": "България", - "code": "BG", - "dial_code": "+359", + "iso3Code": "BRN", + "dial_code": "+673" }, + {"name": "България", "code": "BG", "iso3Code": "BGR", "dial_code": "+359"}, { "name": "Burkina Faso", "code": "BF", - "dial_code": "+226", - }, - { - "name": "Burundi", - "code": "BI", - "dial_code": "+257", - }, - { - "name": "Cambodia", - "code": "KH", - "dial_code": "+855", - }, - { - "name": "Cameroon", - "code": "CM", - "dial_code": "+237", - }, - { - "name": "Canada", - "code": "CA", - "dial_code": "+1", - }, - { - "name": "Cabo Verde", - "code": "CV", - "dial_code": "+238", + "iso3Code": "BFA", + "dial_code": "+226" }, + {"name": "Burundi", "code": "BI", "iso3Code": "BDI", "dial_code": "+257"}, + {"name": "Cambodia", "code": "KH", "iso3Code": "KHM", "dial_code": "+855"}, + {"name": "Cameroon", "code": "CM", "iso3Code": "CMR", "dial_code": "+237"}, + {"name": "Canada", "code": "CA", "iso3Code": "CAN", "dial_code": "+1"}, + {"name": "Cabo Verde", "code": "CV", "iso3Code": "CPV", "dial_code": "+238"}, { "name": "Cayman Islands", "code": "KY", - "dial_code": "+1345", + "iso3Code": "CYM", + "dial_code": "+1345" }, { "name": "Ködörösêse tî Bêafrîka", "code": "CF", - "dial_code": "+236", - }, - { - "name": "Tchad", - "code": "TD", - "dial_code": "+235", - }, - { - "name": "Chile", - "code": "CL", - "dial_code": "+56", - }, - { - "name": "中国", - "code": "CN", - "dial_code": "+86", + "iso3Code": "CAF", + "dial_code": "+236" }, + {"name": "Tchad", "code": "TD", "iso3Code": "TCD", "dial_code": "+235"}, + {"name": "Chile", "code": "CL", "iso3Code": "CHL", "dial_code": "+56"}, + {"name": "中国", "code": "CN", "iso3Code": "CHN", "dial_code": "+86"}, { "name": "Christmas Island", "code": "CX", - "dial_code": "+61", + "iso3Code": "CXR", + "dial_code": "+61" }, { "name": "Cocos (Keeling) Islands", "code": "CC", - "dial_code": "+61", - }, - { - "name": "Colombia", - "code": "CO", - "dial_code": "+57", - }, - { - "name": "Komori", - "code": "KM", - "dial_code": "+269", + "iso3Code": "CCK", + "dial_code": "+61" }, + {"name": "Colombia", "code": "CO", "iso3Code": "COL", "dial_code": "+57"}, + {"name": "Komori", "code": "KM", "iso3Code": "COM", "dial_code": "+269"}, { "name": "République du Congo", "code": "CG", - "dial_code": "+242", + "iso3Code": "COG", + "dial_code": "+242" }, { "name": "République démocratique du Congo", "code": "CD", - "dial_code": "+243", + "iso3Code": "COD", + "dial_code": "+243" }, { "name": "Cook Islands", "code": "CK", - "dial_code": "+682", - }, - { - "name": "Costa Rica", - "code": "CR", - "dial_code": "+506", + "iso3Code": "COK", + "dial_code": "+682" }, + {"name": "Costa Rica", "code": "CR", "iso3Code": "CRI", "dial_code": "+506"}, { "name": "Côte d'Ivoire", "code": "CI", - "dial_code": "+225", - }, - { - "name": "Hrvatska", - "code": "HR", - "dial_code": "+385", - }, - { - "name": "Cuba", - "code": "CU", - "dial_code": "+53", - }, - { - "name": "Κύπρος", - "code": "CY", - "dial_code": "+357", + "iso3Code": "CIV", + "dial_code": "+225" }, + {"name": "Hrvatska", "code": "HR", "iso3Code": "HRV", "dial_code": "+385"}, + {"name": "Cuba", "code": "CU", "iso3Code": "CUB", "dial_code": "+53"}, + {"name": "Κύπρος", "code": "CY", "iso3Code": "CYP", "dial_code": "+357"}, { "name": "Česká republika", "code": "CZ", - "dial_code": "+420", - }, - { - "name": "Danmark", - "code": "DK", - "dial_code": "+45", - }, - { - "name": "Djibouti", - "code": "DJ", - "dial_code": "+253", - }, - { - "name": "Dominica", - "code": "DM", - "dial_code": "+1767", + "iso3Code": "CZE", + "dial_code": "+420" }, + {"name": "Danmark", "code": "DK", "iso3Code": "DNK", "dial_code": "+45"}, + {"name": "Djibouti", "code": "DJ", "iso3Code": "DJI", "dial_code": "+253"}, + {"name": "Dominica", "code": "DM", "iso3Code": "DMA", "dial_code": "+1767"}, { "name": "República Dominicana", "code": "DO", - "dial_code": "+1", - }, - { - "name": "Ecuador", - "code": "EC", - "dial_code": "+593", - }, - { - "name": "مصر‎", - "code": "EG", - "dial_code": "+20", - }, - { - "name": "El Salvador", - "code": "SV", - "dial_code": "+503", + "iso3Code": "DOM", + "dial_code": "+1" }, + {"name": "Ecuador", "code": "EC", "iso3Code": "ECU", "dial_code": "+593"}, + {"name": "مصر‎", "code": "EG", "iso3Code": "EGY", "dial_code": "+20"}, + {"name": "El Salvador", "code": "SV", "iso3Code": "SLV", "dial_code": "+503"}, { "name": "Guinea Ecuatorial", "code": "GQ", - "dial_code": "+240", - }, - { - "name": "ኤርትራ", - "code": "ER", - "dial_code": "+291", - }, - { - "name": "Eesti", - "code": "EE", - "dial_code": "+372", - }, - { - "name": "ኢትዮጵያ", - "code": "ET", - "dial_code": "+251", + "iso3Code": "GNQ", + "dial_code": "+240" }, + {"name": "ኤርትራ", "code": "ER", "iso3Code": "ERI", "dial_code": "+291"}, + {"name": "Eesti", "code": "EE", "iso3Code": "EST", "dial_code": "+372"}, + {"name": "ኢትዮጵያ", "code": "ET", "iso3Code": "ETH", "dial_code": "+251"}, { "name": "Falkland Islands", "code": "FK", - "dial_code": "+500", - }, - { - "name": "Føroyar", - "code": "FO", - "dial_code": "+298", - }, - { - "name": "Fiji", - "code": "FJ", - "dial_code": "+679", - }, - { - "name": "Suomi", - "code": "FI", - "dial_code": "+358", - }, - { - "name": "France", - "code": "FR", - "dial_code": "+33", + "iso3Code": "FLK", + "dial_code": "+500" }, + {"name": "Føroyar", "code": "FO", "iso3Code": "FRO", "dial_code": "+298"}, + {"name": "Fiji", "code": "FJ", "iso3Code": "FJI", "dial_code": "+679"}, + {"name": "Suomi", "code": "FI", "iso3Code": "FIN", "dial_code": "+358"}, + {"name": "France", "code": "FR", "iso3Code": "FRA", "dial_code": "+33"}, { "name": "Guyane française", "code": "GF", - "dial_code": "+594", + "iso3Code": "GUF", + "dial_code": "+594" }, { "name": "Polynésie française", "code": "PF", - "dial_code": "+689", + "iso3Code": "PYF", + "dial_code": "+689" }, { "name": "Territoire des Terres australes et antarctiques fr", "code": "TF", - "dial_code": "+262", - }, - { - "name": "Gabon", - "code": "GA", - "dial_code": "+241", - }, - { - "name": "Gambia", - "code": "GM", - "dial_code": "+220", - }, - { - "name": "საქართველო", - "code": "GE", - "dial_code": "+995", - }, - { - "name": "Deutschland", - "code": "DE", - "dial_code": "+49", - }, - { - "name": "Ghana", - "code": "GH", - "dial_code": "+233", - }, - { - "name": "Gibraltar", - "code": "GI", - "dial_code": "+350", - }, - { - "name": "Ελλάδα", - "code": "GR", - "dial_code": "+30", + "iso3Code": "ATF", + "dial_code": "+262" }, + {"name": "Gabon", "code": "GA", "iso3Code": "GAB", "dial_code": "+241"}, + {"name": "Gambia", "code": "GM", "iso3Code": "GMB", "dial_code": "+220"}, + {"name": "საქართველო", "code": "GE", "iso3Code": "GEO", "dial_code": "+995"}, + {"name": "Deutschland", "code": "DE", "iso3Code": "DEU", "dial_code": "+49"}, + {"name": "Ghana", "code": "GH", "iso3Code": "GHA", "dial_code": "+233"}, + {"name": "Gibraltar", "code": "GI", "iso3Code": "GIB", "dial_code": "+350"}, + {"name": "Ελλάδα", "code": "GR", "iso3Code": "GRC", "dial_code": "+30"}, { "name": "Kalaallit Nunaat", "code": "GL", - "dial_code": "+299", - }, - { - "name": "Grenada", - "code": "GD", - "dial_code": "+1473", - }, - { - "name": "Guadeloupe", - "code": "GP", - "dial_code": "+590", - }, - { - "name": "Guam", - "code": "GU", - "dial_code": "+1671", - }, - { - "name": "Guatemala", - "code": "GT", - "dial_code": "+502", - }, - { - "name": "Guernsey", - "code": "GG", - "dial_code": "+44", - }, - { - "name": "Guinée", - "code": "GN", - "dial_code": "+224", + "iso3Code": "GRL", + "dial_code": "+299" }, + {"name": "Grenada", "code": "GD", "iso3Code": "GRD", "dial_code": "+1473"}, + {"name": "Guadeloupe", "code": "GP", "iso3Code": "GLP", "dial_code": "+590"}, + {"name": "Guam", "code": "GU", "iso3Code": "GUM", "dial_code": "+1671"}, + {"name": "Guatemala", "code": "GT", "iso3Code": "GTM", "dial_code": "+502"}, + {"name": "Guernsey", "code": "GG", "iso3Code": "GGY", "dial_code": "+44"}, + {"name": "Guinée", "code": "GN", "iso3Code": "GIN", "dial_code": "+224"}, { "name": "Guiné-Bissau", "code": "GW", - "dial_code": "+245", - }, - { - "name": "Guyana", - "code": "GY", - "dial_code": "+592", - }, - { - "name": "Haïti", - "code": "HT", - "dial_code": "+509", + "iso3Code": "GNB", + "dial_code": "+245" }, + {"name": "Guyana", "code": "GY", "iso3Code": "GUY", "dial_code": "+592"}, + {"name": "Haïti", "code": "HT", "iso3Code": "HTI", "dial_code": "+509"}, { "name": "Heard Island and McDonald Islands", "code": "HM", - "dial_code": "+0", - }, - { - "name": "Vaticano", - "code": "VA", - "dial_code": "+379", - }, - { - "name": "Honduras", - "code": "HN", - "dial_code": "+504", - }, - { - "name": "香港", - "code": "HK", - "dial_code": "+852", - }, - { - "name": "Magyarország", - "code": "HU", - "dial_code": "+36", - }, - { - "name": "Ísland", - "code": "IS", - "dial_code": "+354", - }, - { - "name": "भारत", - "code": "IN", - "dial_code": "+91", - }, - { - "name": "Indonesia", - "code": "ID", - "dial_code": "+62", - }, - { - "name": "ایران", - "code": "IR", - "dial_code": "+98", - }, - { - "name": "العراق", - "code": "IQ", - "dial_code": "+964", - }, - { - "name": "Éire", - "code": "IE", - "dial_code": "+353", - }, - { - "name": "Isle of Man", - "code": "IM", - "dial_code": "+44", - }, - { - "name": "ישראל", - "code": "IL", - "dial_code": "+972", - }, - { - "name": "Italia", - "code": "IT", - "dial_code": "+39", - }, - { - "name": "Jamaica", - "code": "JM", - "dial_code": "+1876", - }, - { - "name": "日本", - "code": "JP", - "dial_code": "+81", - }, - { - "name": "Jersey", - "code": "JE", - "dial_code": "+44", - }, - { - "name": "الأردن", - "code": "JO", - "dial_code": "+962", - }, - { - "name": "Қазақстан", - "code": "KZ", - "dial_code": "+7", - }, - { - "name": "Kenya", - "code": "KE", - "dial_code": "+254", - }, - { - "name": "Kiribati", - "code": "KI", - "dial_code": "+686", - }, - { - "name": "북한", - "code": "KP", - "dial_code": "+850", - }, - { - "name": "대한민국", - "code": "KR", - "dial_code": "+82", + "iso3Code": "HMD", + "dial_code": "+0" }, + {"name": "Vaticano", "code": "VA", "iso3Code": "VAT", "dial_code": "+379"}, + {"name": "Honduras", "code": "HN", "iso3Code": "HND", "dial_code": "+504"}, + {"name": "香港", "code": "HK", "iso3Code": "HKG", "dial_code": "+852"}, + {"name": "Magyarország", "code": "HU", "iso3Code": "HUN", "dial_code": "+36"}, + {"name": "Ísland", "code": "IS", "iso3Code": "ISL", "dial_code": "+354"}, + {"name": "भारत", "code": "IN", "iso3Code": "IND", "dial_code": "+91"}, + {"name": "Indonesia", "code": "ID", "iso3Code": "IDN", "dial_code": "+62"}, + {"name": "ایران", "code": "IR", "iso3Code": "IRN", "dial_code": "+98"}, + {"name": "العراق", "code": "IQ", "iso3Code": "IRQ", "dial_code": "+964"}, + {"name": "Éire", "code": "IE", "iso3Code": "IRL", "dial_code": "+353"}, + {"name": "Isle of Man", "code": "IM", "iso3Code": "IMN", "dial_code": "+44"}, + {"name": "ישראל", "code": "IL", "iso3Code": "ISR", "dial_code": "+972"}, + {"name": "Italia", "code": "IT", "iso3Code": "ITA", "dial_code": "+39"}, + {"name": "Jamaica", "code": "JM", "iso3Code": "JAM", "dial_code": "+1876"}, + {"name": "日本", "code": "JP", "iso3Code": "JPN", "dial_code": "+81"}, + {"name": "Jersey", "code": "JE", "iso3Code": "JEY", "dial_code": "+44"}, + {"name": "الأردن", "code": "JO", "iso3Code": "JOR", "dial_code": "+962"}, + {"name": "Қазақстан", "code": "KZ", "iso3Code": "KAZ", "dial_code": "+7"}, + {"name": "Kenya", "code": "KE", "iso3Code": "KEN", "dial_code": "+254"}, + {"name": "Kiribati", "code": "KI", "iso3Code": "KIR", "dial_code": "+686"}, + {"name": "북한", "code": "KP", "iso3Code": "PRK", "dial_code": "+850"}, + {"name": "대한민국", "code": "KR", "iso3Code": "KOR", "dial_code": "+82"}, { "name": "Republika e Kosovës", "code": "XK", - "dial_code": "+383", - }, - { - "name": "الكويت", - "code": "KW", - "dial_code": "+965", - }, - { - "name": "Кыргызстан", - "code": "KG", - "dial_code": "+996", - }, - { - "name": "ສປປລາວ", - "code": "LA", - "dial_code": "+856", - }, - { - "name": "Latvija", - "code": "LV", - "dial_code": "+371", - }, - { - "name": "لبنان", - "code": "LB", - "dial_code": "+961", - }, - { - "name": "Lesotho", - "code": "LS", - "dial_code": "+266", - }, - { - "name": "Liberia", - "code": "LR", - "dial_code": "+231", - }, - { - "name": "‏ليبيا", - "code": "LY", - "dial_code": "+218", + "iso3Code": "KOS", + "dial_code": "+383" }, + {"name": "الكويت", "code": "KW", "iso3Code": "KWT", "dial_code": "+965"}, + {"name": "Кыргызстан", "code": "KG", "iso3Code": "KGZ", "dial_code": "+996"}, + {"name": "ສປປລາວ", "code": "LA", "iso3Code": "LAO", "dial_code": "+856"}, + {"name": "Latvija", "code": "LV", "iso3Code": "LVA", "dial_code": "+371"}, + {"name": "لبنان", "code": "LB", "iso3Code": "LBN", "dial_code": "+961"}, + {"name": "Lesotho", "code": "LS", "iso3Code": "LSO", "dial_code": "+266"}, + {"name": "Liberia", "code": "LR", "iso3Code": "LBR", "dial_code": "+231"}, + {"name": "‏ليبيا", "code": "LY", "iso3Code": "LBY", "dial_code": "+218"}, { "name": "Liechtenstein", "code": "LI", - "dial_code": "+423", - }, - { - "name": "Lietuva", - "code": "LT", - "dial_code": "+370", - }, - { - "name": "Luxembourg", - "code": "LU", - "dial_code": "+352", - }, - { - "name": "澳門", - "code": "MO", - "dial_code": "+853", - }, - { - "name": "Македонија", - "code": "MK", - "dial_code": "+389", + "iso3Code": "LIE", + "dial_code": "+423" }, + {"name": "Lietuva", "code": "LT", "iso3Code": "LTU", "dial_code": "+370"}, + {"name": "Luxembourg", "code": "LU", "iso3Code": "LUX", "dial_code": "+352"}, + {"name": "澳門", "code": "MO", "iso3Code": "MAC", "dial_code": "+853"}, + {"name": "Македонија", "code": "MK", "iso3Code": "MKD", "dial_code": "+389"}, { "name": "Madagasikara", "code": "MG", - "dial_code": "+261", - }, - { - "name": "Malawi", - "code": "MW", - "dial_code": "+265", - }, - { - "name": "Malaysia", - "code": "MY", - "dial_code": "+60", - }, - { - "name": "Maldives", - "code": "MV", - "dial_code": "+960", - }, - { - "name": "Mali", - "code": "ML", - "dial_code": "+223", - }, - { - "name": "Malta", - "code": "MT", - "dial_code": "+356", - }, - { - "name": "M̧ajeļ", - "code": "MH", - "dial_code": "+692", - }, - { - "name": "Martinique", - "code": "MQ", - "dial_code": "+596", - }, - { - "name": "موريتانيا", - "code": "MR", - "dial_code": "+222", - }, - { - "name": "Maurice", - "code": "MU", - "dial_code": "+230", - }, - { - "name": "Mayotte", - "code": "YT", - "dial_code": "+262", - }, - { - "name": "México", - "code": "MX", - "dial_code": "+52", - }, - { - "name": "Micronesia", - "code": "FM", - "dial_code": "+691", - }, - { - "name": "Moldova", - "code": "MD", - "dial_code": "+373", - }, - { - "name": "Monaco", - "code": "MC", - "dial_code": "+377", - }, - { - "name": "Монгол улс", - "code": "MN", - "dial_code": "+976", - }, - { - "name": "Црна Гора", - "code": "ME", - "dial_code": "+382", - }, - { - "name": "Montserrat", - "code": "MS", - "dial_code": "+1664", - }, - { - "name": "المغرب", - "code": "MA", - "dial_code": "+212", - }, - { - "name": "Moçambique", - "code": "MZ", - "dial_code": "+258", - }, - { - "name": "Myanmar", - "code": "MM", - "dial_code": "+95", - }, - { - "name": "Namibia", - "code": "NA", - "dial_code": "+264", - }, - { - "name": "Nauru", - "code": "NR", - "dial_code": "+674", - }, - { - "name": "नेपाल", - "code": "NP", - "dial_code": "+977", - }, - { - "name": "Nederland", - "code": "NL", - "dial_code": "+31", + "iso3Code": "MDG", + "dial_code": "+261" }, + {"name": "Malawi", "code": "MW", "iso3Code": "MWI", "dial_code": "+265"}, + {"name": "Malaysia", "code": "MY", "iso3Code": "MYS", "dial_code": "+60"}, + {"name": "Maldives", "code": "MV", "iso3Code": "MDV", "dial_code": "+960"}, + {"name": "Mali", "code": "ML", "iso3Code": "MLI", "dial_code": "+223"}, + {"name": "Malta", "code": "MT", "iso3Code": "MLT", "dial_code": "+356"}, + {"name": "M̧ajeļ", "code": "MH", "iso3Code": "MHL", "dial_code": "+692"}, + {"name": "Martinique", "code": "MQ", "iso3Code": "MTQ", "dial_code": "+596"}, + {"name": "موريتانيا", "code": "MR", "iso3Code": "MRT", "dial_code": "+222"}, + {"name": "Maurice", "code": "MU", "iso3Code": "MUS", "dial_code": "+230"}, + {"name": "Mayotte", "code": "YT", "iso3Code": "MYT", "dial_code": "+262"}, + {"name": "México", "code": "MX", "iso3Code": "MEX", "dial_code": "+52"}, + {"name": "Micronesia", "code": "FM", "iso3Code": "FSM", "dial_code": "+691"}, + {"name": "Moldova", "code": "MD", "iso3Code": "MDA", "dial_code": "+373"}, + {"name": "Monaco", "code": "MC", "iso3Code": "MCO", "dial_code": "+377"}, + {"name": "Монгол улс", "code": "MN", "iso3Code": "MNG", "dial_code": "+976"}, + {"name": "Црна Гора", "code": "ME", "iso3Code": "MNE", "dial_code": "+382"}, + {"name": "Montserrat", "code": "MS", "iso3Code": "MSR", "dial_code": "+1664"}, + {"name": "المغرب", "code": "MA", "iso3Code": "MAR", "dial_code": "+212"}, + {"name": "Moçambique", "code": "MZ", "iso3Code": "MOZ", "dial_code": "+258"}, + {"name": "Myanmar", "code": "MM", "iso3Code": "MMR", "dial_code": "+95"}, + {"name": "Namibia", "code": "NA", "iso3Code": "NAM", "dial_code": "+264"}, + {"name": "Nauru", "code": "NR", "iso3Code": "NRU", "dial_code": "+674"}, + {"name": "नेपाल", "code": "NP", "iso3Code": "NPL", "dial_code": "+977"}, + {"name": "Nederland", "code": "NL", "iso3Code": "NLD", "dial_code": "+31"}, { "name": "Netherlands Antilles", "code": "AN", - "dial_code": "+599", + "iso3Code": "AN", + "dial_code": "+599" }, { "name": "Nouvelle-Calédonie", "code": "NC", - "dial_code": "+687", - }, - { - "name": "New Zealand", - "code": "NZ", - "dial_code": "+64", - }, - { - "name": "Nicaragua", - "code": "NI", - "dial_code": "+505", - }, - { - "name": "Niger", - "code": "NE", - "dial_code": "+227", - }, - { - "name": "Nigeria", - "code": "NG", - "dial_code": "+234", - }, - { - "name": "Niuē", - "code": "NU", - "dial_code": "+683", + "iso3Code": "NCL", + "dial_code": "+687" }, + {"name": "New Zealand", "code": "NZ", "iso3Code": "NZL", "dial_code": "+64"}, + {"name": "Nicaragua", "code": "NI", "iso3Code": "NIC", "dial_code": "+505"}, + {"name": "Niger", "code": "NE", "iso3Code": "NER", "dial_code": "+227"}, + {"name": "Nigeria", "code": "NG", "iso3Code": "NGA", "dial_code": "+234"}, + {"name": "Niuē", "code": "NU", "iso3Code": "NIU", "dial_code": "+683"}, { "name": "Norfolk Island", "code": "NF", - "dial_code": "+672", + "iso3Code": "NFK", + "dial_code": "+672" }, { "name": "Northern Mariana Islands", "code": "MP", - "dial_code": "+1670", - }, - { - "name": "Norge", - "code": "NO", - "dial_code": "+47", - }, - { - "name": "عمان", - "code": "OM", - "dial_code": "+968", - }, - { - "name": "Pakistan", - "code": "PK", - "dial_code": "+92", - }, - { - "name": "Palau", - "code": "PW", - "dial_code": "+680", - }, - { - "name": "فلسطين", - "code": "PS", - "dial_code": "+970", - }, - { - "name": "Panamá", - "code": "PA", - "dial_code": "+507", + "iso3Code": "MNP", + "dial_code": "+1670" }, + {"name": "Norge", "code": "NO", "iso3Code": "NOR", "dial_code": "+47"}, + {"name": "عمان", "code": "OM", "iso3Code": "OMN", "dial_code": "+968"}, + {"name": "Pakistan", "code": "PK", "iso3Code": "PAK", "dial_code": "+92"}, + {"name": "Palau", "code": "PW", "iso3Code": "PLW", "dial_code": "+680"}, + {"name": "فلسطين", "code": "PS", "iso3Code": "PSE", "dial_code": "+970"}, + {"name": "Panamá", "code": "PA", "iso3Code": "PAN", "dial_code": "+507"}, { "name": "Papua Niugini", "code": "PG", - "dial_code": "+675", - }, - { - "name": "Paraguay", - "code": "PY", - "dial_code": "+595", - }, - { - "name": "Perú", - "code": "PE", - "dial_code": "+51", - }, - { - "name": "Pilipinas", - "code": "PH", - "dial_code": "+63", + "iso3Code": "PNG", + "dial_code": "+675" }, + {"name": "Paraguay", "code": "PY", "iso3Code": "PRY", "dial_code": "+595"}, + {"name": "Perú", "code": "PE", "iso3Code": "PER", "dial_code": "+51"}, + {"name": "Pilipinas", "code": "PH", "iso3Code": "PHL", "dial_code": "+63"}, { "name": "Pitcairn Islands", "code": "PN", - "dial_code": "+64", + "iso3Code": "PCN", + "dial_code": "+64" }, + {"name": "Polska", "code": "PL", "iso3Code": "POL", "dial_code": "+48"}, + {"name": "Portugal", "code": "PT", "iso3Code": "PRT", "dial_code": "+351"}, { - "name": "Polska", - "code": "PL", - "dial_code": "+48", - }, - { - "name": "Portugal", - "code": "PT", - "dial_code": "+351", + "name": "Puerto Rico", + "code": "PR", + "iso3Code": "PRI", + "dial_code": "+1939" }, { "name": "Puerto Rico", "code": "PR", - "dial_code": "+1939", - }, - { - "name": "Puerto Rico", - "code": "PR", - "dial_code": "+1787", - }, - { - "name": "قطر", - "code": "QA", - "dial_code": "+974", - }, - { - "name": "România", - "code": "RO", - "dial_code": "+40", - }, - { - "name": "Россия", - "code": "RU", - "dial_code": "+7", - }, - { - "name": "Rwanda", - "code": "RW", - "dial_code": "+250", - }, - { - "name": "La Réunion", - "code": "RE", - "dial_code": "+262", + "iso3Code": "PRI", + "dial_code": "+1787" }, + {"name": "قطر", "code": "QA", "iso3Code": "QAT", "dial_code": "+974"}, + {"name": "România", "code": "RO", "iso3Code": "ROU", "dial_code": "+40"}, + {"name": "Россия", "code": "RU", "iso3Code": "RUS", "dial_code": "+7"}, + {"name": "Rwanda", "code": "RW", "iso3Code": "RWA", "dial_code": "+250"}, + {"name": "La Réunion", "code": "RE", "iso3Code": "REU", "dial_code": "+262"}, { "name": "Saint-Barthélemy", "code": "BL", - "dial_code": "+590", + "iso3Code": "BLM", + "dial_code": "+590" }, { "name": "Saint Helena", "code": "SH", - "dial_code": "+290", + "iso3Code": "SHN", + "dial_code": "+290" }, { "name": "Saint Kitts and Nevis", "code": "KN", - "dial_code": "+1869", + "iso3Code": "KNA", + "dial_code": "+1869" }, { "name": "Saint Lucia", "code": "LC", - "dial_code": "+1758", + "iso3Code": "LCA", + "dial_code": "+1758" }, { "name": "Saint-Martin", "code": "MF", - "dial_code": "+590", + "iso3Code": "MAF", + "dial_code": "+590" }, { "name": "Saint-Pierre-et-Miquelon", "code": "PM", - "dial_code": "+508", + "iso3Code": "SPM", + "dial_code": "+508" }, { "name": "Saint Vincent and the Grenadines", "code": "VC", - "dial_code": "+1784", - }, - { - "name": "Samoa", - "code": "WS", - "dial_code": "+685", - }, - { - "name": "San Marino", - "code": "SM", - "dial_code": "+378", + "iso3Code": "VCT", + "dial_code": "+1784" }, + {"name": "Samoa", "code": "WS", "iso3Code": "WSM", "dial_code": "+685"}, + {"name": "San Marino", "code": "SM", "iso3Code": "SMR", "dial_code": "+378"}, { "name": "São Tomé e Príncipe", "code": "ST", - "dial_code": "+239", + "iso3Code": "STP", + "dial_code": "+239" }, { "name": "العربية السعودية", "code": "SA", - "dial_code": "+966", - }, - { - "name": "Sénégal", - "code": "SN", - "dial_code": "+221", - }, - { - "name": "Србија", - "code": "RS", - "dial_code": "+381", - }, - { - "name": "Seychelles", - "code": "SC", - "dial_code": "+248", + "iso3Code": "SAU", + "dial_code": "+966" }, + {"name": "Sénégal", "code": "SN", "iso3Code": "SEN", "dial_code": "+221"}, + {"name": "Србија", "code": "RS", "iso3Code": "SRB", "dial_code": "+381"}, + {"name": "Seychelles", "code": "SC", "iso3Code": "SYC", "dial_code": "+248"}, { "name": "Sierra Leone", "code": "SL", - "dial_code": "+232", - }, - { - "name": "Singapore", - "code": "SG", - "dial_code": "+65", - }, - { - "name": "Slovensko", - "code": "SK", - "dial_code": "+421", - }, - { - "name": "Slovenija", - "code": "SI", - "dial_code": "+386", + "iso3Code": "SLE", + "dial_code": "+232" }, + {"name": "Singapore", "code": "SG", "iso3Code": "SGP", "dial_code": "+65"}, + {"name": "Slovensko", "code": "SK", "iso3Code": "SVK", "dial_code": "+421"}, + {"name": "Slovenija", "code": "SI", "iso3Code": "SVN", "dial_code": "+386"}, { "name": "Solomon Islands", "code": "SB", - "dial_code": "+677", - }, - { - "name": "Soomaaliya", - "code": "SO", - "dial_code": "+252", - }, - { - "name": "South Africa", - "code": "ZA", - "dial_code": "+27", - }, - { - "name": "South Sudan", - "code": "SS", - "dial_code": "+211", + "iso3Code": "SLB", + "dial_code": "+677" }, + {"name": "Soomaaliya", "code": "SO", "iso3Code": "SOM", "dial_code": "+252"}, + {"name": "South Africa", "code": "ZA", "iso3Code": "ZAF", "dial_code": "+27"}, + {"name": "South Sudan", "code": "SS", "iso3Code": "SSD", "dial_code": "+211"}, { "name": "South Georgia", "code": "GS", - "dial_code": "+500", - }, - { - "name": "España", - "code": "ES", - "dial_code": "+34", - }, - { - "name": "Sri Lanka", - "code": "LK", - "dial_code": "+94", - }, - { - "name": "السودان", - "code": "SD", - "dial_code": "+249", - }, - { - "name": "Suriname", - "code": "SR", - "dial_code": "+597", + "iso3Code": "SGS", + "dial_code": "+500" }, + {"name": "España", "code": "ES", "iso3Code": "ESP", "dial_code": "+34"}, + {"name": "Sri Lanka", "code": "LK", "iso3Code": "LKA", "dial_code": "+94"}, + {"name": "السودان", "code": "SD", "iso3Code": "SDN", "dial_code": "+249"}, + {"name": "Suriname", "code": "SR", "iso3Code": "SUR", "dial_code": "+597"}, { "name": "Svalbard og Jan Mayen", "code": "SJ", - "dial_code": "+47", - }, - { - "name": "Swaziland", - "code": "SZ", - "dial_code": "+268", - }, - { - "name": "Sverige", - "code": "SE", - "dial_code": "+46", - }, - { - "name": "Schweiz", - "code": "CH", - "dial_code": "+41", - }, - { - "name": "سوريا", - "code": "SY", - "dial_code": "+963", - }, - { - "name": "臺灣", - "code": "TW", - "dial_code": "+886", - }, - { - "name": "Тоҷикистон", - "code": "TJ", - "dial_code": "+992", - }, - { - "name": "Tanzania", - "code": "TZ", - "dial_code": "+255", - }, - { - "name": "ประเทศไทย", - "code": "TH", - "dial_code": "+66", - }, - { - "name": "Timor-Leste", - "code": "TL", - "dial_code": "+670", - }, - { - "name": "Togo", - "code": "TG", - "dial_code": "+228", - }, - { - "name": "Tokelau", - "code": "TK", - "dial_code": "+690", - }, - { - "name": "Tonga", - "code": "TO", - "dial_code": "+676", + "iso3Code": "SJM", + "dial_code": "+47" }, + {"name": "Swaziland", "code": "SZ", "iso3Code": "SWZ", "dial_code": "+268"}, + {"name": "Sverige", "code": "SE", "iso3Code": "SWE", "dial_code": "+46"}, + {"name": "Schweiz", "code": "CH", "iso3Code": "CHE", "dial_code": "+41"}, + {"name": "سوريا", "code": "SY", "iso3Code": "SYR", "dial_code": "+963"}, + {"name": "臺灣", "code": "TW", "iso3Code": "TWN", "dial_code": "+886"}, + {"name": "Тоҷикистон", "code": "TJ", "iso3Code": "TJK", "dial_code": "+992"}, + {"name": "Tanzania", "code": "TZ", "iso3Code": "TZA", "dial_code": "+255"}, + {"name": "ประเทศไทย", "code": "TH", "iso3Code": "THA", "dial_code": "+66"}, + {"name": "Timor-Leste", "code": "TL", "iso3Code": "TLS", "dial_code": "+670"}, + {"name": "Togo", "code": "TG", "iso3Code": "TGO", "dial_code": "+228"}, + {"name": "Tokelau", "code": "TK", "iso3Code": "TKL", "dial_code": "+690"}, + {"name": "Tonga", "code": "TO", "iso3Code": "TON", "dial_code": "+676"}, { "name": "Trinidad and Tobago", "code": "TT", - "dial_code": "+1868", - }, - { - "name": "تونس", - "code": "TN", - "dial_code": "+216", - }, - { - "name": "Türkiye", - "code": "TR", - "dial_code": "+90", + "iso3Code": "TTO", + "dial_code": "+1868" }, + {"name": "تونس", "code": "TN", "iso3Code": "TUN", "dial_code": "+216"}, + {"name": "Türkiye", "code": "TR", "iso3Code": "TUR", "dial_code": "+90"}, { "name": "Türkmenistan", "code": "TM", - "dial_code": "+993", + "iso3Code": "TKM", + "dial_code": "+993" }, { "name": "Turks and Caicos Islands", "code": "TC", - "dial_code": "+1649", - }, - { - "name": "Tuvalu", - "code": "TV", - "dial_code": "+688", - }, - { - "name": "Uganda", - "code": "UG", - "dial_code": "+256", - }, - { - "name": "Україна", - "code": "UA", - "dial_code": "+380", + "iso3Code": "TCA", + "dial_code": "+1649" }, + {"name": "Tuvalu", "code": "TV", "iso3Code": "TUV", "dial_code": "+688"}, + {"name": "Uganda", "code": "UG", "iso3Code": "UGA", "dial_code": "+256"}, + {"name": "Україна", "code": "UA", "iso3Code": "UKR", "dial_code": "+380"}, { "name": "دولة الإمارات العربية المتحدة", "code": "AE", - "dial_code": "+971", + "iso3Code": "ARE", + "dial_code": "+971" }, { "name": "United Kingdom", "code": "GB", - "dial_code": "+44", - }, - { - "name": "United States", - "code": "US", - "dial_code": "+1", - }, - { - "name": "Uruguay", - "code": "UY", - "dial_code": "+598", - }, - { - "name": "O‘zbekiston", - "code": "UZ", - "dial_code": "+998", - }, - { - "name": "Vanuatu", - "code": "VU", - "dial_code": "+678", - }, - { - "name": "Venezuela", - "code": "VE", - "dial_code": "+58", - }, - { - "name": "Việt Nam", - "code": "VN", - "dial_code": "+84", + "iso3Code": "GBR", + "dial_code": "+44" }, + {"name": "United States", "code": "US", "iso3Code": "USA", "dial_code": "+1"}, + {"name": "Uruguay", "code": "UY", "iso3Code": "URY", "dial_code": "+598"}, + {"name": "O‘zbekiston", "code": "UZ", "iso3Code": "UZB", "dial_code": "+998"}, + {"name": "Vanuatu", "code": "VU", "iso3Code": "VUT", "dial_code": "+678"}, + {"name": "Venezuela", "code": "VE", "iso3Code": "VEN", "dial_code": "+58"}, + {"name": "Việt Nam", "code": "VN", "iso3Code": "VNM", "dial_code": "+84"}, { "name": "British Virgin Islands", "code": "VG", - "dial_code": "+1284", + "iso3Code": "VGB", + "dial_code": "+1284" }, { "name": "United States Virgin Islands", "code": "VI", - "dial_code": "+1340", + "iso3Code": "VIR", + "dial_code": "+1340" }, { "name": "Wallis et Futuna", "code": "WF", - "dial_code": "+681", - }, - { - "name": "اليَمَن", - "code": "YE", - "dial_code": "+967", - }, - { - "name": "Zambia", - "code": "ZM", - "dial_code": "+260", - }, - { - "name": "Zimbabwe", - "code": "ZW", - "dial_code": "+263", + "iso3Code": "WLF", + "dial_code": "+681" }, + {"name": "اليَمَن", "code": "YE", "iso3Code": "YEM", "dial_code": "+967"}, + {"name": "Zambia", "code": "ZM", "iso3Code": "ZMB", "dial_code": "+260"}, + {"name": "Zimbabwe", "code": "ZW", "iso3Code": "ZWE", "dial_code": "+263"} ]; diff --git a/lib/src/country_localizations.dart b/lib/src/country_localizations.dart index b079091..ec24d2e 100644 --- a/lib/src/country_localizations.dart +++ b/lib/src/country_localizations.dart @@ -119,7 +119,7 @@ class _CountryLocalizationsDelegate @override Future load(Locale locale) async { - CountryLocalizations localizations = CountryLocalizations(locale); + CountryLocalizations localizations = CountryLocalizations(const Locale('en'));//locale); await localizations.load(); return localizations; } diff --git a/lib/src/selection_dialog.dart b/lib/src/selection_dialog.dart index b3434e8..58b1f97 100644 --- a/lib/src/selection_dialog.dart +++ b/lib/src/selection_dialog.dart @@ -10,6 +10,7 @@ class SelectionDialog extends StatefulWidget { final InputDecoration searchDecoration; final TextStyle? searchStyle; final TextStyle? textStyle; + final TextStyle headerTextStyle; final BoxDecoration? boxDecoration; final WidgetBuilder? emptySearchBuilder; final bool? showFlag; @@ -17,7 +18,12 @@ class SelectionDialog extends StatefulWidget { final Decoration? flagDecoration; final Size? size; final bool hideSearch; + final bool hideCloseIcon; final Icon? closeIcon; + final bool hideHeaderText; + final String? headerText; + final EdgeInsets topBarPadding; + final MainAxisAlignment headerAlignment; /// Background color of SelectionDialog final Color? backgroundColor; @@ -28,15 +34,24 @@ class SelectionDialog extends StatefulWidget { /// elements passed as favorite final List favoriteElements; + final EdgeInsetsGeometry dialogItemPadding; + + final EdgeInsetsGeometry searchPadding; + SelectionDialog( this.elements, this.favoriteElements, { Key? key, this.showCountryOnly, + required this.hideHeaderText, this.emptySearchBuilder, + required this.headerAlignment, + required this.headerTextStyle, InputDecoration searchDecoration = const InputDecoration(), this.searchStyle, this.textStyle, + required this.topBarPadding, + this.headerText, this.boxDecoration, this.showFlag, this.flagDecoration, @@ -45,10 +60,11 @@ class SelectionDialog extends StatefulWidget { this.backgroundColor, this.barrierColor, this.hideSearch = false, + this.hideCloseIcon = false, this.closeIcon, - }) : searchDecoration = searchDecoration.prefixIcon == null - ? searchDecoration.copyWith(prefixIcon: const Icon(Icons.search)) - : searchDecoration, + this.dialogItemPadding = const EdgeInsets.symmetric(horizontal: 24, vertical: 8), + this.searchPadding = const EdgeInsets.symmetric(horizontal: 24), + }) : searchDecoration = searchDecoration.prefixIcon == null ? searchDecoration.copyWith(prefixIcon: const Icon(Icons.search)) : searchDecoration, super(key: key); @override @@ -65,8 +81,7 @@ class _SelectionDialogState extends State { child: Container( clipBehavior: Clip.hardEdge, width: widget.size?.width ?? MediaQuery.of(context).size.width, - height: - widget.size?.height ?? MediaQuery.of(context).size.height * 0.85, + height: widget.size?.height ?? MediaQuery.of(context).size.height * 0.85, decoration: widget.boxDecoration ?? BoxDecoration( color: widget.backgroundColor ?? Colors.white, @@ -84,15 +99,31 @@ class _SelectionDialogState extends State { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.end, children: [ - IconButton( - padding: const EdgeInsets.all(0), - iconSize: 20, - icon: widget.closeIcon!, - onPressed: () => Navigator.pop(context), + Padding( + padding:!widget.hideHeaderText? widget.topBarPadding: EdgeInsets.zero, + child: Row( + mainAxisAlignment: widget.headerAlignment, + children: [ + !widget.hideHeaderText && widget.headerText != null + ? Text( + widget.headerText!, + overflow: TextOverflow.fade, + style: widget.headerTextStyle, + ) + : const SizedBox.shrink(), + if (!widget.hideCloseIcon) + IconButton( + padding: const EdgeInsets.all(0), + iconSize: 20, + icon: widget.closeIcon!, + onPressed: () => Navigator.pop(context), + ), + ], + ), ), if (!widget.hideSearch) Padding( - padding: const EdgeInsets.symmetric(horizontal: 24), + padding: widget.searchPadding, child: TextField( style: widget.searchStyle, decoration: widget.searchDecoration, @@ -107,28 +138,28 @@ class _SelectionDialogState extends State { : Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - ...widget.favoriteElements.map( - (f) => SimpleDialogOption( - child: _buildOption(f), - onPressed: () { + ...widget.favoriteElements.map((f) => InkWell( + onTap: () { _selectItem(f); }, - ), - ), + child: Padding( + padding: widget.dialogItemPadding, + child: _buildOption(f), + ))), const Divider(), ], ), if (filteredElements.isEmpty) _buildEmptySearchWidget(context) else - ...filteredElements.map( - (e) => SimpleDialogOption( - child: _buildOption(e), - onPressed: () { + ...filteredElements.map((e) => InkWell( + onTap: () { _selectItem(e); }, - ), - ), + child: Padding( + padding: widget.dialogItemPadding, + child: _buildOption(e), + ))), ], ), ), @@ -146,10 +177,11 @@ class _SelectionDialogState extends State { if (widget.showFlag!) Flexible( child: Container( - margin: const EdgeInsets.only(right: 16.0), + margin: Directionality.of(context) == TextDirection.ltr // Here Adding padding depending on the locale language direction + ? const EdgeInsets.only(right: 16.0) + : const EdgeInsets.only(left: 16.0), decoration: widget.flagDecoration, - clipBehavior: - widget.flagDecoration == null ? Clip.none : Clip.hardEdge, + clipBehavior: widget.flagDecoration == null ? Clip.none : Clip.hardEdge, child: Image.asset( e.flagUri!, package: 'country_code_picker', @@ -160,9 +192,7 @@ class _SelectionDialogState extends State { Expanded( flex: 4, child: Text( - widget.showCountryOnly! - ? e.toCountryStringOnly() - : e.toLongString(), + widget.showCountryOnly! ? e.toCountryStringOnly() : e.toLongString(), overflow: TextOverflow.fade, style: widget.textStyle, ), @@ -178,8 +208,7 @@ class _SelectionDialogState extends State { } return Center( - child: Text(CountryLocalizations.of(context)?.translate('no_country') ?? - 'No country found'), + child: Text(CountryLocalizations.of(context)?.translate('no_country') ?? 'No country found'), ); } @@ -192,12 +221,7 @@ class _SelectionDialogState extends State { void _filterElements(String s) { s = s.toUpperCase(); setState(() { - filteredElements = widget.elements - .where((e) => - e.code!.contains(s) || - e.dialCode!.contains(s) || - e.name!.toUpperCase().contains(s)) - .toList(); + filteredElements = widget.elements.where((e) => e.code!.contains(s) || e.dialCode!.contains(s) || e.name!.toUpperCase().contains(s)).toList(); }); } diff --git a/pubspec.yaml b/pubspec.yaml index ebc0837..c7fc8d8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,17 +1,18 @@ name: country_code_picker description: A flutter package for showing a country code selector. In addition it gives the possibility to select a list of favorites countries, as well as to search using a simple searchbox -version: 3.0.0 +version: 3.1.0 homepage: https://github.com/chandrabezzo/CountryCodePicker repository: https://github.com/chandrabezzo/CountryCodePicker issue_tracker: https://github.com/imtoori/CountryCodePicker/issues environment: - sdk: '>=2.12.0 <3.0.0' + sdk: '>=2.17.0 <4.0.0' dependencies: flutter: sdk: flutter collection: ^1.15.0 + diacritic: ^0.1.5 flutter: assets: diff --git a/screenshots/screen1.png b/screenshots/screen1.png index ebb6a19..2b33cf1 100644 Binary files a/screenshots/screen1.png and b/screenshots/screen1.png differ diff --git a/screenshots/screen2.png b/screenshots/screen2.png index 9c02d84..ea35c36 100644 Binary files a/screenshots/screen2.png and b/screenshots/screen2.png differ