@duyanhdev/mvp-ifs-ui-kit 21.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/.editorconfig +16 -0
  2. package/.gitmodules +3 -0
  3. package/.postcssrc.json +5 -0
  4. package/.prettierignore +14 -0
  5. package/.prettierrc.json +29 -0
  6. package/LICENSE.md +21 -0
  7. package/README.md +59 -0
  8. package/angular.json +98 -0
  9. package/eslint.config.js +89 -0
  10. package/package.json +59 -0
  11. package/public/demo/images/flag/flag_placeholder.png +0 -0
  12. package/public/demo/images/footer-image.gif +0 -0
  13. package/public/demo/images/galleria/galleria1.jpg +0 -0
  14. package/public/demo/images/galleria/galleria10.jpg +0 -0
  15. package/public/demo/images/galleria/galleria10s.jpg +0 -0
  16. package/public/demo/images/galleria/galleria11.jpg +0 -0
  17. package/public/demo/images/galleria/galleria11s.jpg +0 -0
  18. package/public/demo/images/galleria/galleria12.jpg +0 -0
  19. package/public/demo/images/galleria/galleria12s.jpg +0 -0
  20. package/public/demo/images/galleria/galleria13.jpg +0 -0
  21. package/public/demo/images/galleria/galleria13s.jpg +0 -0
  22. package/public/demo/images/galleria/galleria14.jpg +0 -0
  23. package/public/demo/images/galleria/galleria14s.jpg +0 -0
  24. package/public/demo/images/galleria/galleria15.jpg +0 -0
  25. package/public/demo/images/galleria/galleria15s.jpg +0 -0
  26. package/public/demo/images/galleria/galleria1s.jpg +0 -0
  27. package/public/demo/images/galleria/galleria2.jpg +0 -0
  28. package/public/demo/images/galleria/galleria2s.jpg +0 -0
  29. package/public/demo/images/galleria/galleria3.jpg +0 -0
  30. package/public/demo/images/galleria/galleria3s.jpg +0 -0
  31. package/public/demo/images/galleria/galleria4.jpg +0 -0
  32. package/public/demo/images/galleria/galleria4s.jpg +0 -0
  33. package/public/demo/images/galleria/galleria5.jpg +0 -0
  34. package/public/demo/images/galleria/galleria5s.jpg +0 -0
  35. package/public/demo/images/galleria/galleria6.jpg +0 -0
  36. package/public/demo/images/galleria/galleria6s.jpg +0 -0
  37. package/public/demo/images/galleria/galleria7.jpg +0 -0
  38. package/public/demo/images/galleria/galleria7s.jpg +0 -0
  39. package/public/demo/images/galleria/galleria8.jpg +0 -0
  40. package/public/demo/images/galleria/galleria8s.jpg +0 -0
  41. package/public/demo/images/galleria/galleria9.jpg +0 -0
  42. package/public/demo/images/galleria/galleria9s.jpg +0 -0
  43. package/public/demo/images/product/bamboo-watch.jpg +0 -0
  44. package/public/demo/images/product/black-watch.jpg +0 -0
  45. package/public/demo/images/product/blue-band.jpg +0 -0
  46. package/public/demo/images/product/blue-t-shirt.jpg +0 -0
  47. package/public/demo/images/product/bracelet.jpg +0 -0
  48. package/public/demo/images/product/brown-purse.jpg +0 -0
  49. package/public/demo/images/product/chakra-bracelet.jpg +0 -0
  50. package/public/demo/images/product/galaxy-earrings.jpg +0 -0
  51. package/public/demo/images/product/game-controller.jpg +0 -0
  52. package/public/demo/images/product/gaming-set.jpg +0 -0
  53. package/public/demo/images/product/gold-phone-case.jpg +0 -0
  54. package/public/demo/images/product/green-earbuds.jpg +0 -0
  55. package/public/demo/images/product/green-t-shirt.jpg +0 -0
  56. package/public/demo/images/product/grey-t-shirt.jpg +0 -0
  57. package/public/demo/images/product/headphones.jpg +0 -0
  58. package/public/demo/images/product/light-green-t-shirt.jpg +0 -0
  59. package/public/demo/images/product/lime-band.jpg +0 -0
  60. package/public/demo/images/product/mini-speakers.jpg +0 -0
  61. package/public/demo/images/product/painted-phone-case.jpg +0 -0
  62. package/public/demo/images/product/pink-band.jpg +0 -0
  63. package/public/demo/images/product/pink-purse.jpg +0 -0
  64. package/public/demo/images/product/product-placeholder.svg +10 -0
  65. package/public/demo/images/product/purple-band.jpg +0 -0
  66. package/public/demo/images/product/purple-gemstone-necklace.jpg +0 -0
  67. package/public/demo/images/product/purple-t-shirt.jpg +0 -0
  68. package/public/demo/images/product/shoes.jpg +0 -0
  69. package/public/demo/images/product/sneakers.jpg +0 -0
  70. package/public/demo/images/product/teal-t-shirt.jpg +0 -0
  71. package/public/demo/images/product/yellow-earbuds.jpg +0 -0
  72. package/public/demo/images/product/yoga-mat.jpg +0 -0
  73. package/public/demo/images/product/yoga-set.jpg +0 -0
  74. package/src/app/layout/component/configurator/app.configurator.html +48 -0
  75. package/src/app/layout/component/configurator/app.configurator.ts +396 -0
  76. package/src/app/layout/component/floatingconfigurator/app.floatingconfigurator.ts +31 -0
  77. package/src/app/layout/component/footer/app.footer.scss +52 -0
  78. package/src/app/layout/component/footer/app.footer.ts +26 -0
  79. package/src/app/layout/component/layout/app.layout.ts +50 -0
  80. package/src/app/layout/component/menu/app.menu.html +7 -0
  81. package/src/app/layout/component/menu/app.menu.scss +13 -0
  82. package/src/app/layout/component/menu/app.menu.ts +90 -0
  83. package/src/app/layout/component/menuitem/app.menuitem.html +56 -0
  84. package/src/app/layout/component/menuitem/app.menuitem.scss +218 -0
  85. package/src/app/layout/component/menuitem/app.menuitem.ts +126 -0
  86. package/src/app/layout/component/sidebar/app.sidebar.html +3 -0
  87. package/src/app/layout/component/sidebar/app.sidebar.scss +0 -0
  88. package/src/app/layout/component/sidebar/app.sidebar.ts +106 -0
  89. package/src/app/layout/component/topbar/app.topbar.html +190 -0
  90. package/src/app/layout/component/topbar/app.topbar.scss +8 -0
  91. package/src/app/layout/component/topbar/app.topbar.ts +68 -0
  92. package/src/app/layout/service/layout.service.ts +117 -0
  93. package/src/app/pages/auth/access.ts +32 -0
  94. package/src/app/pages/auth/auth.routes.ts +10 -0
  95. package/src/app/pages/auth/error.ts +32 -0
  96. package/src/app/pages/auth/login.ts +71 -0
  97. package/src/app/pages/crud/crud.ts +387 -0
  98. package/src/app/pages/dashboard/dashboard.css +778 -0
  99. package/src/app/pages/dashboard/dashboard.html +191 -0
  100. package/src/app/pages/dashboard/dashboard.ts +348 -0
  101. package/src/app/pages/documentation/documentation.ts +73 -0
  102. package/src/app/pages/empty/empty.ts +11 -0
  103. package/src/app/pages/landing/components/featureswidget.ts +139 -0
  104. package/src/app/pages/landing/components/footerwidget.ts +73 -0
  105. package/src/app/pages/landing/components/herowidget.ts +25 -0
  106. package/src/app/pages/landing/components/highlightswidget.ts +46 -0
  107. package/src/app/pages/landing/components/pricingwidget.ts +119 -0
  108. package/src/app/pages/landing/components/topbarwidget.component.ts +68 -0
  109. package/src/app/pages/landing/landing.ts +31 -0
  110. package/src/app/pages/notfound/notfound.ts +68 -0
  111. package/src/app/pages/pages.routes.ts +17 -0
  112. package/src/app/pages/profile/profile.html +57 -0
  113. package/src/app/pages/profile/profile.scss +145 -0
  114. package/src/app/pages/profile/profile.ts +19 -0
  115. package/src/app/pages/service/country.service.ts +255 -0
  116. package/src/app/pages/service/customer.service.ts +9057 -0
  117. package/src/app/pages/service/icon.service.ts +23 -0
  118. package/src/app/pages/service/node.service.ts +816 -0
  119. package/src/app/pages/service/photo.service.ts +103 -0
  120. package/src/app/pages/service/product.service.ts +1322 -0
  121. package/src/app/pages/tickets/tickets-create/tickets-create.html +140 -0
  122. package/src/app/pages/tickets/tickets-create/tickets-create.scss +617 -0
  123. package/src/app/pages/tickets/tickets-create/tickets-create.ts +104 -0
  124. package/src/app/pages/tickets/tickets-list/ticket-list.html +150 -0
  125. package/src/app/pages/tickets/tickets-list/ticket-list.scss +392 -0
  126. package/src/app/pages/tickets/tickets-list/ticket-list.ts +178 -0
  127. package/src/app/pages/uikit/buttondemo.ts +254 -0
  128. package/src/app/pages/uikit/chartdemo.ts +290 -0
  129. package/src/app/pages/uikit/filedemo.ts +52 -0
  130. package/src/app/pages/uikit/formlayoutdemo.ts +129 -0
  131. package/src/app/pages/uikit/inputdemo.ts +339 -0
  132. package/src/app/pages/uikit/listdemo.ts +217 -0
  133. package/src/app/pages/uikit/mediademo.ts +1021 -0
  134. package/src/app/pages/uikit/menudemo.ts +540 -0
  135. package/src/app/pages/uikit/messagesdemo.ts +101 -0
  136. package/src/app/pages/uikit/miscdemo.ts +192 -0
  137. package/src/app/pages/uikit/overlaydemo.ts +235 -0
  138. package/src/app/pages/uikit/panelsdemo.ts +235 -0
  139. package/src/app/pages/uikit/tabledemo.ts +568 -0
  140. package/src/app/pages/uikit/timelinedemo.ts +141 -0
  141. package/src/app/pages/uikit/treedemo.ts +75 -0
  142. package/src/app/pages/uikit/uikit.routes.ts +35 -0
  143. package/src/app.component.ts +22 -0
  144. package/src/app.config.ts +23 -0
  145. package/src/app.routes.ts +23 -0
  146. package/src/assets/demo/code.scss +17 -0
  147. package/src/assets/demo/demo.scss +2 -0
  148. package/src/assets/demo/flags/flags.css +984 -0
  149. package/src/assets/layout/_core.scss +24 -0
  150. package/src/assets/layout/_footer.scss +8 -0
  151. package/src/assets/layout/_main.scss +21 -0
  152. package/src/assets/layout/_menu.scss +159 -0
  153. package/src/assets/layout/_mixins.scss +15 -0
  154. package/src/assets/layout/_preloading.scss +47 -0
  155. package/src/assets/layout/_responsive.scss +111 -0
  156. package/src/assets/layout/_topbar.scss +201 -0
  157. package/src/assets/layout/_typography.scss +68 -0
  158. package/src/assets/layout/_utils.scss +25 -0
  159. package/src/assets/layout/layout.scss +13 -0
  160. package/src/assets/layout/variables/_common.scss +21 -0
  161. package/src/assets/layout/variables/_dark.scss +5 -0
  162. package/src/assets/layout/variables/_light.scss +5 -0
  163. package/src/assets/styles.scss +4 -0
  164. package/src/assets/tailwind.css +32 -0
  165. package/src/index.html +15 -0
  166. package/src/main.ts +5 -0
  167. package/tsconfig.app.json +15 -0
  168. package/tsconfig.json +33 -0
  169. package/tsconfig.spec.json +15 -0
  170. package/vercel.json +9 -0
@@ -0,0 +1,17 @@
1
+ import { Routes } from '@angular/router';
2
+ import { Documentation } from './documentation/documentation';
3
+ import { Crud } from './crud/crud';
4
+ import { Empty } from './empty/empty';
5
+ import { TicketListComponent } from './tickets/tickets-list/ticket-list';
6
+ import { TicketCreateComponent } from './tickets/tickets-create/tickets-create';
7
+
8
+ export default [
9
+ { path: 'documentation', component: Documentation },
10
+ { path: 'crud', component: Crud },
11
+ { path: 'empty', component: Empty },
12
+
13
+ { path: 'ticket-list', component: TicketListComponent },
14
+
15
+ { path: 'ticket-create', component: TicketCreateComponent },
16
+ { path: '**', redirectTo: '/notfound' }
17
+ ] as Routes;
@@ -0,0 +1,57 @@
1
+ <div class="profile-wrapper">
2
+ <p-card styleClass="profile-card">
3
+ <div class="flex items-center gap-2">
4
+ <img
5
+ src="data:image/jpeg;base64,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"
6
+ alt="avatar"
7
+ class="w-14 h-14 rounded-full object-cover ring-2 ring-indigo-100 shadow-md"
8
+ />
9
+ <div class="profile-identity mt-2">
10
+ <h2 class="profile-name">Đặng Trịnh Duy Anh</h2>
11
+ <div class="profile-roles">
12
+ <p-tag value="Quản lý" icon="pi pi-briefcase" styleClass="role-tag" />
13
+ <p-tag value="Nhân viên mua hàng" icon="pi pi-shopping-cart" severity="secondary" styleClass="role-tag" />
14
+ </div>
15
+ </div>
16
+ </div>
17
+
18
+ <p-divider />
19
+
20
+ <div class="info-grid">
21
+ <div class="info-item">
22
+ <span class="info-label"> <i class="pi pi-user"></i> Họ và tên </span>
23
+ <span class="info-value">Đặng Trịnh Duy Anh</span>
24
+ </div>
25
+
26
+ <div class="info-item">
27
+ <span class="info-label"> <i class="pi pi-id-card"></i> Chức vụ </span>
28
+ <span class="info-value">Quản lý</span>
29
+ </div>
30
+
31
+ <div class="info-item">
32
+ <span class="info-label"> <i class="pi pi-phone"></i> Số điện thoại </span>
33
+ <span class="info-value">0373 081 693</span>
34
+ </div>
35
+
36
+ <div class="info-item">
37
+ <span class="info-label"> <i class="pi pi-building"></i> Bộ phận </span>
38
+ <span class="info-value">Mua hàng</span>
39
+ </div>
40
+
41
+ <div class="info-item">
42
+ <span class="info-label"> <i class="pi pi-map-marker"></i> Địa chỉ </span>
43
+ <span class="info-value">Hà Nội, Việt Nam</span>
44
+ </div>
45
+ <div class="info-item">
46
+ <span class="info-label"> <i class="pi pi-id-card"></i> Chức vụ </span>
47
+ <span class="info-value">Quản lý</span>
48
+ </div>
49
+ </div>
50
+
51
+ <ng-template pTemplate="footer">
52
+ <div class="profile-actions float-right">
53
+ <p-button label="Chỉnh sửa" icon="pi pi-pencil" styleClass="p-button-outlined" />
54
+ </div>
55
+ </ng-template>
56
+ </p-card>
57
+ </div>
@@ -0,0 +1,145 @@
1
+ // profile.component.scss
2
+ // Requires PrimeNG + PrimeFlex
3
+
4
+ .profile-wrapper {
5
+ max-width: 860px;
6
+ margin: 2rem auto;
7
+ padding: 0 1rem;
8
+ }
9
+
10
+ // ── Card shell ──────────────────────────────────────────────
11
+ ::ng-deep .profile-card {
12
+ border-radius: 16px !important;
13
+ overflow: hidden;
14
+ border: 1px solid #cccccc;
15
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06) !important;
16
+
17
+ .p-card-body {
18
+ padding: 0 !important;
19
+ }
20
+
21
+ .p-card-content {
22
+ padding: 1.25rem 1.5rem !important;
23
+ }
24
+
25
+ .p-card-footer {
26
+ padding: 0 1.5rem 1.5rem !important;
27
+ }
28
+ }
29
+
30
+ // ── Cover banner ────────────────────────────────────────────
31
+ .profile-cover {
32
+ position: relative;
33
+ height: 120px;
34
+ margin-bottom: 48px;
35
+
36
+ .cover-bg {
37
+ height: 100%;
38
+ background: linear-gradient(135deg, #3b82f6 0%, #6366f1 100%);
39
+ }
40
+
41
+ .avatar-wrapper {
42
+ position: absolute;
43
+ bottom: -40px;
44
+ left: 1.5rem;
45
+ display: flex;
46
+ align-items: flex-end;
47
+ gap: 8px;
48
+ }
49
+
50
+ .avatar-badge {
51
+ margin-bottom: 4px;
52
+ }
53
+ }
54
+
55
+ // ── Avatar ───────────────────────────────────────────────────
56
+ ::ng-deep .profile-avatar {
57
+ width: 80px !important;
58
+ height: 80px !important;
59
+ font-size: 1.5rem !important;
60
+ font-weight: 600 !important;
61
+ background: #6366f1 !important;
62
+ color: #fff !important;
63
+ border: 3px solid var(--surface-card) !important;
64
+ box-shadow: 0 2px 12px rgba(99, 102, 241, 0.35) !important;
65
+ }
66
+
67
+ // ── Identity block ───────────────────────────────────────────
68
+ .profile-identity {
69
+ margin-bottom: 1rem;
70
+ }
71
+
72
+ .profile-name {
73
+ font-size: 1.25rem;
74
+ font-weight: 700;
75
+ color: var(--text-color);
76
+ margin: 0 0 0.5rem;
77
+ letter-spacing: -0.01em;
78
+ }
79
+
80
+ .profile-roles {
81
+ display: flex;
82
+ flex-wrap: wrap;
83
+ gap: 0.4rem;
84
+ }
85
+
86
+ ::ng-deep .role-tag {
87
+ font-size: 0.75rem !important;
88
+ padding: 3px 10px !important;
89
+ border-radius: 999px !important;
90
+ }
91
+
92
+ // ── Info grid ────────────────────────────────────────────────
93
+ .info-grid {
94
+ display: grid;
95
+ grid-template-columns: 1fr 1fr;
96
+ gap: 0.875rem;
97
+ }
98
+
99
+ .info-item {
100
+ background: var(--surface-ground);
101
+ border-radius: 10px;
102
+ padding: 0.75rem 1rem;
103
+ display: flex;
104
+ flex-direction: column;
105
+ gap: 4px;
106
+
107
+ &--full {
108
+ grid-column: 1 / -1;
109
+ }
110
+ }
111
+
112
+ .info-label {
113
+ font-size: 0.7rem;
114
+ text-transform: uppercase;
115
+ letter-spacing: 0.07em;
116
+ color: var(--text-color-secondary);
117
+ display: flex;
118
+ align-items: center;
119
+ gap: 5px;
120
+
121
+ i {
122
+ font-size: 0.7rem;
123
+ color: #6366f1;
124
+ }
125
+ }
126
+
127
+ .info-value {
128
+ font-size: 0.9rem;
129
+ font-weight: 600;
130
+ color: var(--text-color);
131
+ }
132
+
133
+ // ── Footer actions ───────────────────────────────────────────
134
+ .profile-actions {
135
+ display: flex;
136
+ gap: 0.625rem;
137
+ flex-wrap: wrap;
138
+
139
+ .p-button {
140
+ flex: 1;
141
+ justify-content: center;
142
+ min-width: 100px;
143
+ font-size: 0.85rem;
144
+ }
145
+ }
@@ -0,0 +1,19 @@
1
+ // profile.component.ts
2
+ import { Component } from '@angular/core';
3
+ import { CommonModule } from '@angular/common';
4
+
5
+ // PrimeNG Modules
6
+ import { CardModule } from 'primeng/card';
7
+ import { AvatarModule } from 'primeng/avatar';
8
+ import { TagModule } from 'primeng/tag';
9
+ import { ButtonModule } from 'primeng/button';
10
+ import { DividerModule } from 'primeng/divider';
11
+
12
+ @Component({
13
+ selector: 'app-profile',
14
+ standalone: true,
15
+ imports: [CommonModule, CardModule, AvatarModule, TagModule, ButtonModule, DividerModule],
16
+ templateUrl: './profile.html',
17
+ styleUrls: ['./profile.scss']
18
+ })
19
+ export class ProfileComponent {}
@@ -0,0 +1,255 @@
1
+ import { Injectable } from '@angular/core';
2
+
3
+ @Injectable()
4
+ export class CountryService {
5
+ getData() {
6
+ return [
7
+ { name: 'Afghanistan', code: 'AF' },
8
+ { name: 'Albania', code: 'AL' },
9
+ { name: 'Algeria', code: 'DZ' },
10
+ { name: 'American Samoa', code: 'AS' },
11
+ { name: 'Andorra', code: 'AD' },
12
+ { name: 'Angola', code: 'AO' },
13
+ { name: 'Anguilla', code: 'AI' },
14
+ { name: 'Antarctica', code: 'AQ' },
15
+ { name: 'Antigua and Barbuda', code: 'AG' },
16
+ { name: 'Argentina', code: 'AR' },
17
+ { name: 'Armenia', code: 'AM' },
18
+ { name: 'Aruba', code: 'AW' },
19
+ { name: 'Australia', code: 'AU' },
20
+ { name: 'Austria', code: 'AT' },
21
+ { name: 'Azerbaijan', code: 'AZ' },
22
+ { name: 'Bahamas', code: 'BS' },
23
+ { name: 'Bahrain', code: 'BH' },
24
+ { name: 'Bangladesh', code: 'BD' },
25
+ { name: 'Barbados', code: 'BB' },
26
+ { name: 'Belarus', code: 'BY' },
27
+ { name: 'Belgium', code: 'BE' },
28
+ { name: 'Belize', code: 'BZ' },
29
+ { name: 'Benin', code: 'BJ' },
30
+ { name: 'Bermuda', code: 'BM' },
31
+ { name: 'Bhutan', code: 'BT' },
32
+ { name: 'Bolivia', code: 'BO' },
33
+ { name: 'Bosnia and Herzegovina', code: 'BA' },
34
+ { name: 'Botswana', code: 'BW' },
35
+ { name: 'Bouvet Island', code: 'BV' },
36
+ { name: 'Brazil', code: 'BR' },
37
+ { name: 'British Indian Ocean Territory', code: 'IO' },
38
+ { name: 'Brunei Darussalam', code: 'BN' },
39
+ { name: 'Bulgaria', code: 'BG' },
40
+ { name: 'Burkina Faso', code: 'BF' },
41
+ { name: 'Burundi', code: 'BI' },
42
+ { name: 'Cambodia', code: 'KH' },
43
+ { name: 'Cameroon', code: 'CM' },
44
+ { name: 'Canada', code: 'CA' },
45
+ { name: 'Cape Verde', code: 'CV' },
46
+ { name: 'Cayman Islands', code: 'KY' },
47
+ { name: 'Central African Republic', code: 'CF' },
48
+ { name: 'Chad', code: 'TD' },
49
+ { name: 'Chile', code: 'CL' },
50
+ { name: 'China', code: 'CN' },
51
+ { name: 'Christmas Island', code: 'CX' },
52
+ { name: 'Cocos (Keeling) Islands', code: 'CC' },
53
+ { name: 'Colombia', code: 'CO' },
54
+ { name: 'Comoros', code: 'KM' },
55
+ { name: 'Congo', code: 'CG' },
56
+ { name: 'Congo, The Democratic Republic of the', code: 'CD' },
57
+ { name: 'Cook Islands', code: 'CK' },
58
+ { name: 'Costa Rica', code: 'CR' },
59
+ { name: 'Cote D"Ivoire', code: 'CI' },
60
+ { name: 'Croatia', code: 'HR' },
61
+ { name: 'Cuba', code: 'CU' },
62
+ { name: 'Cyprus', code: 'CY' },
63
+ { name: 'Czech Republic', code: 'CZ' },
64
+ { name: 'Denmark', code: 'DK' },
65
+ { name: 'Djibouti', code: 'DJ' },
66
+ { name: 'Dominica', code: 'DM' },
67
+ { name: 'Dominican Republic', code: 'DO' },
68
+ { name: 'Ecuador', code: 'EC' },
69
+ { name: 'Egypt', code: 'EG' },
70
+ { name: 'El Salvador', code: 'SV' },
71
+ { name: 'Equatorial Guinea', code: 'GQ' },
72
+ { name: 'Eritrea', code: 'ER' },
73
+ { name: 'Estonia', code: 'EE' },
74
+ { name: 'Ethiopia', code: 'ET' },
75
+ { name: 'Falkland Islands (Malvinas)', code: 'FK' },
76
+ { name: 'Faroe Islands', code: 'FO' },
77
+ { name: 'Fiji', code: 'FJ' },
78
+ { name: 'Finland', code: 'FI' },
79
+ { name: 'France', code: 'FR' },
80
+ { name: 'French Guiana', code: 'GF' },
81
+ { name: 'French Polynesia', code: 'PF' },
82
+ { name: 'French Southern Territories', code: 'TF' },
83
+ { name: 'Gabon', code: 'GA' },
84
+ { name: 'Gambia', code: 'GM' },
85
+ { name: 'Georgia', code: 'GE' },
86
+ { name: 'Germany', code: 'DE' },
87
+ { name: 'Ghana', code: 'GH' },
88
+ { name: 'Gibraltar', code: 'GI' },
89
+ { name: 'Greece', code: 'GR' },
90
+ { name: 'Greenland', code: 'GL' },
91
+ { name: 'Grenada', code: 'GD' },
92
+ { name: 'Guadeloupe', code: 'GP' },
93
+ { name: 'Guam', code: 'GU' },
94
+ { name: 'Guatemala', code: 'GT' },
95
+ { name: 'Guernsey', code: 'GG' },
96
+ { name: 'Guinea', code: 'GN' },
97
+ { name: 'Guinea-Bissau', code: 'GW' },
98
+ { name: 'Guyana', code: 'GY' },
99
+ { name: 'Haiti', code: 'HT' },
100
+ { name: 'Heard Island and Mcdonald Islands', code: 'HM' },
101
+ { name: 'Holy See (Vatican City State)', code: 'VA' },
102
+ { name: 'Honduras', code: 'HN' },
103
+ { name: 'Hong Kong', code: 'HK' },
104
+ { name: 'Hungary', code: 'HU' },
105
+ { name: 'Iceland', code: 'IS' },
106
+ { name: 'India', code: 'IN' },
107
+ { name: 'Indonesia', code: 'ID' },
108
+ { name: 'Iran, Islamic Republic Of', code: 'IR' },
109
+ { name: 'Iraq', code: 'IQ' },
110
+ { name: 'Ireland', code: 'IE' },
111
+ { name: 'Isle of Man', code: 'IM' },
112
+ { name: 'Israel', code: 'IL' },
113
+ { name: 'Italy', code: 'IT' },
114
+ { name: 'Jamaica', code: 'JM' },
115
+ { name: 'Japan', code: 'JP' },
116
+ { name: 'Jersey', code: 'JE' },
117
+ { name: 'Jordan', code: 'JO' },
118
+ { name: 'Kazakhstan', code: 'KZ' },
119
+ { name: 'Kenya', code: 'KE' },
120
+ { name: 'Kiribati', code: 'KI' },
121
+ { name: 'Korea, Democratic People"S Republic of', code: 'KP' },
122
+ { name: 'Korea, Republic of', code: 'KR' },
123
+ { name: 'Kuwait', code: 'KW' },
124
+ { name: 'Kyrgyzstan', code: 'KG' },
125
+ { name: 'Lao People"S Democratic Republic', code: 'LA' },
126
+ { name: 'Latvia', code: 'LV' },
127
+ { name: 'Lebanon', code: 'LB' },
128
+ { name: 'Lesotho', code: 'LS' },
129
+ { name: 'Liberia', code: 'LR' },
130
+ { name: 'Libyan Arab Jamahiriya', code: 'LY' },
131
+ { name: 'Liechtenstein', code: 'LI' },
132
+ { name: 'Lithuania', code: 'LT' },
133
+ { name: 'Luxembourg', code: 'LU' },
134
+ { name: 'Macao', code: 'MO' },
135
+ { name: 'Macedonia, The Former Yugoslav Republic of', code: 'MK' },
136
+ { name: 'Madagascar', code: 'MG' },
137
+ { name: 'Malawi', code: 'MW' },
138
+ { name: 'Malaysia', code: 'MY' },
139
+ { name: 'Maldives', code: 'MV' },
140
+ { name: 'Mali', code: 'ML' },
141
+ { name: 'Malta', code: 'MT' },
142
+ { name: 'Marshall Islands', code: 'MH' },
143
+ { name: 'Martinique', code: 'MQ' },
144
+ { name: 'Mauritania', code: 'MR' },
145
+ { name: 'Mauritius', code: 'MU' },
146
+ { name: 'Mayotte', code: 'YT' },
147
+ { name: 'Mexico', code: 'MX' },
148
+ { name: 'Micronesia, Federated States of', code: 'FM' },
149
+ { name: 'Moldova, Republic of', code: 'MD' },
150
+ { name: 'Monaco', code: 'MC' },
151
+ { name: 'Mongolia', code: 'MN' },
152
+ { name: 'Montserrat', code: 'MS' },
153
+ { name: 'Morocco', code: 'MA' },
154
+ { name: 'Mozambique', code: 'MZ' },
155
+ { name: 'Myanmar', code: 'MM' },
156
+ { name: 'Namibia', code: 'NA' },
157
+ { name: 'Nauru', code: 'NR' },
158
+ { name: 'Nepal', code: 'NP' },
159
+ { name: 'Netherlands', code: 'NL' },
160
+ { name: 'Netherlands Antilles', code: 'AN' },
161
+ { name: 'New Caledonia', code: 'NC' },
162
+ { name: 'New Zealand', code: 'NZ' },
163
+ { name: 'Nicaragua', code: 'NI' },
164
+ { name: 'Niger', code: 'NE' },
165
+ { name: 'Nigeria', code: 'NG' },
166
+ { name: 'Niue', code: 'NU' },
167
+ { name: 'Norfolk Island', code: 'NF' },
168
+ { name: 'Northern Mariana Islands', code: 'MP' },
169
+ { name: 'Norway', code: 'NO' },
170
+ { name: 'Oman', code: 'OM' },
171
+ { name: 'Pakistan', code: 'PK' },
172
+ { name: 'Palau', code: 'PW' },
173
+ { name: 'Palestinian Territory, Occupied', code: 'PS' },
174
+ { name: 'Panama', code: 'PA' },
175
+ { name: 'Papua New Guinea', code: 'PG' },
176
+ { name: 'Paraguay', code: 'PY' },
177
+ { name: 'Peru', code: 'PE' },
178
+ { name: 'Philippines', code: 'PH' },
179
+ { name: 'Pitcairn', code: 'PN' },
180
+ { name: 'Poland', code: 'PL' },
181
+ { name: 'Portugal', code: 'PT' },
182
+ { name: 'Puerto Rico', code: 'PR' },
183
+ { name: 'Qatar', code: 'QA' },
184
+ { name: 'Reunion', code: 'RE' },
185
+ { name: 'Romania', code: 'RO' },
186
+ { name: 'Russian Federation', code: 'RU' },
187
+ { name: 'RWANDA', code: 'RW' },
188
+ { name: 'Saint Helena', code: 'SH' },
189
+ { name: 'Saint Kitts and Nevis', code: 'KN' },
190
+ { name: 'Saint Lucia', code: 'LC' },
191
+ { name: 'Saint Pierre and Miquelon', code: 'PM' },
192
+ { name: 'Saint Vincent and the Grenadines', code: 'VC' },
193
+ { name: 'Samoa', code: 'WS' },
194
+ { name: 'San Marino', code: 'SM' },
195
+ { name: 'Sao Tome and Principe', code: 'ST' },
196
+ { name: 'Saudi Arabia', code: 'SA' },
197
+ { name: 'Senegal', code: 'SN' },
198
+ { name: 'Serbia and Montenegro', code: 'CS' },
199
+ { name: 'Seychelles', code: 'SC' },
200
+ { name: 'Sierra Leone', code: 'SL' },
201
+ { name: 'Singapore', code: 'SG' },
202
+ { name: 'Slovakia', code: 'SK' },
203
+ { name: 'Slovenia', code: 'SI' },
204
+ { name: 'Solomon Islands', code: 'SB' },
205
+ { name: 'Somalia', code: 'SO' },
206
+ { name: 'South Africa', code: 'ZA' },
207
+ { name: 'South Georgia and the South Sandwich Islands', code: 'GS' },
208
+ { name: 'Spain', code: 'ES' },
209
+ { name: 'Sri Lanka', code: 'LK' },
210
+ { name: 'Sudan', code: 'SD' },
211
+ { name: 'Suriname', code: 'SR' },
212
+ { name: 'Svalbard and Jan Mayen', code: 'SJ' },
213
+ { name: 'Swaziland', code: 'SZ' },
214
+ { name: 'Sweden', code: 'SE' },
215
+ { name: 'Switzerland', code: 'CH' },
216
+ { name: 'Syrian Arab Republic', code: 'SY' },
217
+ { name: 'Taiwan, Province of China', code: 'TW' },
218
+ { name: 'Tajikistan', code: 'TJ' },
219
+ { name: 'Tanzania, United Republic of', code: 'TZ' },
220
+ { name: 'Thailand', code: 'TH' },
221
+ { name: 'Timor-Leste', code: 'TL' },
222
+ { name: 'Togo', code: 'TG' },
223
+ { name: 'Tokelau', code: 'TK' },
224
+ { name: 'Tonga', code: 'TO' },
225
+ { name: 'Trinidad and Tobago', code: 'TT' },
226
+ { name: 'Tunisia', code: 'TN' },
227
+ { name: 'Turkey', code: 'TR' },
228
+ { name: 'Turkmenistan', code: 'TM' },
229
+ { name: 'Turks and Caicos Islands', code: 'TC' },
230
+ { name: 'Tuvalu', code: 'TV' },
231
+ { name: 'Uganda', code: 'UG' },
232
+ { name: 'Ukraine', code: 'UA' },
233
+ { name: 'United Arab Emirates', code: 'AE' },
234
+ { name: 'United Kingdom', code: 'GB' },
235
+ { name: 'United States', code: 'US' },
236
+ { name: 'United States Minor Outlying Islands', code: 'UM' },
237
+ { name: 'Uruguay', code: 'UY' },
238
+ { name: 'Uzbekistan', code: 'UZ' },
239
+ { name: 'Vanuatu', code: 'VU' },
240
+ { name: 'Venezuela', code: 'VE' },
241
+ { name: 'Viet Nam', code: 'VN' },
242
+ { name: 'Virgin Islands, British', code: 'VG' },
243
+ { name: 'Virgin Islands, U.S.', code: 'VI' },
244
+ { name: 'Wallis and Futuna', code: 'WF' },
245
+ { name: 'Western Sahara', code: 'EH' },
246
+ { name: 'Yemen', code: 'YE' },
247
+ { name: 'Zambia', code: 'ZM' },
248
+ { name: 'Zimbabwe', code: 'ZW' }
249
+ ];
250
+ }
251
+
252
+ getCountries() {
253
+ return Promise.resolve(this.getData());
254
+ }
255
+ }