@dcrackel/hematournamentui 1.0.75 → 1.0.77
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.
- package/dist/HemaTouranmentUI-lib.es.js +5444 -5155
- package/dist/HemaTouranmentUI-lib.umd.js +28 -28
- package/package.json +1 -1
- package/src/index.js +2 -1
- package/src/mocks/eventPersonGetInitialPoolAssignments.js +377 -0
- package/src/mocks/eventPersonGetPoolAssignmentEvent.js +20 -0
- package/src/mocks/eventpersonGetEventById.js +44 -0
- package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.vue +1 -1
- package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.vue +31 -26
- package/src/stories/Organisms/Cards/TournamentCard/TournamentCard.stories.js +74 -23
- package/src/stories/Organisms/Containers/Pool/Pool.vue +32 -16
- package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.stories.js +69 -0
- package/src/stories/Organisms/{Containers/PoolSummary/PoolSummary.vue → Headers/AttendanceSummary/AttendanceSummary.vue} +2 -16
- package/src/stories/Organisms/{Containers → Headers}/PoolSummary/PoolSummary.stories.js +1 -1
- package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.vue +54 -0
- package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.stories.js +1 -1
- package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.vue +4 -4
- package/src/stories/Templates/EventManagement/ListEvents/ListEvents.stories.js +1 -1
- package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.stories.js +31 -0
- package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.vue +75 -0
|
@@ -1,27 +1,28 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="p-4 bg-neutral rounded-lg shadow-md border border-dropdownSelect">
|
|
3
|
-
|
|
4
|
-
<div class="flex flex-row justify-between">
|
|
2
|
+
<div class="p-4 mr-4 mt-3 bg-neutral rounded-lg shadow-md border border-dropdownSelect min-w-[22rem]">
|
|
3
|
+
<div class="flex flex-row justify-between mb-2">
|
|
5
4
|
<h2 class="text-xl font-bold mb-2 flex">
|
|
6
5
|
<BaseText :text="`${poolName} - ${ringName}`" size="lg" color="primary" weight="bold" class="p-2"/>
|
|
7
6
|
</h2>
|
|
8
|
-
<div class="bg-eventBoxBlue w-40 h-
|
|
9
|
-
<BaseText text="STRENGTH" size="xs" color="quinary" weight="bold" class="pt-
|
|
10
|
-
<BaseText :text="
|
|
11
|
-
<BaseIcon icon-name="fa-circle-info" size="2xl" color="quinary" class="pt-
|
|
7
|
+
<div class="bg-eventBoxBlue w-40 h-9 rounded-lg my-1 flex flex-row justify-between border border-dropdownSelect">
|
|
8
|
+
<BaseText text="STRENGTH" size="xs" color="quinary" weight="bold" class="pt-2.5 pl-3"/>
|
|
9
|
+
<BaseText :text="poolInd" size="2xl" color="primaryHighlight" weight="bold" class="pt-0.5"/>
|
|
10
|
+
<BaseIcon icon-name="fa-circle-info" size="2xl" color="quinary" class="pt-0.5 pr-2"/>
|
|
12
11
|
</div>
|
|
13
12
|
</div>
|
|
14
13
|
|
|
15
|
-
<div class="text-md mb-4
|
|
16
|
-
<
|
|
17
|
-
<DropDownMenu :label="'label'" :items="[]" :selectedItem="{}" width="w-full" class="mt-1 pr-1" :alignEnd="false" @update:selectedItem="handleSelectedItem"/>
|
|
14
|
+
<div class="text-md mb-4 w-full">
|
|
15
|
+
<DropDownMenu :label="'Director'" :items="directors" :selectedItem="selectedDirector" width="w-full" dropDownWidth="w-full" class="" :alignEnd="false" @update:selectedItem="handleSelectedItem"/>
|
|
18
16
|
</div>
|
|
19
17
|
<div class="grid grid-cols-1 gap-4">
|
|
20
18
|
<PoolFencerCard v-for="(person, index) in pool" :key="person.id"
|
|
21
19
|
:position="index+1"
|
|
20
|
+
:poolPosition="person.PoolPosition"
|
|
22
21
|
:name="person.Person.FirstName + ' ' + person.Person.LastName"
|
|
23
22
|
:club="person.Person.Club.Name"
|
|
24
|
-
:
|
|
23
|
+
:seed="person.Seed"
|
|
24
|
+
:portrait="clubLogoURL(person)"
|
|
25
|
+
@swap-fencers="handleSwap"
|
|
25
26
|
/>
|
|
26
27
|
</div>
|
|
27
28
|
</div>
|
|
@@ -54,6 +55,10 @@ export default {
|
|
|
54
55
|
type: String,
|
|
55
56
|
required: true
|
|
56
57
|
},
|
|
58
|
+
poolInd: {
|
|
59
|
+
type: String,
|
|
60
|
+
required: true
|
|
61
|
+
},
|
|
57
62
|
pool: {
|
|
58
63
|
type: Array,
|
|
59
64
|
required: true
|
|
@@ -61,15 +66,26 @@ export default {
|
|
|
61
66
|
},
|
|
62
67
|
data() {
|
|
63
68
|
return {
|
|
64
|
-
|
|
69
|
+
selectedDirector: { text: this.directorName,link: this.directorName },
|
|
70
|
+
directors: [
|
|
71
|
+
{ text: 'Lucas Garcia', link: 'he-him' },
|
|
72
|
+
{ text: 'Mia Rodriguez', link: 'she-her' },
|
|
73
|
+
{ text: 'Isabella Hernandez', link: 'they-them' }
|
|
74
|
+
],
|
|
65
75
|
};
|
|
66
76
|
},
|
|
67
77
|
methods: {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
78
|
+
handleSwap({ droppedData, toPosition }) {
|
|
79
|
+
this.$emit('swap-fencers', {
|
|
80
|
+
draggedPerson: droppedData,
|
|
81
|
+
toPosition
|
|
82
|
+
});
|
|
72
83
|
},
|
|
84
|
+
clubLogoURL(person) {
|
|
85
|
+
const socialMediaLinks = person.Person.Club.SocialMedia || [];
|
|
86
|
+
const portrait = socialMediaLinks.find(link => link.Type === 'Web');
|
|
87
|
+
return portrait ? portrait.Link : '';
|
|
88
|
+
}
|
|
73
89
|
}
|
|
74
90
|
};
|
|
75
91
|
</script>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import AttendanceSummary from './AttendanceSummary.vue';
|
|
2
|
+
import eventPersonGetEventById from '../../../../mocks/eventpersonGetEventById.js';
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
title: 'Organisms/Headers/AttendanceSummary',
|
|
6
|
+
component: AttendanceSummary,
|
|
7
|
+
tags: ['autodocs'],
|
|
8
|
+
args: {
|
|
9
|
+
event: eventPersonGetEventById
|
|
10
|
+
},
|
|
11
|
+
argTypes: {
|
|
12
|
+
event: {
|
|
13
|
+
control: {type: 'object'},
|
|
14
|
+
description: 'Event details',
|
|
15
|
+
table: {
|
|
16
|
+
type: {summary: 'Object'},
|
|
17
|
+
defaultValue: {summary: '{}'}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const Default = {
|
|
24
|
+
args: {
|
|
25
|
+
event: {
|
|
26
|
+
EventName: 'Spring Tournament',
|
|
27
|
+
RuleSummary: 'Standard HEMA rules apply.',
|
|
28
|
+
Absent: 5,
|
|
29
|
+
Present: 45,
|
|
30
|
+
Removed: 3,
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export const NoAbsences = {
|
|
36
|
+
args: {
|
|
37
|
+
event: {
|
|
38
|
+
EventName: 'Autumn Championship',
|
|
39
|
+
RuleSummary: 'Modified HEMA rules.',
|
|
40
|
+
Absent: 0,
|
|
41
|
+
Present: 50,
|
|
42
|
+
Removed: 2,
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export const AllPresent = {
|
|
48
|
+
args: {
|
|
49
|
+
event: {
|
|
50
|
+
EventName: 'Winter Cup',
|
|
51
|
+
RuleSummary: 'No special rules.',
|
|
52
|
+
Absent: 0,
|
|
53
|
+
Present: 60,
|
|
54
|
+
Removed: 0,
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export const SomeRemoved = {
|
|
60
|
+
args: {
|
|
61
|
+
event: {
|
|
62
|
+
EventName: 'Summer Open',
|
|
63
|
+
RuleSummary: 'Advanced HEMA rules.',
|
|
64
|
+
Absent: 10,
|
|
65
|
+
Present: 40,
|
|
66
|
+
Removed: 5,
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
};
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="bg-poolSetup py-1 px-4 rounded-xl flex justify-between items-center">
|
|
2
|
+
<div class="bg-poolSetup py-1 px-4 rounded-xl flex justify-between items-center shadow border border-dropdownSelect">
|
|
3
3
|
<section class="flex flex-col pt-2">
|
|
4
4
|
<BaseText :text="event.EventName" size="lg" color="primary" weight="bold" />
|
|
5
5
|
<BaseText :text="event.RuleSummary" size="md" color="quinary" weight="normal" />
|
|
6
6
|
<span class="h-8"></span>
|
|
7
7
|
</section>
|
|
8
|
-
<section class="flex space-x-4">
|
|
9
|
-
<CounterBox :recommended="7" :count="poolSize" label="Pool Size" />
|
|
10
|
-
<CounterBox :recommended="2" :count="numberOfPools" label="Num Pools" />
|
|
11
|
-
<CounterBox :recommended="0" :count="numberOfFlights" label="Flights" />
|
|
12
|
-
</section>
|
|
13
8
|
<section class="flex flex-col">
|
|
14
9
|
<div class="flex justify-center items-center">
|
|
15
10
|
<BaseText text="Fencer Counts" size="sm" color="quinary" />
|
|
@@ -30,7 +25,7 @@ import CounterBox from "../../../Molecules/Boxes/CounterBox/CounterBox.vue";
|
|
|
30
25
|
import BaseText from "../../../Atoms/Text/BaseText.vue";
|
|
31
26
|
|
|
32
27
|
export default {
|
|
33
|
-
name: '
|
|
28
|
+
name: 'AttendanceSummary',
|
|
34
29
|
components: {BaseText, CounterBox, EventStatusBox },
|
|
35
30
|
props: {
|
|
36
31
|
event: {
|
|
@@ -55,15 +50,6 @@ export default {
|
|
|
55
50
|
},
|
|
56
51
|
},
|
|
57
52
|
computed: {
|
|
58
|
-
poolSize() {
|
|
59
|
-
return this.event.PoolSize || 0;
|
|
60
|
-
},
|
|
61
|
-
numberOfPools() {
|
|
62
|
-
return this.event.NumberOfPools || 0;
|
|
63
|
-
},
|
|
64
|
-
numberOfFlights() {
|
|
65
|
-
return this.event.NumberOfFlights || 0;
|
|
66
|
-
},
|
|
67
53
|
absent() {
|
|
68
54
|
return this.event.Absent || "0";
|
|
69
55
|
},
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="bg-poolSetup py-1 px-4 rounded-xl flex justify-between items-center shadow border border-dropdownSelect">
|
|
3
|
+
<section class="flex flex-col pt-2">
|
|
4
|
+
<BaseText :text="event.EventName" size="lg" color="primary" weight="bold" />
|
|
5
|
+
<BaseText :text="event.RuleSummary" size="md" color="quinary" weight="normal" />
|
|
6
|
+
<span class="h-8"></span>
|
|
7
|
+
</section>
|
|
8
|
+
<section class="flex space-x-4">
|
|
9
|
+
<CounterBox :recommended="7" :count="poolSize" label="Pool Size" />
|
|
10
|
+
<CounterBox :recommended="2" :count="numberOfRings" label="Num Rings" />
|
|
11
|
+
</section>
|
|
12
|
+
</div>
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<script>
|
|
16
|
+
import EventStatusBox from "../../../Molecules/Boxes/EventStatusBox/EventStatusBox.vue";
|
|
17
|
+
import CounterBox from "../../../Molecules/Boxes/CounterBox/CounterBox.vue";
|
|
18
|
+
import BaseText from "../../../Atoms/Text/BaseText.vue";
|
|
19
|
+
|
|
20
|
+
export default {
|
|
21
|
+
name: 'PoolSummary',
|
|
22
|
+
components: {BaseText, CounterBox, EventStatusBox },
|
|
23
|
+
props: {
|
|
24
|
+
event: {
|
|
25
|
+
type: Object,
|
|
26
|
+
required: true,
|
|
27
|
+
validator(event) {
|
|
28
|
+
const requiredFields = [
|
|
29
|
+
'EventName',
|
|
30
|
+
'RuleSummary',
|
|
31
|
+
'Absent',
|
|
32
|
+
'Present',
|
|
33
|
+
'Removed',
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
const missingFields = requiredFields.filter(field => !(field in event));
|
|
37
|
+
if (missingFields.length) {
|
|
38
|
+
console.warn(`Invalid event object: Missing fields: ${missingFields.join(', ')}`);
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
computed: {
|
|
46
|
+
poolSize() {
|
|
47
|
+
return this.event.PoolSize || 0;
|
|
48
|
+
},
|
|
49
|
+
numberOfRings() {
|
|
50
|
+
return this.event.NumberOfRings || 0;
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
</script>
|
|
@@ -5,7 +5,7 @@ import eventMock from '../../../../mocks/eventMock.js';
|
|
|
5
5
|
import clubsMock from '../../../../mocks/clubGetAllMock.js';
|
|
6
6
|
|
|
7
7
|
export default {
|
|
8
|
-
title: 'Templates/EventManagement/
|
|
8
|
+
title: 'Templates/EventManagement/EventAttendance',
|
|
9
9
|
component: EditEvents,
|
|
10
10
|
tags: ['autodocs'],
|
|
11
11
|
args: {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<section>
|
|
3
3
|
<EditEventsTopMenu :currentTab="'Checkin'" :tabs="tabs"/>
|
|
4
|
-
<
|
|
4
|
+
<AttendanceSummary :event="event"/>
|
|
5
5
|
|
|
6
6
|
<div class="w-full flex flex-row justify-center mt-3">
|
|
7
7
|
<section class="w-full">
|
|
8
8
|
<div class="w-full flex flex-col justify-center items-center" style="text-align: center">
|
|
9
|
-
<section class="grid grid-cols-2 w-full mb-3">
|
|
9
|
+
<section class="grid grid-cols-2 w-full mb-3 py-2">
|
|
10
10
|
<div class="col-start-1 col-end-2 flex justify-start">
|
|
11
11
|
<FindOrAddPerson
|
|
12
12
|
:persons="personsAll"
|
|
@@ -50,15 +50,15 @@ import EventCard from "../../../Organisms/Cards/EventCard/EventCard.vue";
|
|
|
50
50
|
import emptyDesertIcon from '../../../../assets/empty_desert_icon.png';
|
|
51
51
|
import FencerCard from "../../../Organisms/Cards/FencerCard/FencerCard.vue";
|
|
52
52
|
import EditEventsTopMenu from "../../Menus/EditEventsTopMenu/EditEventsTopMenu.vue";
|
|
53
|
-
import PoolSummary from "../../../Organisms/Containers/PoolSummary/PoolSummary.vue";
|
|
54
53
|
import DropDownMenu from "../../../Organisms/ComplexInputs/DropDown/DropDownMenu.vue";
|
|
55
54
|
import FindOrAddPerson from "../../../Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.vue";
|
|
55
|
+
import AttendanceSummary from "../../../Organisms/Headers/AttendanceSummary/AttendanceSummary.vue";
|
|
56
56
|
|
|
57
57
|
export default {
|
|
58
58
|
components: {
|
|
59
|
+
AttendanceSummary,
|
|
59
60
|
FindOrAddPerson,
|
|
60
61
|
DropDownMenu,
|
|
61
|
-
PoolSummary,
|
|
62
62
|
EditEventsTopMenu,
|
|
63
63
|
FencerCard,
|
|
64
64
|
EventCard,
|
|
@@ -2,7 +2,7 @@ import EditEvents from './ListEvents.vue';
|
|
|
2
2
|
import eventMockData from '../../../../mocks/eventMock.js';
|
|
3
3
|
|
|
4
4
|
export default {
|
|
5
|
-
title: 'Templates/EventManagement/
|
|
5
|
+
title: 'Templates/EventManagement/ListEvents',
|
|
6
6
|
component: EditEvents,
|
|
7
7
|
tags: ['autodocs'],
|
|
8
8
|
args: {
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import EditEvents from './PoolManagement.vue';
|
|
2
|
+
import eventPersonGetInitialPoolAssignments from '../../../../mocks/eventPersonGetInitialPoolAssignments.js';
|
|
3
|
+
import eventPersonGetPoolAssignmentEvent from '../../../../mocks/eventPersonGetPoolAssignmentEvent.js';
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
title: 'Templates/EventManagement/PoolManagement',
|
|
7
|
+
component: EditEvents,
|
|
8
|
+
tags: ['autodocs'],
|
|
9
|
+
args: {
|
|
10
|
+
event: eventPersonGetPoolAssignmentEvent,
|
|
11
|
+
poolAssignments: eventPersonGetInitialPoolAssignments
|
|
12
|
+
},
|
|
13
|
+
argTypes: {
|
|
14
|
+
event: {
|
|
15
|
+
control: {type: 'object'},
|
|
16
|
+
description: 'Event details',
|
|
17
|
+
table: {
|
|
18
|
+
type: {summary: 'Object'},
|
|
19
|
+
defaultValue: {summary: '{}'}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const Default = {
|
|
26
|
+
args: {
|
|
27
|
+
event: eventPersonGetPoolAssignmentEvent,
|
|
28
|
+
poolAssignments: eventPersonGetInitialPoolAssignments
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<section>
|
|
3
|
+
<EditEventsTopMenu :currentTab="'Pools'" :tabs="tabs"/>
|
|
4
|
+
<PoolSummary :event="event"/>
|
|
5
|
+
|
|
6
|
+
<div class="w-full flex flex-row flex-wrap justify-start mt-3">
|
|
7
|
+
<div v-for="pool in poolAssignments" :key="pool.Name" >
|
|
8
|
+
<Pool
|
|
9
|
+
:poolName="pool.Name"
|
|
10
|
+
:ringName="pool.RingName"
|
|
11
|
+
:poolInd="pool.poolStrengthInd"
|
|
12
|
+
:directorName="pool.Person.DisplayName"
|
|
13
|
+
:pool="pool.participants"
|
|
14
|
+
@swap-fencers="swapFencers"
|
|
15
|
+
/>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
</div>
|
|
19
|
+
</section>
|
|
20
|
+
</template>
|
|
21
|
+
|
|
22
|
+
<script>
|
|
23
|
+
import EditTournamentMenu from "../../Menus/EditTournamentMenu/EditTournamentMenu.vue";
|
|
24
|
+
import BaseText from "../../../Atoms/Text/BaseText.vue";
|
|
25
|
+
import BaseButton from "../../../Molecules/Buttons/BaseButton/BaseButton.vue";
|
|
26
|
+
import EventCard from "../../../Organisms/Cards/EventCard/EventCard.vue";
|
|
27
|
+
import emptyDesertIcon from '../../../../assets/empty_desert_icon.png';
|
|
28
|
+
import FencerCard from "../../../Organisms/Cards/FencerCard/FencerCard.vue";
|
|
29
|
+
import EditEventsTopMenu from "../../Menus/EditEventsTopMenu/EditEventsTopMenu.vue";
|
|
30
|
+
import DropDownMenu from "../../../Organisms/ComplexInputs/DropDown/DropDownMenu.vue";
|
|
31
|
+
import FindOrAddPerson from "../../../Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.vue";
|
|
32
|
+
import AttendanceSummary from "../../../Organisms/Headers/AttendanceSummary/AttendanceSummary.vue";
|
|
33
|
+
import PoolSummary from "../../../Organisms/Headers/PoolSummary/PoolSummary.vue";
|
|
34
|
+
import Pool from "../../../Organisms/Containers/Pool/Pool.vue";
|
|
35
|
+
|
|
36
|
+
export default {
|
|
37
|
+
components: {
|
|
38
|
+
Pool,
|
|
39
|
+
PoolSummary,
|
|
40
|
+
AttendanceSummary,
|
|
41
|
+
FindOrAddPerson,
|
|
42
|
+
DropDownMenu,
|
|
43
|
+
EditEventsTopMenu,
|
|
44
|
+
FencerCard,
|
|
45
|
+
EventCard,
|
|
46
|
+
EditTournamentMenu,
|
|
47
|
+
BaseText,
|
|
48
|
+
BaseButton,
|
|
49
|
+
},
|
|
50
|
+
props: {
|
|
51
|
+
event: Object,
|
|
52
|
+
poolAssignments: Object
|
|
53
|
+
},
|
|
54
|
+
data() {
|
|
55
|
+
return {
|
|
56
|
+
emptyDesertIcon,
|
|
57
|
+
tabs: [
|
|
58
|
+
{id: 'Staff', label: 'Staff', color: 'primaryHighlight'},
|
|
59
|
+
{id: 'Checkin', label: 'Seeding & Checkin', color: 'primaryHighlight'},
|
|
60
|
+
{id: 'Pools', label: 'Pools', color: 'primaryHighlight'},
|
|
61
|
+
{id: 'Pool Results', label: 'Pool Results', color: 'primaryHighlight'},
|
|
62
|
+
{id: 'Bracket', label: 'Bracket', color: 'primaryHighlight'},
|
|
63
|
+
{id: 'Final', label: 'Final Results', color: 'primaryHighlight'}
|
|
64
|
+
]
|
|
65
|
+
};
|
|
66
|
+
},
|
|
67
|
+
computed: {},
|
|
68
|
+
methods: {
|
|
69
|
+
swapFencers({ draggedPerson }) {
|
|
70
|
+
console.log('swapFencers', draggedPerson);
|
|
71
|
+
this.$emit('swap-fencers', {draggedPerson});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
</script>
|