diff --git a/apps/toolbox/src/main-page.xml b/apps/toolbox/src/main-page.xml
index 7fa9fc527..58aa36cbe 100644
--- a/apps/toolbox/src/main-page.xml
+++ b/apps/toolbox/src/main-page.xml
@@ -18,6 +18,7 @@
+
diff --git a/apps/toolbox/src/pages/list-page-model-sticky.ts b/apps/toolbox/src/pages/list-page-model-sticky.ts
new file mode 100644
index 000000000..3550c2f83
--- /dev/null
+++ b/apps/toolbox/src/pages/list-page-model-sticky.ts
@@ -0,0 +1,1429 @@
+import { Observable, Dialogs, DialogStrings, View, EventData, SearchEventData } from '@nativescript/core';
+type CountryListType = Array<{ title: string; items: Array<{ name: string; code: string; flag: string; isVisible?: boolean }> }>;
+export class ListPageModelSticky extends Observable {
+ countries: CountryListType = [
+ {
+ title: 'A',
+ items: [
+ {
+ name: 'Afghanistan',
+ code: '(AF)',
+ flag: '๐ฆ๐ซ',
+ },
+ {
+ name: 'Albania',
+ code: '(AL)',
+ flag: '๐ฆ๐ฑ',
+ },
+ {
+ name: 'Algeria',
+ code: '(DZ)',
+ flag: '๐ฉ๐ฟ',
+ },
+ {
+ name: 'American Samoa',
+ code: '(AS)',
+ flag: '๐ฆ๐ธ',
+ },
+ {
+ name: 'Andorra',
+ code: '(AD)',
+ flag: '๐ฆ๐ฉ',
+ },
+ {
+ name: 'Angola',
+ code: '(AO)',
+ flag: '๐ฆ๐ด',
+ },
+ {
+ name: 'Anguilla',
+ code: '(AI)',
+ flag: '๐ฆ๐ฎ',
+ },
+ {
+ name: 'Antarctica',
+ code: '(AQ)',
+ flag: '๐ฆ๐ถ',
+ },
+ {
+ name: 'Antigua and Barbuda',
+ code: '(AG)',
+ flag: '๐ฆ๐ฌ',
+ },
+ {
+ name: 'Argentina',
+ code: '(AR)',
+ flag: '๐ฆ๐ท',
+ },
+ {
+ name: 'Armenia',
+ code: '(AM)',
+ flag: '๐ฆ๐ฒ',
+ },
+ {
+ name: 'Aruba',
+ code: '(AW)',
+ flag: '๐ฆ๐ผ',
+ },
+ {
+ name: 'Australia',
+ code: '(AU)',
+ flag: '๐ฆ๐บ',
+ },
+ {
+ name: 'Austria',
+ code: '(AT)',
+ flag: '๐ฆ๐น',
+ },
+ {
+ name: 'Azerbaijan',
+ code: '(AZ)',
+ flag: '๐ฆ๐ฟ',
+ },
+ ],
+ },
+ {
+ title: 'B',
+ items: [
+ {
+ name: 'Bahamas',
+ code: '(BS)',
+ flag: '๐ง๐ธ',
+ },
+ {
+ name: 'Bahrain',
+ code: '(BH)',
+ flag: '๐ง๐ญ',
+ },
+ {
+ name: 'Bangladesh',
+ code: '(BD)',
+ flag: '๐ง๐ฉ',
+ },
+ {
+ name: 'Barbados',
+ code: '(BB)',
+ flag: '๐ง๐ง',
+ },
+ {
+ name: 'Belarus',
+ code: '(BY)',
+ flag: '๐ง๐พ',
+ },
+ {
+ name: 'Belgium',
+ code: '(BE)',
+ flag: '๐ง๐ช',
+ },
+ {
+ name: 'Belize',
+ code: '(BZ)',
+ flag: '๐ง๐ฟ',
+ },
+ {
+ name: 'Benin',
+ code: '(BJ)',
+ flag: '๐ง๐ฏ',
+ },
+ {
+ name: 'Bermuda',
+ code: '(BM)',
+ flag: '๐ง๐ฒ',
+ },
+ {
+ name: 'Bhutan',
+ code: '(BT)',
+ flag: '๐ง๐น',
+ },
+ {
+ name: 'Bolivia',
+ code: '(BO)',
+ flag: '๐ง๐ด',
+ },
+ {
+ name: 'Bonaire, Sint Eustatius and Saba',
+ code: '(BQ)',
+ flag: '๐ง๐ถ',
+ },
+ {
+ name: 'Bosnia and Herzegovina',
+ code: '(BA)',
+ flag: '๐ง๐ฆ',
+ },
+ {
+ name: 'Botswana',
+ code: '(BW)',
+ flag: '๐ง๐ผ',
+ },
+ {
+ name: 'Bouvet Island',
+ code: '(BV)',
+ flag: '๐ง๐ป',
+ },
+ {
+ name: 'Brazil',
+ code: '(BR)',
+ flag: '๐ง๐ท',
+ },
+ {
+ name: 'British Indian Ocean Territory',
+ code: '(IO)',
+ flag: '๐ฎ๐ด',
+ },
+ {
+ name: 'Brunei Darussalam',
+ code: '(BN)',
+ flag: '๐ง๐ณ',
+ },
+ {
+ name: 'Bulgaria',
+ code: '(BG)',
+ flag: '๐ง๐ฌ',
+ },
+ {
+ name: 'Burkina Faso',
+ code: '(BF)',
+ flag: '๐ง๐ซ',
+ },
+ {
+ name: 'Burundi',
+ code: '(BI)',
+ flag: '๐ง๐ฎ',
+ },
+ ],
+ },
+ {
+ title: 'C',
+ items: [
+ {
+ name: 'Cambodia',
+ code: '(KH)',
+ flag: '๐ฐ๐ญ',
+ },
+ {
+ name: 'Cameroon',
+ code: '(CM)',
+ flag: '๐จ๐ฒ',
+ },
+ {
+ name: 'Canada',
+ code: '(CA)',
+ flag: '๐จ๐ฆ',
+ },
+ {
+ name: 'Cape Verde',
+ code: '(CV)',
+ flag: '๐จ๐ป',
+ },
+ {
+ name: 'Cayman Islands',
+ code: '(KY)',
+ flag: '๐ฐ๐พ',
+ },
+ {
+ name: 'Central African Republic',
+ code: '(CF)',
+ flag: '๐จ๐ซ',
+ },
+ {
+ name: 'Chad',
+ code: '(TD)',
+ flag: '๐น๐ฉ',
+ },
+ {
+ name: 'Chile',
+ code: '(CL)',
+ flag: '๐จ๐ฑ',
+ },
+ {
+ name: 'Christmas Island',
+ code: '(CX)',
+ flag: '๐จ๐ฝ',
+ },
+ {
+ name: 'Cocos (Keeling) Islands',
+ code: '(CC)',
+ flag: '๐จ๐จ',
+ },
+ {
+ name: 'Colombia',
+ code: '(CO)',
+ flag: '๐จ๐ด',
+ },
+ {
+ name: 'Comoros',
+ code: '(KM)',
+ flag: '๐ฐ๐ฒ',
+ },
+ {
+ name: 'Cook Islands',
+ code: '(CK)',
+ flag: '๐จ๐ฐ',
+ },
+ {
+ name: 'Costa Rica',
+ code: '(CR)',
+ flag: '๐จ๐ท',
+ },
+ {
+ name: "Cote d'Ivoire",
+ code: '(CI)',
+ flag: '๐จ๐ฎ',
+ },
+ {
+ name: 'Croatia',
+ code: '(HR)',
+ flag: '๐ญ๐ท',
+ },
+ {
+ name: 'Cuba',
+ code: '(CU)',
+ flag: '๐จ๐บ',
+ },
+ {
+ name: 'Curaรงao',
+ code: '(CW)',
+ flag: '๐จ๐ผ',
+ },
+ {
+ name: 'Cyprus',
+ code: '(CY)',
+ flag: '๐จ๐พ',
+ },
+ {
+ name: 'Czech Republic',
+ code: '(CZ)',
+ flag: '๐จ๐ฟ',
+ },
+ ],
+ },
+ {
+ title: 'D',
+ items: [
+ {
+ name: 'Democratic Republic of the Congo',
+ code: '(CD)',
+ flag: '๐จ๐ฉ',
+ },
+ {
+ name: 'Denmark',
+ code: '(DK)',
+ flag: '๐ฉ๐ฐ',
+ },
+ {
+ name: 'Djibouti',
+ code: '(DJ)',
+ flag: '๐ฉ๐ฏ',
+ },
+ {
+ name: 'Dominica',
+ code: '(DM)',
+ flag: '๐ฉ๐ฒ',
+ },
+ {
+ name: 'Dominican Republic',
+ code: '(DO)',
+ flag: '๐ฉ๐ด',
+ },
+ ],
+ },
+ {
+ title: 'E',
+ items: [
+ {
+ name: 'Ecuador',
+ code: '(EC)',
+ flag: '๐ช๐จ',
+ },
+ {
+ name: 'Egypt',
+ code: '(EG)',
+ flag: '๐ช๐ฌ',
+ },
+ {
+ name: 'El Salvador',
+ code: '(SV)',
+ flag: '๐ธ๐ป',
+ },
+ {
+ name: 'Equatorial Guinea',
+ code: '(GQ)',
+ flag: '๐ฌ๐ถ',
+ },
+ {
+ name: 'Eritrea',
+ code: '(ER)',
+ flag: '๐ช๐ท',
+ },
+ {
+ name: 'Estonia',
+ code: '(EE)',
+ flag: '๐ช๐ช',
+ },
+ {
+ name: 'Eswatini',
+ code: '(SZ)',
+ flag: '๐ธ๐ฟ',
+ },
+ {
+ name: 'Ethiopia',
+ code: '(ET)',
+ flag: '๐ช๐น',
+ },
+ ],
+ },
+ {
+ title: 'F',
+ items: [
+ {
+ name: 'Falkland Islands (Malvinas)',
+ code: '(FK)',
+ flag: '๐ซ๐ฐ',
+ },
+ {
+ name: 'Faroe Islands',
+ code: '(FO)',
+ flag: '๐ซ๐ด',
+ },
+ {
+ name: 'Fiji',
+ code: '(FJ)',
+ flag: '๐ซ๐ฏ',
+ },
+ {
+ name: 'Finland',
+ code: '(FI)',
+ flag: '๐ซ๐ฎ',
+ },
+ {
+ name: 'France',
+ code: '(FR)',
+ flag: '๐ซ๐ท',
+ },
+ {
+ name: 'French Guiana',
+ code: '(GF)',
+ flag: '๐ฌ๐ซ',
+ },
+ {
+ name: 'French Polynesia',
+ code: '(PF)',
+ flag: '๐ต๐ซ',
+ },
+ {
+ name: 'French Southern Territories',
+ code: '(TF)',
+ flag: '๐น๐ซ',
+ },
+ ],
+ },
+ {
+ title: 'G',
+ items: [
+ {
+ name: 'Gabon',
+ code: '(GA)',
+ flag: '๐ฌ๐ฆ',
+ },
+ {
+ name: 'Georgia',
+ code: '(GE)',
+ flag: '๐ฌ๐ช',
+ },
+ {
+ name: 'Germany',
+ code: '(DE)',
+ flag: '๐ฉ๐ช',
+ },
+ {
+ name: 'Ghana',
+ code: '(GH)',
+ flag: '๐ฌ๐ญ',
+ },
+ {
+ name: 'Gibraltar',
+ code: '(GI)',
+ flag: '๐ฌ๐ฎ',
+ },
+ {
+ name: 'Greece',
+ code: '(GR)',
+ flag: '๐ฌ๐ท',
+ },
+ {
+ name: 'Greenland',
+ code: '(GL)',
+ flag: '๐ฌ๐ฑ',
+ },
+ {
+ name: 'Grenada',
+ code: '(GD)',
+ flag: '๐ฌ๐ฉ',
+ },
+ {
+ name: 'Guadeloupe',
+ code: '(GP)',
+ flag: '๐ฌ๐ต',
+ },
+ {
+ name: 'Guam',
+ code: '(GU)',
+ flag: '๐ฌ๐บ',
+ },
+ {
+ name: 'Guatemala',
+ code: '(GT)',
+ flag: '๐ฌ๐น',
+ },
+ {
+ name: 'Guernsey',
+ code: '(GG)',
+ flag: '๐ฌ๐ฌ',
+ },
+ {
+ name: 'Guinea',
+ code: '(GN)',
+ flag: '๐ฌ๐ณ',
+ },
+ {
+ name: 'Guinea-Bissau',
+ code: '(GW)',
+ flag: '๐ฌ๐ผ',
+ },
+ {
+ name: 'Guyana',
+ code: '(GY)',
+ flag: '๐ฌ๐พ',
+ },
+ ],
+ },
+ {
+ title: 'H',
+ items: [
+ {
+ name: 'Haiti',
+ code: '(HT)',
+ flag: '๐ญ๐น',
+ },
+ {
+ name: 'Heard Island and McDonald Islands',
+ code: '(HM)',
+ flag: '๐ญ๐ฒ',
+ },
+ {
+ name: 'Holy See (Vatican City State)',
+ code: '(VA)',
+ flag: '๐ป๐ฆ',
+ },
+ {
+ name: 'Honduras',
+ code: '(HN)',
+ flag: '๐ญ๐ณ',
+ },
+ {
+ name: 'Hong Kong',
+ code: '(HK)',
+ flag: '๐ญ๐ฐ',
+ },
+ {
+ name: 'Hungary',
+ code: '(HU)',
+ flag: '๐ญ๐บ',
+ },
+ ],
+ },
+ {
+ title: 'I',
+ items: [
+ {
+ name: 'Iceland',
+ code: '(IS)',
+ flag: '๐ฎ๐ธ',
+ },
+ {
+ name: 'India',
+ code: '(IN)',
+ flag: '๐ฎ๐ณ',
+ },
+ {
+ name: 'Indonesia',
+ code: '(ID)',
+ flag: '๐ฎ๐ฉ',
+ },
+ {
+ name: 'Iraq',
+ code: '(IQ)',
+ flag: '๐ฎ๐ถ',
+ },
+ {
+ name: 'Ireland',
+ code: '(IE)',
+ flag: '๐ฎ๐ช',
+ },
+ {
+ name: 'Islamic Republic of Iran',
+ code: '(IR)',
+ flag: '๐ฎ๐ท',
+ },
+ {
+ name: 'Isle of Man',
+ code: '(IM)',
+ flag: '๐ฎ๐ฒ',
+ },
+ {
+ name: 'Israel',
+ code: '(IL)',
+ flag: '๐ฎ๐ฑ',
+ },
+ {
+ name: 'Italy',
+ code: '(IT)',
+ flag: '๐ฎ๐น',
+ },
+ ],
+ },
+ {
+ title: 'J',
+ items: [
+ {
+ name: 'Jamaica',
+ code: '(JM)',
+ flag: '๐ฏ๐ฒ',
+ },
+ {
+ name: 'Japan',
+ code: '(JP)',
+ flag: '๐ฏ๐ต',
+ },
+ {
+ name: 'Jersey',
+ code: '(JE)',
+ flag: '๐ฏ๐ช',
+ },
+ {
+ name: 'Jordan',
+ code: '(JO)',
+ flag: '๐ฏ๐ด',
+ },
+ ],
+ },
+ {
+ title: 'K',
+ items: [
+ {
+ name: 'Kazakhstan',
+ code: '(KZ)',
+ flag: '๐ฐ๐ฟ',
+ },
+ {
+ name: 'Kenya',
+ code: '(KE)',
+ flag: '๐ฐ๐ช',
+ },
+ {
+ name: 'Kiribati',
+ code: '(KI)',
+ flag: '๐ฐ๐ฎ',
+ },
+ {
+ name: 'Kosovo',
+ code: '(XK)',
+ flag: '๐ฝ๐ฐ',
+ },
+ {
+ name: 'Kuwait',
+ code: '(KW)',
+ flag: '๐ฐ๐ผ',
+ },
+ {
+ name: 'Kyrgyzstan',
+ code: '(KG)',
+ flag: '๐ฐ๐ฌ',
+ },
+ ],
+ },
+ {
+ title: 'L',
+ items: [
+ {
+ name: "Lao People's Democratic Republic",
+ code: '(LA)',
+ flag: '๐ฑ๐ฆ',
+ },
+ {
+ name: 'Latvia',
+ code: '(LV)',
+ flag: '๐ฑ๐ป',
+ },
+ {
+ name: 'Lebanon',
+ code: '(LB)',
+ flag: '๐ฑ๐ง',
+ },
+ {
+ name: 'Lesotho',
+ code: '(LS)',
+ flag: '๐ฑ๐ธ',
+ },
+ {
+ name: 'Liberia',
+ code: '(LR)',
+ flag: '๐ฑ๐ท',
+ },
+ {
+ name: 'Libya',
+ code: '(LY)',
+ flag: '๐ฑ๐พ',
+ },
+ {
+ name: 'Liechtenstein',
+ code: '(LI)',
+ flag: '๐ฑ๐ฎ',
+ },
+ {
+ name: 'Lithuania',
+ code: '(LT)',
+ flag: '๐ฑ๐น',
+ },
+ {
+ name: 'Luxembourg',
+ code: '(LU)',
+ flag: '๐ฑ๐บ',
+ },
+ ],
+ },
+ {
+ title: 'M',
+ items: [
+ {
+ name: 'Macao',
+ code: '(MO)',
+ flag: '๐ฒ๐ด',
+ },
+ {
+ name: 'Madagascar',
+ code: '(MG)',
+ flag: '๐ฒ๐ฌ',
+ },
+ {
+ name: 'Malawi',
+ code: '(MW)',
+ flag: '๐ฒ๐ผ',
+ },
+ {
+ name: 'Malaysia',
+ code: '(MY)',
+ flag: '๐ฒ๐พ',
+ },
+ {
+ name: 'Maldives',
+ code: '(MV)',
+ flag: '๐ฒ๐ป',
+ },
+ {
+ name: 'Mali',
+ code: '(ML)',
+ flag: '๐ฒ๐ฑ',
+ },
+ {
+ name: 'Malta',
+ code: '(MT)',
+ flag: '๐ฒ๐น',
+ },
+ {
+ name: 'Marshall Islands',
+ code: '(MH)',
+ flag: '๐ฒ๐ญ',
+ },
+ {
+ name: 'Martinique',
+ code: '(MQ)',
+ flag: '๐ฒ๐ถ',
+ },
+ {
+ name: 'Mauritania',
+ code: '(MR)',
+ flag: '๐ฒ๐ท',
+ },
+ {
+ name: 'Mauritius',
+ code: '(MU)',
+ flag: '๐ฒ๐บ',
+ },
+ {
+ name: 'Mayotte',
+ code: '(YT)',
+ flag: '๐พ๐น',
+ },
+ {
+ name: 'Mexico',
+ code: '(MX)',
+ flag: '๐ฒ๐ฝ',
+ },
+ {
+ name: 'Micronesia, Federated States of',
+ code: '(FM)',
+ flag: '๐ซ๐ฒ',
+ },
+ {
+ name: 'Moldova, Republic of',
+ code: '(MD)',
+ flag: '๐ฒ๐ฉ',
+ },
+ {
+ name: 'Monaco',
+ code: '(MC)',
+ flag: '๐ฒ๐จ',
+ },
+ {
+ name: 'Mongolia',
+ code: '(MN)',
+ flag: '๐ฒ๐ณ',
+ },
+ {
+ name: 'Montenegro',
+ code: '(ME)',
+ flag: '๐ฒ๐ช',
+ },
+ {
+ name: 'Montserrat',
+ code: '(MS)',
+ flag: '๐ฒ๐ธ',
+ },
+ {
+ name: 'Morocco',
+ code: '(MA)',
+ flag: '๐ฒ๐ฆ',
+ },
+ {
+ name: 'Mozambique',
+ code: '(MZ)',
+ flag: '๐ฒ๐ฟ',
+ },
+ {
+ name: 'Myanmar',
+ code: '(MM)',
+ flag: '๐ฒ๐ฒ',
+ },
+ ],
+ },
+ {
+ title: 'N',
+ items: [
+ {
+ name: 'Namibia',
+ code: '(NA)',
+ flag: '๐ณ๐ฆ',
+ },
+ {
+ name: 'Nauru',
+ code: '(NR)',
+ flag: '๐ณ๐ท',
+ },
+ {
+ name: 'Nepal',
+ code: '(NP)',
+ flag: '๐ณ๐ต',
+ },
+ {
+ name: 'Netherlands',
+ code: '(NL)',
+ flag: '๐ณ๐ฑ',
+ },
+ {
+ name: 'New Caledonia',
+ code: '(NC)',
+ flag: '๐ณ๐จ',
+ },
+ {
+ name: 'New Zealand',
+ code: '(NZ)',
+ flag: '๐ณ๐ฟ',
+ },
+ {
+ name: 'Nicaragua',
+ code: '(NI)',
+ flag: '๐ณ๐ฎ',
+ },
+ {
+ name: 'Niger',
+ code: '(NE)',
+ flag: '๐ณ๐ช',
+ },
+ {
+ name: 'Nigeria',
+ code: '(NG)',
+ flag: '๐ณ๐ฌ',
+ },
+ {
+ name: 'Niue',
+ code: '(NU)',
+ flag: '๐ณ๐บ',
+ },
+ {
+ name: 'Norfolk Island',
+ code: '(NF)',
+ flag: '๐ณ๐ซ',
+ },
+ {
+ name: 'North Korea',
+ code: '(KP)',
+ flag: '๐ฐ๐ต',
+ },
+ {
+ name: 'Northern Mariana Islands',
+ code: '(MP)',
+ flag: '๐ฒ๐ต',
+ },
+ {
+ name: 'Norway',
+ code: '(NO)',
+ flag: '๐ณ๐ด',
+ },
+ ],
+ },
+ {
+ title: 'O',
+ items: [
+ {
+ name: 'Oman',
+ code: '(OM)',
+ flag: '๐ด๐ฒ',
+ },
+ ],
+ },
+ {
+ title: 'P',
+ items: [
+ {
+ name: 'Pakistan',
+ code: '(PK)',
+ flag: '๐ต๐ฐ',
+ },
+ {
+ name: 'Palau',
+ code: '(PW)',
+ flag: '๐ต๐ผ',
+ },
+ {
+ name: 'Panama',
+ code: '(PA)',
+ flag: '๐ต๐ฆ',
+ },
+ {
+ name: 'Papua New Guinea',
+ code: '(PG)',
+ flag: '๐ต๐ฌ',
+ },
+ {
+ name: 'Paraguay',
+ code: '(PY)',
+ flag: '๐ต๐พ',
+ },
+ {
+ name: "People's Republic of China",
+ code: '(CN)',
+ flag: '๐จ๐ณ',
+ },
+ {
+ name: 'Peru',
+ code: '(PE)',
+ flag: '๐ต๐ช',
+ },
+ {
+ name: 'Philippines',
+ code: '(PH)',
+ flag: '๐ต๐ญ',
+ },
+ {
+ name: 'Pitcairn',
+ code: '(PN)',
+ flag: '๐ต๐ณ',
+ },
+ {
+ name: 'Poland',
+ code: '(PL)',
+ flag: '๐ต๐ฑ',
+ },
+ {
+ name: 'Portugal',
+ code: '(PT)',
+ flag: '๐ต๐น',
+ },
+ {
+ name: 'Puerto Rico',
+ code: '(PR)',
+ flag: '๐ต๐ท',
+ },
+ ],
+ },
+ {
+ title: 'Q',
+ items: [
+ {
+ name: 'Qatar',
+ code: '(QA)',
+ flag: '๐ถ๐ฆ',
+ },
+ ],
+ },
+ {
+ title: 'R',
+ items: [
+ {
+ name: 'Republic of the Congo',
+ code: '(CG)',
+ flag: '๐จ๐ฌ',
+ },
+ {
+ name: 'Republic of The Gambia',
+ code: '(GM)',
+ flag: '๐ฌ๐ฒ',
+ },
+ {
+ name: 'Reunion',
+ code: '(RE)',
+ flag: '๐ท๐ช',
+ },
+ {
+ name: 'Romania',
+ code: '(RO)',
+ flag: '๐ท๐ด',
+ },
+ {
+ name: 'Russian Federation',
+ code: '(RU)',
+ flag: '๐ท๐บ',
+ },
+ {
+ name: 'Rwanda',
+ code: '(RW)',
+ flag: '๐ท๐ผ',
+ },
+ ],
+ },
+ {
+ title: 'S',
+ items: [
+ {
+ name: 'Saint Barthรฉlemy',
+ code: '(BL)',
+ flag: '๐ง๐ฑ',
+ },
+ {
+ name: 'Saint Helena',
+ code: '(SH)',
+ flag: '๐ธ๐ญ',
+ },
+ {
+ name: 'Saint Kitts and Nevis',
+ code: '(KN)',
+ flag: '๐ฐ๐ณ',
+ },
+ {
+ name: 'Saint Lucia',
+ code: '(LC)',
+ flag: '๐ฑ๐จ',
+ },
+ {
+ name: 'Saint Martin (French part)',
+ code: '(MF)',
+ flag: '๐ฒ๐ซ',
+ },
+ {
+ name: 'Saint Pierre and Miquelon',
+ code: '(PM)',
+ flag: '๐ต๐ฒ',
+ },
+ {
+ name: 'Saint Vincent and the Grenadines',
+ code: '(VC)',
+ flag: '๐ป๐จ',
+ },
+ {
+ name: 'Samoa',
+ code: '(WS)',
+ flag: '๐ผ๐ธ',
+ },
+ {
+ name: 'San Marino',
+ code: '(SM)',
+ flag: '๐ธ๐ฒ',
+ },
+ {
+ name: 'Sao Tome and Principe',
+ code: '(ST)',
+ flag: '๐ธ๐น',
+ },
+ {
+ name: 'Saudi Arabia',
+ code: '(SA)',
+ flag: '๐ธ๐ฆ',
+ },
+ {
+ name: 'Senegal',
+ code: '(SN)',
+ flag: '๐ธ๐ณ',
+ },
+ {
+ name: 'Serbia',
+ code: '(RS)',
+ flag: '๐ท๐ธ',
+ },
+ {
+ name: 'Seychelles',
+ code: '(SC)',
+ flag: '๐ธ๐จ',
+ },
+ {
+ name: 'Sierra Leone',
+ code: '(SL)',
+ flag: '๐ธ๐ฑ',
+ },
+ {
+ name: 'Singapore',
+ code: '(SG)',
+ flag: '๐ธ๐ฌ',
+ },
+ {
+ name: 'Sint Maarten (Dutch part)',
+ code: '(SX)',
+ flag: '๐ธ๐ฝ',
+ },
+ {
+ name: 'Slovakia',
+ code: '(SK)',
+ flag: '๐ธ๐ฐ',
+ },
+ {
+ name: 'Slovenia',
+ code: '(SI)',
+ flag: '๐ธ๐ฎ',
+ },
+ {
+ name: 'Solomon Islands',
+ code: '(SB)',
+ flag: '๐ธ๐ง',
+ },
+ {
+ name: 'Somalia',
+ code: '(SO)',
+ flag: '๐ธ๐ด',
+ },
+ {
+ name: 'South Africa',
+ code: '(ZA)',
+ flag: '๐ฟ๐ฆ',
+ },
+ {
+ name: 'South Georgia and the South Sandwich Islands',
+ code: '(GS)',
+ flag: '๐ฌ๐ธ',
+ },
+ {
+ name: 'South Korea',
+ code: '(KR)',
+ flag: '๐ฐ๐ท',
+ },
+ {
+ name: 'South Sudan',
+ code: '(SS)',
+ flag: '๐ธ๐ธ',
+ },
+ {
+ name: 'Spain',
+ code: '(ES)',
+ flag: '๐ช๐ธ',
+ },
+ {
+ name: 'Sri Lanka',
+ code: '(LK)',
+ flag: '๐ฑ๐ฐ',
+ },
+ {
+ name: 'State of Palestine',
+ code: '(PS)',
+ flag: '๐ต๐ธ',
+ },
+ {
+ name: 'Sudan',
+ code: '(SD)',
+ flag: '๐ธ๐ฉ',
+ },
+ {
+ name: 'Suriname',
+ code: '(SR)',
+ flag: '๐ธ๐ท',
+ },
+ {
+ name: 'Svalbard and Jan Mayen',
+ code: '(SJ)',
+ flag: '๐ธ๐ฏ',
+ },
+ {
+ name: 'Sweden',
+ code: '(SE)',
+ flag: '๐ธ๐ช',
+ },
+ {
+ name: 'Switzerland',
+ code: '(CH)',
+ flag: '๐จ๐ญ',
+ },
+ {
+ name: 'Syrian Arab Republic',
+ code: '(SY)',
+ flag: '๐ธ๐พ',
+ },
+ ],
+ },
+ {
+ title: 'T',
+ items: [
+ {
+ name: 'Taiwan, Province of China',
+ code: '(TW)',
+ flag: '๐น๐ผ',
+ },
+ {
+ name: 'Tajikistan',
+ code: '(TJ)',
+ flag: '๐น๐ฏ',
+ },
+ {
+ name: 'Thailand',
+ code: '(TH)',
+ flag: '๐น๐ญ',
+ },
+ {
+ name: 'The Republic of North Macedonia',
+ code: '(MK)',
+ flag: '๐ฒ๐ฐ',
+ },
+ {
+ name: 'Timor-Leste',
+ code: '(TL)',
+ flag: '๐น๐ฑ',
+ },
+ {
+ name: 'Togo',
+ code: '(TG)',
+ flag: '๐น๐ฌ',
+ },
+ {
+ name: 'Tokelau',
+ code: '(TK)',
+ flag: '๐น๐ฐ',
+ },
+ {
+ name: 'Tonga',
+ code: '(TO)',
+ flag: '๐น๐ด',
+ },
+ {
+ name: 'Trinidad and Tobago',
+ code: '(TT)',
+ flag: '๐น๐น',
+ },
+ {
+ name: 'Tunisia',
+ code: '(TN)',
+ flag: '๐น๐ณ',
+ },
+ {
+ name: 'Tรผrkiye',
+ code: '(TR)',
+ flag: '๐น๐ท',
+ },
+ {
+ name: 'Turkmenistan',
+ code: '(TM)',
+ flag: '๐น๐ฒ',
+ },
+ {
+ name: 'Turks and Caicos Islands',
+ code: '(TC)',
+ flag: '๐น๐จ',
+ },
+ {
+ name: 'Tuvalu',
+ code: '(TV)',
+ flag: '๐น๐ป',
+ },
+ ],
+ },
+ {
+ title: 'U',
+ items: [
+ {
+ name: 'Uganda',
+ code: '(UG)',
+ flag: '๐บ๐ฌ',
+ },
+ {
+ name: 'Ukraine',
+ code: '(UA)',
+ flag: '๐บ๐ฆ',
+ },
+ {
+ name: 'United Arab Emirates',
+ code: '(AE)',
+ flag: '๐ฆ๐ช',
+ },
+ {
+ name: 'United Kingdom',
+ code: '(GB)',
+ flag: '๐ฌ๐ง',
+ },
+ {
+ name: 'United Republic of Tanzania',
+ code: '(TZ)',
+ flag: '๐น๐ฟ',
+ },
+ {
+ name: 'United States Minor Outlying Islands',
+ code: '(UM)',
+ flag: '๐บ๐ฒ',
+ },
+ {
+ name: 'United States of America',
+ code: '(US)',
+ flag: '๐บ๐ธ',
+ },
+ {
+ name: 'Uruguay',
+ code: '(UY)',
+ flag: '๐บ๐พ',
+ },
+ {
+ name: 'Uzbekistan',
+ code: '(UZ)',
+ flag: '๐บ๐ฟ',
+ },
+ ],
+ },
+ {
+ title: 'V',
+ items: [
+ {
+ name: 'Vanuatu',
+ code: '(VU)',
+ flag: '๐ป๐บ',
+ },
+ {
+ name: 'Venezuela',
+ code: '(VE)',
+ flag: '๐ป๐ช',
+ },
+ {
+ name: 'Vietnam',
+ code: '(VN)',
+ flag: '๐ป๐ณ',
+ },
+ {
+ name: 'Virgin Islands, British',
+ code: '(VG)',
+ flag: '๐ป๐ฌ',
+ },
+ {
+ name: 'Virgin Islands, U.S.',
+ code: '(VI)',
+ flag: '๐ป๐ฎ',
+ },
+ ],
+ },
+ {
+ title: 'W',
+ items: [
+ {
+ name: 'Wallis and Futuna',
+ code: '(WF)',
+ flag: '๐ผ๐ซ',
+ },
+ {
+ name: 'Western Sahara',
+ code: '(EH)',
+ flag: '๐ช๐ญ',
+ },
+ ],
+ },
+ {
+ title: 'Y',
+ items: [
+ {
+ name: 'Yemen',
+ code: '(YE)',
+ flag: '๐พ๐ช',
+ },
+ ],
+ },
+ {
+ title: 'Z',
+ items: [
+ {
+ name: 'Zambia',
+ code: '(ZM)',
+ flag: '๐ฟ๐ฒ',
+ },
+ {
+ name: 'Zimbabwe',
+ code: '(ZW)',
+ flag: '๐ฟ๐ผ',
+ },
+ ],
+ },
+ ];
+ private _originalCountries: CountryListType;
+
+ selectItemTemplate(item: any, index: number, items: Array) {
+ return 'main'; // index == items.length - 1 ? 'last' : 'not-last';
+ }
+
+ componentsItemTap(args): void {
+ Dialogs.alert({
+ title: 'Want to play?',
+ message: 'Nothing to see here yet. Feel free to add more examples to play around.',
+ okButtonText: DialogStrings.OK,
+ });
+ }
+
+ itemLoading(args: EventData): void {
+ (args.object as View).backgroundColor = 'transparent';
+ }
+
+ onSearchTextChange(evt: SearchEventData): void {
+ if (!this._originalCountries) {
+ this._originalCountries = this.countries;
+ }
+ const searchText = evt.text.toLowerCase();
+ console.log('Search text:', searchText);
+ if (searchText) {
+ this.countries = this.filterCountryGroups(this._originalCountries, searchText);
+ } else {
+ this.countries = this._originalCountries; // reset to original if no search text
+ }
+ this.notifyPropertyChange('countries', this.countries);
+ }
+
+ /**
+ * Filter a grouped array of countries by search query.
+ * @param {Array<{ title: string; items: { name: string; code: string; flag: string; }[] }>} groups
+ * @param {string} query
+ * @returns Filtered groups with the same shape, omitting any with no matches.
+ */
+ filterCountryGroups(groups: CountryListType, query: string): CountryListType {
+ const q = query.trim().toLowerCase();
+ if (!q) return groups; // no query โ all groups
+
+ return (
+ groups
+ .map((group) => {
+ // keep only items whose name includes the query
+ const items = group.items.filter((item) => item.name.toLowerCase().includes(q));
+ return { ...group, items };
+ })
+ // drop any group that ended up with 0 items
+ .filter((group) => group.items.length > 0)
+ );
+ }
+}
diff --git a/apps/toolbox/src/pages/list-page-model.ts b/apps/toolbox/src/pages/list-page-model.ts
index 9a1f87aff..564a67d24 100644
--- a/apps/toolbox/src/pages/list-page-model.ts
+++ b/apps/toolbox/src/pages/list-page-model.ts
@@ -1,1382 +1,25 @@
-import { Observable, Dialogs, DialogStrings, View, EventData, SearchEventData } from '@nativescript/core';
-type CountryListType = Array<{ title: string; items: Array<{ name: string; code: string; flag: string; isVisible?: boolean }> }>;
+import { Observable, Dialogs, DialogStrings } from '@nativescript/core';
+
export class ListPageModel extends Observable {
- countries: CountryListType = [
- {
- title: 'A',
- items: [
- {
- name: 'Afghanistan',
- code: '(AF)',
- flag: '๐ฆ๐ซ',
- },
- {
- name: 'Albania',
- code: '(AL)',
- flag: '๐ฆ๐ฑ',
- },
- {
- name: 'Algeria',
- code: '(DZ)',
- flag: '๐ฉ๐ฟ',
- },
- {
- name: 'American Samoa',
- code: '(AS)',
- flag: '๐ฆ๐ธ',
- },
- {
- name: 'Andorra',
- code: '(AD)',
- flag: '๐ฆ๐ฉ',
- },
- {
- name: 'Angola',
- code: '(AO)',
- flag: '๐ฆ๐ด',
- },
- {
- name: 'Anguilla',
- code: '(AI)',
- flag: '๐ฆ๐ฎ',
- },
- {
- name: 'Antarctica',
- code: '(AQ)',
- flag: '๐ฆ๐ถ',
- },
- {
- name: 'Antigua and Barbuda',
- code: '(AG)',
- flag: '๐ฆ๐ฌ',
- },
- {
- name: 'Argentina',
- code: '(AR)',
- flag: '๐ฆ๐ท',
- },
- {
- name: 'Armenia',
- code: '(AM)',
- flag: '๐ฆ๐ฒ',
- },
- {
- name: 'Aruba',
- code: '(AW)',
- flag: '๐ฆ๐ผ',
- },
- {
- name: 'Australia',
- code: '(AU)',
- flag: '๐ฆ๐บ',
- },
- {
- name: 'Austria',
- code: '(AT)',
- flag: '๐ฆ๐น',
- },
- {
- name: 'Azerbaijan',
- code: '(AZ)',
- flag: '๐ฆ๐ฟ',
- },
- ],
- },
- {
- title: 'B',
- items: [
- {
- name: 'Bahamas',
- code: '(BS)',
- flag: '๐ง๐ธ',
- },
- {
- name: 'Bahrain',
- code: '(BH)',
- flag: '๐ง๐ญ',
- },
- {
- name: 'Bangladesh',
- code: '(BD)',
- flag: '๐ง๐ฉ',
- },
- {
- name: 'Barbados',
- code: '(BB)',
- flag: '๐ง๐ง',
- },
- {
- name: 'Belarus',
- code: '(BY)',
- flag: '๐ง๐พ',
- },
- {
- name: 'Belgium',
- code: '(BE)',
- flag: '๐ง๐ช',
- },
- {
- name: 'Belize',
- code: '(BZ)',
- flag: '๐ง๐ฟ',
- },
- {
- name: 'Benin',
- code: '(BJ)',
- flag: '๐ง๐ฏ',
- },
- {
- name: 'Bermuda',
- code: '(BM)',
- flag: '๐ง๐ฒ',
- },
- {
- name: 'Bhutan',
- code: '(BT)',
- flag: '๐ง๐น',
- },
- {
- name: 'Bolivia',
- code: '(BO)',
- flag: '๐ง๐ด',
- },
- {
- name: 'Bonaire, Sint Eustatius and Saba',
- code: '(BQ)',
- flag: '๐ง๐ถ',
- },
- {
- name: 'Bosnia and Herzegovina',
- code: '(BA)',
- flag: '๐ง๐ฆ',
- },
- {
- name: 'Botswana',
- code: '(BW)',
- flag: '๐ง๐ผ',
- },
- {
- name: 'Bouvet Island',
- code: '(BV)',
- flag: '๐ง๐ป',
- },
- {
- name: 'Brazil',
- code: '(BR)',
- flag: '๐ง๐ท',
- },
- {
- name: 'British Indian Ocean Territory',
- code: '(IO)',
- flag: '๐ฎ๐ด',
- },
- {
- name: 'Brunei Darussalam',
- code: '(BN)',
- flag: '๐ง๐ณ',
- },
- {
- name: 'Bulgaria',
- code: '(BG)',
- flag: '๐ง๐ฌ',
- },
- {
- name: 'Burkina Faso',
- code: '(BF)',
- flag: '๐ง๐ซ',
- },
- {
- name: 'Burundi',
- code: '(BI)',
- flag: '๐ง๐ฎ',
- },
- ],
- },
- {
- title: 'C',
- items: [
- {
- name: 'Cambodia',
- code: '(KH)',
- flag: '๐ฐ๐ญ',
- },
- {
- name: 'Cameroon',
- code: '(CM)',
- flag: '๐จ๐ฒ',
- },
- {
- name: 'Canada',
- code: '(CA)',
- flag: '๐จ๐ฆ',
- },
- {
- name: 'Cape Verde',
- code: '(CV)',
- flag: '๐จ๐ป',
- },
- {
- name: 'Cayman Islands',
- code: '(KY)',
- flag: '๐ฐ๐พ',
- },
- {
- name: 'Central African Republic',
- code: '(CF)',
- flag: '๐จ๐ซ',
- },
- {
- name: 'Chad',
- code: '(TD)',
- flag: '๐น๐ฉ',
- },
- {
- name: 'Chile',
- code: '(CL)',
- flag: '๐จ๐ฑ',
- },
- {
- name: 'Christmas Island',
- code: '(CX)',
- flag: '๐จ๐ฝ',
- },
- {
- name: 'Cocos (Keeling) Islands',
- code: '(CC)',
- flag: '๐จ๐จ',
- },
- {
- name: 'Colombia',
- code: '(CO)',
- flag: '๐จ๐ด',
- },
- {
- name: 'Comoros',
- code: '(KM)',
- flag: '๐ฐ๐ฒ',
- },
- {
- name: 'Cook Islands',
- code: '(CK)',
- flag: '๐จ๐ฐ',
- },
- {
- name: 'Costa Rica',
- code: '(CR)',
- flag: '๐จ๐ท',
- },
- {
- name: "Cote d'Ivoire",
- code: '(CI)',
- flag: '๐จ๐ฎ',
- },
- {
- name: 'Croatia',
- code: '(HR)',
- flag: '๐ญ๐ท',
- },
- {
- name: 'Cuba',
- code: '(CU)',
- flag: '๐จ๐บ',
- },
- {
- name: 'Curaรงao',
- code: '(CW)',
- flag: '๐จ๐ผ',
- },
- {
- name: 'Cyprus',
- code: '(CY)',
- flag: '๐จ๐พ',
- },
- {
- name: 'Czech Republic',
- code: '(CZ)',
- flag: '๐จ๐ฟ',
- },
- ],
- },
- {
- title: 'D',
- items: [
- {
- name: 'Democratic Republic of the Congo',
- code: '(CD)',
- flag: '๐จ๐ฉ',
- },
- {
- name: 'Denmark',
- code: '(DK)',
- flag: '๐ฉ๐ฐ',
- },
- {
- name: 'Djibouti',
- code: '(DJ)',
- flag: '๐ฉ๐ฏ',
- },
- {
- name: 'Dominica',
- code: '(DM)',
- flag: '๐ฉ๐ฒ',
- },
- {
- name: 'Dominican Republic',
- code: '(DO)',
- flag: '๐ฉ๐ด',
- },
- ],
- },
- {
- title: 'E',
- items: [
- {
- name: 'Ecuador',
- code: '(EC)',
- flag: '๐ช๐จ',
- },
- {
- name: 'Egypt',
- code: '(EG)',
- flag: '๐ช๐ฌ',
- },
- {
- name: 'El Salvador',
- code: '(SV)',
- flag: '๐ธ๐ป',
- },
- {
- name: 'Equatorial Guinea',
- code: '(GQ)',
- flag: '๐ฌ๐ถ',
- },
- {
- name: 'Eritrea',
- code: '(ER)',
- flag: '๐ช๐ท',
- },
- {
- name: 'Estonia',
- code: '(EE)',
- flag: '๐ช๐ช',
- },
- {
- name: 'Eswatini',
- code: '(SZ)',
- flag: '๐ธ๐ฟ',
- },
- {
- name: 'Ethiopia',
- code: '(ET)',
- flag: '๐ช๐น',
- },
- ],
- },
- {
- title: 'F',
- items: [
- {
- name: 'Falkland Islands (Malvinas)',
- code: '(FK)',
- flag: '๐ซ๐ฐ',
- },
- {
- name: 'Faroe Islands',
- code: '(FO)',
- flag: '๐ซ๐ด',
- },
- {
- name: 'Fiji',
- code: '(FJ)',
- flag: '๐ซ๐ฏ',
- },
- {
- name: 'Finland',
- code: '(FI)',
- flag: '๐ซ๐ฎ',
- },
- {
- name: 'France',
- code: '(FR)',
- flag: '๐ซ๐ท',
- },
- {
- name: 'French Guiana',
- code: '(GF)',
- flag: '๐ฌ๐ซ',
- },
- {
- name: 'French Polynesia',
- code: '(PF)',
- flag: '๐ต๐ซ',
- },
- {
- name: 'French Southern Territories',
- code: '(TF)',
- flag: '๐น๐ซ',
- },
- ],
- },
- {
- title: 'G',
- items: [
- {
- name: 'Gabon',
- code: '(GA)',
- flag: '๐ฌ๐ฆ',
- },
- {
- name: 'Georgia',
- code: '(GE)',
- flag: '๐ฌ๐ช',
- },
- {
- name: 'Germany',
- code: '(DE)',
- flag: '๐ฉ๐ช',
- },
- {
- name: 'Ghana',
- code: '(GH)',
- flag: '๐ฌ๐ญ',
- },
- {
- name: 'Gibraltar',
- code: '(GI)',
- flag: '๐ฌ๐ฎ',
- },
- {
- name: 'Greece',
- code: '(GR)',
- flag: '๐ฌ๐ท',
- },
- {
- name: 'Greenland',
- code: '(GL)',
- flag: '๐ฌ๐ฑ',
- },
- {
- name: 'Grenada',
- code: '(GD)',
- flag: '๐ฌ๐ฉ',
- },
- {
- name: 'Guadeloupe',
- code: '(GP)',
- flag: '๐ฌ๐ต',
- },
- {
- name: 'Guam',
- code: '(GU)',
- flag: '๐ฌ๐บ',
- },
- {
- name: 'Guatemala',
- code: '(GT)',
- flag: '๐ฌ๐น',
- },
- {
- name: 'Guernsey',
- code: '(GG)',
- flag: '๐ฌ๐ฌ',
- },
- {
- name: 'Guinea',
- code: '(GN)',
- flag: '๐ฌ๐ณ',
- },
- {
- name: 'Guinea-Bissau',
- code: '(GW)',
- flag: '๐ฌ๐ผ',
- },
- {
- name: 'Guyana',
- code: '(GY)',
- flag: '๐ฌ๐พ',
- },
- ],
- },
- {
- title: 'H',
- items: [
- {
- name: 'Haiti',
- code: '(HT)',
- flag: '๐ญ๐น',
- },
- {
- name: 'Heard Island and McDonald Islands',
- code: '(HM)',
- flag: '๐ญ๐ฒ',
- },
- {
- name: 'Holy See (Vatican City State)',
- code: '(VA)',
- flag: '๐ป๐ฆ',
- },
- {
- name: 'Honduras',
- code: '(HN)',
- flag: '๐ญ๐ณ',
- },
- {
- name: 'Hong Kong',
- code: '(HK)',
- flag: '๐ญ๐ฐ',
- },
- {
- name: 'Hungary',
- code: '(HU)',
- flag: '๐ญ๐บ',
- },
- ],
- },
- {
- title: 'I',
- items: [
- {
- name: 'Iceland',
- code: '(IS)',
- flag: '๐ฎ๐ธ',
- },
- {
- name: 'India',
- code: '(IN)',
- flag: '๐ฎ๐ณ',
- },
- {
- name: 'Indonesia',
- code: '(ID)',
- flag: '๐ฎ๐ฉ',
- },
- {
- name: 'Iraq',
- code: '(IQ)',
- flag: '๐ฎ๐ถ',
- },
- {
- name: 'Ireland',
- code: '(IE)',
- flag: '๐ฎ๐ช',
- },
- {
- name: 'Islamic Republic of Iran',
- code: '(IR)',
- flag: '๐ฎ๐ท',
- },
- {
- name: 'Isle of Man',
- code: '(IM)',
- flag: '๐ฎ๐ฒ',
- },
- {
- name: 'Israel',
- code: '(IL)',
- flag: '๐ฎ๐ฑ',
- },
- {
- name: 'Italy',
- code: '(IT)',
- flag: '๐ฎ๐น',
- },
- ],
- },
- {
- title: 'J',
- items: [
- {
- name: 'Jamaica',
- code: '(JM)',
- flag: '๐ฏ๐ฒ',
- },
- {
- name: 'Japan',
- code: '(JP)',
- flag: '๐ฏ๐ต',
- },
- {
- name: 'Jersey',
- code: '(JE)',
- flag: '๐ฏ๐ช',
- },
- {
- name: 'Jordan',
- code: '(JO)',
- flag: '๐ฏ๐ด',
- },
- ],
- },
- {
- title: 'K',
- items: [
- {
- name: 'Kazakhstan',
- code: '(KZ)',
- flag: '๐ฐ๐ฟ',
- },
- {
- name: 'Kenya',
- code: '(KE)',
- flag: '๐ฐ๐ช',
- },
- {
- name: 'Kiribati',
- code: '(KI)',
- flag: '๐ฐ๐ฎ',
- },
- {
- name: 'Kosovo',
- code: '(XK)',
- flag: '๐ฝ๐ฐ',
- },
- {
- name: 'Kuwait',
- code: '(KW)',
- flag: '๐ฐ๐ผ',
- },
- {
- name: 'Kyrgyzstan',
- code: '(KG)',
- flag: '๐ฐ๐ฌ',
- },
- ],
- },
- {
- title: 'L',
- items: [
- {
- name: "Lao People's Democratic Republic",
- code: '(LA)',
- flag: '๐ฑ๐ฆ',
- },
- {
- name: 'Latvia',
- code: '(LV)',
- flag: '๐ฑ๐ป',
- },
- {
- name: 'Lebanon',
- code: '(LB)',
- flag: '๐ฑ๐ง',
- },
- {
- name: 'Lesotho',
- code: '(LS)',
- flag: '๐ฑ๐ธ',
- },
- {
- name: 'Liberia',
- code: '(LR)',
- flag: '๐ฑ๐ท',
- },
- {
- name: 'Libya',
- code: '(LY)',
- flag: '๐ฑ๐พ',
- },
- {
- name: 'Liechtenstein',
- code: '(LI)',
- flag: '๐ฑ๐ฎ',
- },
- {
- name: 'Lithuania',
- code: '(LT)',
- flag: '๐ฑ๐น',
- },
- {
- name: 'Luxembourg',
- code: '(LU)',
- flag: '๐ฑ๐บ',
- },
- ],
- },
- {
- title: 'M',
- items: [
- {
- name: 'Macao',
- code: '(MO)',
- flag: '๐ฒ๐ด',
- },
- {
- name: 'Madagascar',
- code: '(MG)',
- flag: '๐ฒ๐ฌ',
- },
- {
- name: 'Malawi',
- code: '(MW)',
- flag: '๐ฒ๐ผ',
- },
- {
- name: 'Malaysia',
- code: '(MY)',
- flag: '๐ฒ๐พ',
- },
- {
- name: 'Maldives',
- code: '(MV)',
- flag: '๐ฒ๐ป',
- },
- {
- name: 'Mali',
- code: '(ML)',
- flag: '๐ฒ๐ฑ',
- },
- {
- name: 'Malta',
- code: '(MT)',
- flag: '๐ฒ๐น',
- },
- {
- name: 'Marshall Islands',
- code: '(MH)',
- flag: '๐ฒ๐ญ',
- },
- {
- name: 'Martinique',
- code: '(MQ)',
- flag: '๐ฒ๐ถ',
- },
- {
- name: 'Mauritania',
- code: '(MR)',
- flag: '๐ฒ๐ท',
- },
- {
- name: 'Mauritius',
- code: '(MU)',
- flag: '๐ฒ๐บ',
- },
- {
- name: 'Mayotte',
- code: '(YT)',
- flag: '๐พ๐น',
- },
- {
- name: 'Mexico',
- code: '(MX)',
- flag: '๐ฒ๐ฝ',
- },
- {
- name: 'Micronesia, Federated States of',
- code: '(FM)',
- flag: '๐ซ๐ฒ',
- },
- {
- name: 'Moldova, Republic of',
- code: '(MD)',
- flag: '๐ฒ๐ฉ',
- },
- {
- name: 'Monaco',
- code: '(MC)',
- flag: '๐ฒ๐จ',
- },
- {
- name: 'Mongolia',
- code: '(MN)',
- flag: '๐ฒ๐ณ',
- },
- {
- name: 'Montenegro',
- code: '(ME)',
- flag: '๐ฒ๐ช',
- },
- {
- name: 'Montserrat',
- code: '(MS)',
- flag: '๐ฒ๐ธ',
- },
- {
- name: 'Morocco',
- code: '(MA)',
- flag: '๐ฒ๐ฆ',
- },
- {
- name: 'Mozambique',
- code: '(MZ)',
- flag: '๐ฒ๐ฟ',
- },
- {
- name: 'Myanmar',
- code: '(MM)',
- flag: '๐ฒ๐ฒ',
- },
- ],
- },
- {
- title: 'N',
- items: [
- {
- name: 'Namibia',
- code: '(NA)',
- flag: '๐ณ๐ฆ',
- },
- {
- name: 'Nauru',
- code: '(NR)',
- flag: '๐ณ๐ท',
- },
- {
- name: 'Nepal',
- code: '(NP)',
- flag: '๐ณ๐ต',
- },
- {
- name: 'Netherlands',
- code: '(NL)',
- flag: '๐ณ๐ฑ',
- },
- {
- name: 'New Caledonia',
- code: '(NC)',
- flag: '๐ณ๐จ',
- },
- {
- name: 'New Zealand',
- code: '(NZ)',
- flag: '๐ณ๐ฟ',
- },
- {
- name: 'Nicaragua',
- code: '(NI)',
- flag: '๐ณ๐ฎ',
- },
- {
- name: 'Niger',
- code: '(NE)',
- flag: '๐ณ๐ช',
- },
- {
- name: 'Nigeria',
- code: '(NG)',
- flag: '๐ณ๐ฌ',
- },
- {
- name: 'Niue',
- code: '(NU)',
- flag: '๐ณ๐บ',
- },
- {
- name: 'Norfolk Island',
- code: '(NF)',
- flag: '๐ณ๐ซ',
- },
- {
- name: 'North Korea',
- code: '(KP)',
- flag: '๐ฐ๐ต',
- },
- {
- name: 'Northern Mariana Islands',
- code: '(MP)',
- flag: '๐ฒ๐ต',
- },
- {
- name: 'Norway',
- code: '(NO)',
- flag: '๐ณ๐ด',
- },
- ],
- },
- {
- title: 'O',
- items: [
- {
- name: 'Oman',
- code: '(OM)',
- flag: '๐ด๐ฒ',
- },
- ],
- },
- {
- title: 'P',
- items: [
- {
- name: 'Pakistan',
- code: '(PK)',
- flag: '๐ต๐ฐ',
- },
- {
- name: 'Palau',
- code: '(PW)',
- flag: '๐ต๐ผ',
- },
- {
- name: 'Panama',
- code: '(PA)',
- flag: '๐ต๐ฆ',
- },
- {
- name: 'Papua New Guinea',
- code: '(PG)',
- flag: '๐ต๐ฌ',
- },
- {
- name: 'Paraguay',
- code: '(PY)',
- flag: '๐ต๐พ',
- },
- {
- name: "People's Republic of China",
- code: '(CN)',
- flag: '๐จ๐ณ',
- },
- {
- name: 'Peru',
- code: '(PE)',
- flag: '๐ต๐ช',
- },
- {
- name: 'Philippines',
- code: '(PH)',
- flag: '๐ต๐ญ',
- },
- {
- name: 'Pitcairn',
- code: '(PN)',
- flag: '๐ต๐ณ',
- },
- {
- name: 'Poland',
- code: '(PL)',
- flag: '๐ต๐ฑ',
- },
- {
- name: 'Portugal',
- code: '(PT)',
- flag: '๐ต๐น',
- },
- {
- name: 'Puerto Rico',
- code: '(PR)',
- flag: '๐ต๐ท',
- },
- ],
- },
- {
- title: 'Q',
- items: [
- {
- name: 'Qatar',
- code: '(QA)',
- flag: '๐ถ๐ฆ',
- },
- ],
- },
- {
- title: 'R',
- items: [
- {
- name: 'Republic of the Congo',
- code: '(CG)',
- flag: '๐จ๐ฌ',
- },
- {
- name: 'Republic of The Gambia',
- code: '(GM)',
- flag: '๐ฌ๐ฒ',
- },
- {
- name: 'Reunion',
- code: '(RE)',
- flag: '๐ท๐ช',
- },
- {
- name: 'Romania',
- code: '(RO)',
- flag: '๐ท๐ด',
- },
- {
- name: 'Russian Federation',
- code: '(RU)',
- flag: '๐ท๐บ',
- },
- {
- name: 'Rwanda',
- code: '(RW)',
- flag: '๐ท๐ผ',
- },
- ],
- },
- {
- title: 'S',
- items: [
- {
- name: 'Saint Barthรฉlemy',
- code: '(BL)',
- flag: '๐ง๐ฑ',
- },
- {
- name: 'Saint Helena',
- code: '(SH)',
- flag: '๐ธ๐ญ',
- },
- {
- name: 'Saint Kitts and Nevis',
- code: '(KN)',
- flag: '๐ฐ๐ณ',
- },
- {
- name: 'Saint Lucia',
- code: '(LC)',
- flag: '๐ฑ๐จ',
- },
- {
- name: 'Saint Martin (French part)',
- code: '(MF)',
- flag: '๐ฒ๐ซ',
- },
- {
- name: 'Saint Pierre and Miquelon',
- code: '(PM)',
- flag: '๐ต๐ฒ',
- },
- {
- name: 'Saint Vincent and the Grenadines',
- code: '(VC)',
- flag: '๐ป๐จ',
- },
- {
- name: 'Samoa',
- code: '(WS)',
- flag: '๐ผ๐ธ',
- },
- {
- name: 'San Marino',
- code: '(SM)',
- flag: '๐ธ๐ฒ',
- },
- {
- name: 'Sao Tome and Principe',
- code: '(ST)',
- flag: '๐ธ๐น',
- },
- {
- name: 'Saudi Arabia',
- code: '(SA)',
- flag: '๐ธ๐ฆ',
- },
- {
- name: 'Senegal',
- code: '(SN)',
- flag: '๐ธ๐ณ',
- },
- {
- name: 'Serbia',
- code: '(RS)',
- flag: '๐ท๐ธ',
- },
- {
- name: 'Seychelles',
- code: '(SC)',
- flag: '๐ธ๐จ',
- },
- {
- name: 'Sierra Leone',
- code: '(SL)',
- flag: '๐ธ๐ฑ',
- },
- {
- name: 'Singapore',
- code: '(SG)',
- flag: '๐ธ๐ฌ',
- },
- {
- name: 'Sint Maarten (Dutch part)',
- code: '(SX)',
- flag: '๐ธ๐ฝ',
- },
- {
- name: 'Slovakia',
- code: '(SK)',
- flag: '๐ธ๐ฐ',
- },
- {
- name: 'Slovenia',
- code: '(SI)',
- flag: '๐ธ๐ฎ',
- },
- {
- name: 'Solomon Islands',
- code: '(SB)',
- flag: '๐ธ๐ง',
- },
- {
- name: 'Somalia',
- code: '(SO)',
- flag: '๐ธ๐ด',
- },
- {
- name: 'South Africa',
- code: '(ZA)',
- flag: '๐ฟ๐ฆ',
- },
- {
- name: 'South Georgia and the South Sandwich Islands',
- code: '(GS)',
- flag: '๐ฌ๐ธ',
- },
- {
- name: 'South Korea',
- code: '(KR)',
- flag: '๐ฐ๐ท',
- },
- {
- name: 'South Sudan',
- code: '(SS)',
- flag: '๐ธ๐ธ',
- },
- {
- name: 'Spain',
- code: '(ES)',
- flag: '๐ช๐ธ',
- },
- {
- name: 'Sri Lanka',
- code: '(LK)',
- flag: '๐ฑ๐ฐ',
- },
- {
- name: 'State of Palestine',
- code: '(PS)',
- flag: '๐ต๐ธ',
- },
- {
- name: 'Sudan',
- code: '(SD)',
- flag: '๐ธ๐ฉ',
- },
- {
- name: 'Suriname',
- code: '(SR)',
- flag: '๐ธ๐ท',
- },
- {
- name: 'Svalbard and Jan Mayen',
- code: '(SJ)',
- flag: '๐ธ๐ฏ',
- },
- {
- name: 'Sweden',
- code: '(SE)',
- flag: '๐ธ๐ช',
- },
- {
- name: 'Switzerland',
- code: '(CH)',
- flag: '๐จ๐ญ',
- },
- {
- name: 'Syrian Arab Republic',
- code: '(SY)',
- flag: '๐ธ๐พ',
- },
- ],
- },
- {
- title: 'T',
- items: [
- {
- name: 'Taiwan, Province of China',
- code: '(TW)',
- flag: '๐น๐ผ',
- },
- {
- name: 'Tajikistan',
- code: '(TJ)',
- flag: '๐น๐ฏ',
- },
- {
- name: 'Thailand',
- code: '(TH)',
- flag: '๐น๐ญ',
- },
- {
- name: 'The Republic of North Macedonia',
- code: '(MK)',
- flag: '๐ฒ๐ฐ',
- },
- {
- name: 'Timor-Leste',
- code: '(TL)',
- flag: '๐น๐ฑ',
- },
- {
- name: 'Togo',
- code: '(TG)',
- flag: '๐น๐ฌ',
- },
- {
- name: 'Tokelau',
- code: '(TK)',
- flag: '๐น๐ฐ',
- },
- {
- name: 'Tonga',
- code: '(TO)',
- flag: '๐น๐ด',
- },
- {
- name: 'Trinidad and Tobago',
- code: '(TT)',
- flag: '๐น๐น',
- },
- {
- name: 'Tunisia',
- code: '(TN)',
- flag: '๐น๐ณ',
- },
- {
- name: 'Tรผrkiye',
- code: '(TR)',
- flag: '๐น๐ท',
- },
- {
- name: 'Turkmenistan',
- code: '(TM)',
- flag: '๐น๐ฒ',
- },
- {
- name: 'Turks and Caicos Islands',
- code: '(TC)',
- flag: '๐น๐จ',
- },
- {
- name: 'Tuvalu',
- code: '(TV)',
- flag: '๐น๐ป',
- },
- ],
- },
- {
- title: 'U',
- items: [
- {
- name: 'Uganda',
- code: '(UG)',
- flag: '๐บ๐ฌ',
- },
- {
- name: 'Ukraine',
- code: '(UA)',
- flag: '๐บ๐ฆ',
- },
- {
- name: 'United Arab Emirates',
- code: '(AE)',
- flag: '๐ฆ๐ช',
- },
- {
- name: 'United Kingdom',
- code: '(GB)',
- flag: '๐ฌ๐ง',
- },
- {
- name: 'United Republic of Tanzania',
- code: '(TZ)',
- flag: '๐น๐ฟ',
- },
- {
- name: 'United States Minor Outlying Islands',
- code: '(UM)',
- flag: '๐บ๐ฒ',
- },
- {
- name: 'United States of America',
- code: '(US)',
- flag: '๐บ๐ธ',
- },
- {
- name: 'Uruguay',
- code: '(UY)',
- flag: '๐บ๐พ',
- },
- {
- name: 'Uzbekistan',
- code: '(UZ)',
- flag: '๐บ๐ฟ',
- },
- ],
- },
- {
- title: 'V',
- items: [
- {
- name: 'Vanuatu',
- code: '(VU)',
- flag: '๐ป๐บ',
- },
- {
- name: 'Venezuela',
- code: '(VE)',
- flag: '๐ป๐ช',
- },
- {
- name: 'Vietnam',
- code: '(VN)',
- flag: '๐ป๐ณ',
- },
- {
- name: 'Virgin Islands, British',
- code: '(VG)',
- flag: '๐ป๐ฌ',
- },
- {
- name: 'Virgin Islands, U.S.',
- code: '(VI)',
- flag: '๐ป๐ฎ',
- },
- ],
- },
- {
- title: 'W',
- items: [
- {
- name: 'Wallis and Futuna',
- code: '(WF)',
- flag: '๐ผ๐ซ',
- },
- {
- name: 'Western Sahara',
- code: '(EH)',
- flag: '๐ช๐ญ',
- },
- ],
- },
- {
- title: 'Y',
- items: [
- {
- name: 'Yemen',
- code: '(YE)',
- flag: '๐พ๐ช',
- },
- ],
- },
- {
- title: 'Z',
- items: [
- {
- name: 'Zambia',
- code: '(ZM)',
- flag: '๐ฟ๐ฒ',
- },
- {
- name: 'Zimbabwe',
- code: '(ZW)',
- flag: '๐ฟ๐ผ',
- },
- ],
- },
+ components: Array = [
+ { name: 'Button', iconText: 'p' },
+ { name: 'Image', iconText: 'q' },
+ { name: 'Label', iconText: 't' },
+ { name: 'Switch', iconText: 'z' },
+ { name: 'Slider', iconText: 'v' },
+ { name: 'TextField', iconText: 'x' },
+ { name: 'TextView', iconText: 'w' },
+ { name: 'DatePicker', iconText: 'A' },
+ { name: 'Chart', iconText: 'B' },
+ { name: 'ListView', iconText: 'u' },
+ { name: 'Accelerometer', iconText: 'E' },
+ { name: 'Location', iconText: 'D' },
+ { name: 'Camera', iconText: String.fromCharCode(parseInt('e034', 16)) },
+ { name: 'ImagePicker', iconText: 'q' },
];
- private _originalCountries: CountryListType;
selectItemTemplate(item: any, index: number, items: Array) {
- return 'main'; // index == items.length - 1 ? 'last' : 'not-last';
+ return index == items.length - 1 ? 'last' : 'not-last';
}
componentsItemTap(args): void {
@@ -1386,44 +29,4 @@ export class ListPageModel extends Observable {
okButtonText: DialogStrings.OK,
});
}
-
- itemLoading(args: EventData): void {
- (args.object as View).backgroundColor = 'transparent';
- }
-
- onSearchTextChange(evt: SearchEventData): void {
- if (!this._originalCountries) {
- this._originalCountries = this.countries;
- }
- const searchText = evt.text.toLowerCase();
- console.log('Search text:', searchText);
- if (searchText) {
- this.countries = this.filterCountryGroups(this._originalCountries, searchText);
- } else {
- this.countries = this._originalCountries; // reset to original if no search text
- }
- this.notifyPropertyChange('countries', this.countries);
- }
-
- /**
- * Filter a grouped array of countries by search query.
- * @param {Array<{ title: string; items: { name: string; code: string; flag: string; }[] }>} groups
- * @param {string} query
- * @returns Filtered groups with the same shape, omitting any with no matches.
- */
- filterCountryGroups(groups: CountryListType, query: string): CountryListType {
- const q = query.trim().toLowerCase();
- if (!q) return groups; // no query โ all groups
-
- return (
- groups
- .map((group) => {
- // keep only items whose name includes the query
- const items = group.items.filter((item) => item.name.toLowerCase().includes(q));
- return { ...group, items };
- })
- // drop any group that ended up with 0 items
- .filter((group) => group.items.length > 0)
- );
- }
}
diff --git a/apps/toolbox/src/pages/list-page-sticky.ts b/apps/toolbox/src/pages/list-page-sticky.ts
new file mode 100644
index 000000000..37a7bdbc0
--- /dev/null
+++ b/apps/toolbox/src/pages/list-page-sticky.ts
@@ -0,0 +1,7 @@
+import { EventData, Page } from '@nativescript/core';
+import { ListPageModelSticky } from './list-page-model-sticky';
+
+export function navigatingTo(args: EventData) {
+ const page = args.object;
+ page.bindingContext = new ListPageModelSticky();
+}
diff --git a/apps/toolbox/src/pages/list-page-sticky.xml b/apps/toolbox/src/pages/list-page-sticky.xml
new file mode 100644
index 000000000..451b2276e
--- /dev/null
+++ b/apps/toolbox/src/pages/list-page-sticky.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/toolbox/src/pages/list-page.xml b/apps/toolbox/src/pages/list-page.xml
index a2436883a..d46ecd4be 100644
--- a/apps/toolbox/src/pages/list-page.xml
+++ b/apps/toolbox/src/pages/list-page.xml
@@ -1,21 +1,18 @@
-
+
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
\ No newline at end of file