diff --git a/components/MultipleCountryFlags.vue b/components/MultipleCountryFlags.vue
new file mode 100644
index 0000000..b683bc7
--- /dev/null
+++ b/components/MultipleCountryFlags.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+ {{ fallbackText }}
+
+
+ 🏳️
+
+
+
+ {{ countryNames }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/admin/members/index.vue b/pages/admin/members/index.vue
index 4956347..ae78e4d 100644
--- a/pages/admin/members/index.vue
+++ b/pages/admin/members/index.vue
@@ -190,14 +190,12 @@
-
- {{ getCountryName(item.nationality) || 'Not specified' }}
@@ -320,16 +318,13 @@
-
-
- {{ getCountryName(member.nationality) || 'No nationality' }}
-
diff --git a/pages/board/members/index.vue b/pages/board/members/index.vue
index 23ca4e0..b4baaf8 100644
--- a/pages/board/members/index.vue
+++ b/pages/board/members/index.vue
@@ -178,6 +178,16 @@
{{ item.email }}
+
+
+
+
+
@@ -395,12 +410,35 @@ const stats = ref({
const statusOptions = ['Active', 'Inactive'];
const duesOptions = ['Paid', 'Pending', 'Overdue'];
const memberTypeOptions = ['Regular', 'Premium', 'Honorary', 'Board', 'Admin'];
-const nationalities = ['United States', 'Monaco', 'France', 'Italy', 'United Kingdom', 'Germany', 'Other'];
+// Country options with codes for multiple selection
+const nationalityOptions = [
+ { title: 'United States', value: 'US' },
+ { title: 'Monaco', value: 'MC' },
+ { title: 'France', value: 'FR' },
+ { title: 'Italy', value: 'IT' },
+ { title: 'United Kingdom', value: 'GB' },
+ { title: 'Germany', value: 'DE' },
+ { title: 'Spain', value: 'ES' },
+ { title: 'Sweden', value: 'SE' },
+ { title: 'Norway', value: 'NO' },
+ { title: 'Denmark', value: 'DK' },
+ { title: 'Canada', value: 'CA' },
+ { title: 'Australia', value: 'AU' },
+ { title: 'Japan', value: 'JP' },
+ { title: 'China', value: 'CN' },
+ { title: 'India', value: 'IN' },
+ { title: 'Brazil', value: 'BR' },
+ { title: 'Mexico', value: 'MX' },
+ { title: 'Russia', value: 'RU' },
+ { title: 'South Africa', value: 'ZA' },
+ { title: 'Other', value: 'XX' }
+];
// Table headers
const headers = [
{ title: 'Member', key: 'name', sortable: true },
{ title: 'Email', key: 'email', sortable: true },
+ { title: 'Nationality', key: 'nationality', sortable: true },
{ title: 'Status', key: 'status', sortable: true },
{ title: 'Dues', key: 'duesStatus', sortable: true },
{ title: 'Type', key: 'memberType', sortable: true },
@@ -418,7 +456,7 @@ const newMember = ref({
lastName: '',
email: '',
phone: '',
- nationality: '',
+ nationality: [] as string[], // Array for multiple nationalities
memberType: 'Regular',
joinDate: new Date().toISOString().split('T')[0]
});
@@ -511,7 +549,14 @@ const deleteMember = (member: any) => {
};
const addMember = () => {
- console.log('Adding new member:', newMember.value);
+ // Convert nationality array to comma-separated string for storage
+ const memberData = {
+ ...newMember.value,
+ nationality: Array.isArray(newMember.value.nationality)
+ ? newMember.value.nationality.join(',')
+ : newMember.value.nationality
+ };
+ console.log('Adding new member:', memberData);
showAddMemberDialog.value = false;
// Reset form
newMember.value = {
@@ -519,7 +564,7 @@ const addMember = () => {
lastName: '',
email: '',
phone: '',
- nationality: '',
+ nationality: [],
memberType: 'Regular',
joinDate: new Date().toISOString().split('T')[0]
};