@dcrackel/hematournamentui 1.0.39 → 1.0.41
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/{.eslintrc.js → .eslintrc.ts} +3 -4
- package/dist/HemaTouranmentUI-lib.es.js +6852 -6544
- package/dist/HemaTouranmentUI-lib.umd.js +27 -27
- package/dist/style.css +1 -1
- package/package.json +63 -58
- package/src/index.js +6 -6
- package/src/mocks/locationMock.js +44 -0
- package/src/mocks/personsMock.js +46 -0
- package/src/mocks/tournamentMock.js +98 -24
- package/src/stories/Atoms/Icon/BaseIcon.stories.js +26 -1
- package/src/stories/Atoms/Icon/BaseIcon.vue +9 -1
- package/src/stories/Atoms/Input/BaseInput.vue +1 -1
- package/src/stories/Molecules/Buttons/BaseButton/BaseButton.stories.js +7 -1
- package/src/stories/Molecules/Cards/Detail/TournamentCardDetail.vue +26 -8
- package/src/stories/Molecules/Cards/Header/TournamentCardHeader.vue +4 -0
- package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.stories.js +75 -0
- package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.test.js +81 -0
- package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.vue +42 -0
- package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.vue +1 -1
- package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.vue +1 -1
- package/src/stories/Molecules/Menus/EditTournamentMenu/EditTournamentMenu.stories.js +13 -1
- package/src/stories/Molecules/Menus/EditTournamentMenu/EditTournamentMenu.vue +6 -4
- package/src/stories/Molecules/Modals/BaseModal/BaseModal.stories.js +39 -18
- package/src/stories/Molecules/Modals/BaseModal/BaseModal.vue +22 -9
- package/src/stories/Organisms/Cards/TournamentCard/TournamentCard.vue +20 -8
- package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.stories.js +13 -0
- package/src/stories/Organisms/{Inputs → ComplexInputs}/AddressAutocomplete/AddressAutocomplete.vue +9 -11
- package/src/stories/Organisms/{Inputs → ComplexInputs}/DatePicker/DatePicker.stories.js +1 -1
- package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.stories.js +20 -0
- package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.stories.js +30 -0
- package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.vue +129 -0
- package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.stories.js +30 -0
- package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.vue +113 -0
- package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.stories.js +20 -0
- package/src/stories/Organisms/{Inputs → ComplexInputs}/ImageCropper/ImageCropper.vue +4 -6
- package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.stories.js +17 -0
- package/src/stories/Organisms/Containers/Container.stories.js +13 -0
- package/src/stories/Organisms/Containers/Container.vue +6 -0
- package/src/stories/Organisms/Forms/EditTournamentForm1.stories.js +26 -0
- package/src/stories/Organisms/Forms/EditTournamentForm1.vue +66 -0
- package/src/stories/Organisms/Grids/GridContainer.stories.js +28 -1
- package/src/stories/Organisms/Grids/GridContainer.vue +3 -3
- package/src/stories/Templates/TournamentManagement/AddTournament/PageOne/AddTournamentPageOne.stories.js +17 -13
- package/src/stories/Templates/TournamentManagement/AddTournament/PageOne/AddTournamentPageOne.vue +27 -21
- package/tailwind.config.js +2 -1
- package/src/stories/Organisms/Inputs/AddressAutocomplete/AddressAutocomplete.stories.js +0 -25
- package/src/stories/Organisms/Inputs/DropDown/DropDownMenu.stories.js +0 -34
- package/src/stories/Organisms/Inputs/ImageCropper/ImageCropper.stories.js +0 -28
- package/src/stories/Organisms/Inputs/TextBoxEditor/TextBoxEditor.stories.js +0 -28
- /package/src/stories/Organisms/{Inputs → ComplexInputs}/DatePicker/DatePicker.vue +0 -0
- /package/src/stories/Organisms/{Inputs → ComplexInputs}/DropDown/DropDownMenu.vue +0 -0
- /package/src/stories/Organisms/{Inputs → ComplexInputs}/TextBoxEditor/TextBoxEditor.vue +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import FindPerson from './FindPerson.vue';
|
|
2
|
+
import mockPersons from '../../../../mocks/personsMock.js';
|
|
3
|
+
export default {
|
|
4
|
+
title: 'Organisms/ComplexInputs/FindPerson',
|
|
5
|
+
component: FindPerson,
|
|
6
|
+
tags: ['autodocs'],
|
|
7
|
+
args: {
|
|
8
|
+
persons: mockPersons,
|
|
9
|
+
addNewText: "Add New Person"
|
|
10
|
+
},
|
|
11
|
+
argTypes: {
|
|
12
|
+
locations: {
|
|
13
|
+
control: {
|
|
14
|
+
type: 'object'
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
addNewText: {
|
|
18
|
+
control: {
|
|
19
|
+
type: 'text'
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const Default = {
|
|
26
|
+
args: {
|
|
27
|
+
locations: mockPersons,
|
|
28
|
+
addNewText: "Add New Location"
|
|
29
|
+
}
|
|
30
|
+
};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<section>
|
|
3
|
+
<div v-if="!showNewPerson" class="relative">
|
|
4
|
+
<BaseInput
|
|
5
|
+
:addBorder="addBorder"
|
|
6
|
+
:value="inputValue"
|
|
7
|
+
@input="updateInput"
|
|
8
|
+
placeholder="Type to search person..."
|
|
9
|
+
/>
|
|
10
|
+
<div v-if="showDropdown" class="absolute z-10 w-full bg-white border border-gray-300 rounded-md mt-1">
|
|
11
|
+
<ul>
|
|
12
|
+
<li v-for="(person, index) in filteredPersons" :key="index" @click="selectPerson(person)" class="p-2 hover:bg-gray-100 cursor-pointer">
|
|
13
|
+
{{ person.DisplayName }}
|
|
14
|
+
</li>
|
|
15
|
+
</ul>
|
|
16
|
+
<div @click="addNewPerson" class="p-2 hover:bg-gray-100 cursor-pointer">
|
|
17
|
+
<base-button
|
|
18
|
+
type="secondary"
|
|
19
|
+
label="Add New Person"
|
|
20
|
+
iconName="fa-user-plus"
|
|
21
|
+
v-on:click="showNewPerson = true"
|
|
22
|
+
/>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
<div v-if="showNewPerson" >
|
|
27
|
+
<BaseModal :show="showNewPerson" iconName="fa-user" buttonText="Add Person" @submit-modal="handleSubmit" @update:show="showNewPerson = false">
|
|
28
|
+
<template #modal-content>
|
|
29
|
+
<BaseText class="pb-2" text="Enter Primary Contacts Information" />
|
|
30
|
+
<BaseInput :addBorder="true" :invalid="false" :value="personName" class="pb-2" placeholder="Display Name" type="formInput" @update:value="value => personName = value"/>
|
|
31
|
+
<BaseInput :addBorder="true" :invalid="false" :value="personName" class="pb-2" placeholder="Legal Name" type="formInput" @update:value="value => personName = value"/>
|
|
32
|
+
<BaseInput :addBorder="true" :invalid="false" :value="personEmail" class="pb-2" placeholder="Email" type="formInput" @update:value="value => personEmail = value"/>
|
|
33
|
+
<BaseInput :addBorder="true" :invalid="false" :value="personPronouns" class="pb-2" placeholder="Pronouns" type="formInput" @update:value="value => personPronouns = value"/>
|
|
34
|
+
</template>
|
|
35
|
+
</BaseModal>
|
|
36
|
+
</div>
|
|
37
|
+
</section>
|
|
38
|
+
</template>
|
|
39
|
+
|
|
40
|
+
<script>
|
|
41
|
+
import BaseInput from '../../../Atoms/Input/BaseInput.vue';
|
|
42
|
+
import BaseButton from "../../../Molecules/Buttons/BaseButton/BaseButton.vue";
|
|
43
|
+
import BaseText from "../../../Atoms/Text/BaseText.vue";
|
|
44
|
+
import BaseModal from "../../../Molecules/Modals/BaseModal/BaseModal.vue";
|
|
45
|
+
|
|
46
|
+
export default {
|
|
47
|
+
name: 'FindPerson',
|
|
48
|
+
components: {BaseModal, BaseText, BaseButton, BaseInput},
|
|
49
|
+
props: {
|
|
50
|
+
persons: {
|
|
51
|
+
type: Array,
|
|
52
|
+
required: true
|
|
53
|
+
},
|
|
54
|
+
addBorder: {
|
|
55
|
+
type: Boolean,
|
|
56
|
+
default: false
|
|
57
|
+
},
|
|
58
|
+
addNewText: {
|
|
59
|
+
type: String,
|
|
60
|
+
default: 'Add New'
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
data() {
|
|
64
|
+
return {
|
|
65
|
+
personEmail: '',
|
|
66
|
+
personName: '',
|
|
67
|
+
personPronouns: '',
|
|
68
|
+
showNewPerson: false,
|
|
69
|
+
filteredPersons: this.persons,
|
|
70
|
+
inputValue: '',
|
|
71
|
+
showDropdown: false,
|
|
72
|
+
debouncedTimeout: null
|
|
73
|
+
};
|
|
74
|
+
},
|
|
75
|
+
watch: {
|
|
76
|
+
inputValue(newValue) {
|
|
77
|
+
this.showDropdown = newValue.length > 0;
|
|
78
|
+
this.showAddNew = newValue.length > 0 && this.filteredPersons.length === 0;
|
|
79
|
+
this.debounceSearch();
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
methods: {
|
|
83
|
+
updateInput(event) {
|
|
84
|
+
this.inputValue = event.target.value;
|
|
85
|
+
},
|
|
86
|
+
selectPerson(person) {
|
|
87
|
+
this.showDropdown = false;
|
|
88
|
+
this.inputValue = person.Name;
|
|
89
|
+
this.$emit('person-selected', person);
|
|
90
|
+
this.$nextTick(() => {
|
|
91
|
+
this.showDropdown = false;
|
|
92
|
+
});
|
|
93
|
+
},
|
|
94
|
+
addNewPerson() {
|
|
95
|
+
this.$emit('add-new-person', this.inputValue);
|
|
96
|
+
this.showDropdown = false;
|
|
97
|
+
},
|
|
98
|
+
onInputChanged(value) {
|
|
99
|
+
if (!this.showDropdown) return;
|
|
100
|
+
this.filteredPersons = this.persons.filter(person => person.DisplayName.toLowerCase().includes(value.toLowerCase()));
|
|
101
|
+
},
|
|
102
|
+
debounceSearch() {
|
|
103
|
+
clearTimeout(this.debouncedTimeout);
|
|
104
|
+
this.debouncedTimeout = setTimeout(() => {
|
|
105
|
+
this.onInputChanged(this.inputValue)
|
|
106
|
+
}, 500);
|
|
107
|
+
},
|
|
108
|
+
handleSubmit() {
|
|
109
|
+
console.log('submitting person')
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
</script>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import GenericImageCropper from './ImageCropper.vue';
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
title: 'Organisms/ComplexInputs/ImageCropper',
|
|
5
|
+
component: GenericImageCropper,
|
|
6
|
+
tags: ['autodocs'],
|
|
7
|
+
args: {},
|
|
8
|
+
argTypes: {
|
|
9
|
+
personID: {
|
|
10
|
+
control: 'number',
|
|
11
|
+
description: 'The ID of the person for the image cropper'
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const Default = {
|
|
17
|
+
args: {
|
|
18
|
+
personID: 1,
|
|
19
|
+
}
|
|
20
|
+
};
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
@completed="handleCompleted"
|
|
14
14
|
@error="handlerError"
|
|
15
15
|
v-model="showCropper"
|
|
16
|
-
:upload-url="
|
|
16
|
+
:upload-url="`http://localhost/api/upload/${personID}`"
|
|
17
17
|
:cropper-options="{
|
|
18
18
|
aspectRatio: 8/3,
|
|
19
19
|
autoCropArea: 1,
|
|
@@ -51,26 +51,24 @@ export default {
|
|
|
51
51
|
watch: {
|
|
52
52
|
personID: {
|
|
53
53
|
immediate: true,
|
|
54
|
-
handler(newVal
|
|
54
|
+
handler(newVal) {
|
|
55
55
|
this.getImgUrl(newVal)
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
},
|
|
59
59
|
methods: {
|
|
60
|
-
getImgUrl(
|
|
61
|
-
//this.userPicUrl = `${ferrotasNodeServer}/uploads/${id}.png?${Date.now()}`
|
|
60
|
+
getImgUrl() {
|
|
62
61
|
this.userPicUrl = '../../../../src/assets/select-tournament.png'
|
|
63
62
|
},
|
|
64
63
|
setShowCropper() {
|
|
65
64
|
this.showCropper = true
|
|
66
65
|
},
|
|
67
66
|
handleUploading() {
|
|
68
|
-
this.userPicUrl = `./uploads/default.jpeg`
|
|
69
67
|
this.message = 'uploading...'
|
|
70
68
|
},
|
|
71
69
|
handleUploaded(response) {
|
|
72
70
|
if (response.response.status === 200) {
|
|
73
|
-
this.
|
|
71
|
+
this.userPicUrl = `http://localhost/uploads/${this.personID}.png`
|
|
74
72
|
}
|
|
75
73
|
},
|
|
76
74
|
handleCompleted() {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import TextBoxEditor from './TextBoxEditor.vue';
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
title: 'Organisms/ComplexInputs/TextBoxEditor',
|
|
5
|
+
tags: ['autodocs'],
|
|
6
|
+
component: TextBoxEditor,
|
|
7
|
+
args: {},
|
|
8
|
+
argTypes: {}
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export const Default = {
|
|
12
|
+
args: {
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import EditTournamentForm from './EditTournamentForm1.vue';
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
title: 'Organisms/Forms/EditTournamentForm',
|
|
5
|
+
component: EditTournamentForm,
|
|
6
|
+
tags: ['autodocs'],
|
|
7
|
+
args: {},
|
|
8
|
+
argTypes: {}
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
export const Default = {
|
|
13
|
+
args: {
|
|
14
|
+
tournament: {
|
|
15
|
+
name: 'Ultimate',
|
|
16
|
+
imageLink: '',
|
|
17
|
+
address: '123 Winchester St',
|
|
18
|
+
coordinates: '',
|
|
19
|
+
startDate: '',
|
|
20
|
+
totalDays: 1,
|
|
21
|
+
description: '',
|
|
22
|
+
visibility: '',
|
|
23
|
+
externalLinks: []
|
|
24
|
+
},
|
|
25
|
+
}
|
|
26
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="w-full flex flex-col justify-center">
|
|
3
|
+
<div class="mb-3">
|
|
4
|
+
<BaseText :size="'sm'" :text="'Cover Image'" :weight="'normal'" class="mb-1" color="primary"/>
|
|
5
|
+
<ImageCropper>Picture</ImageCropper>
|
|
6
|
+
</div>
|
|
7
|
+
<div class="mb-3">
|
|
8
|
+
<TitledInput :inputValue="localTournament.name" :invalid="validation.name" :placeholder="localTournament.name"
|
|
9
|
+
:title="'Tournament Name'" @update:value="value => localTournament.name = value"/>
|
|
10
|
+
<BaseText :color="'primary'" :invalid="validation.address" :size="'sm'" :text="'Address'"
|
|
11
|
+
:weight="'normal'" class="mb-1 ml-1" data-testid="text-address"/>
|
|
12
|
+
<AddressAutocomplete :address="localTournament.address" :invalid="validation.address"
|
|
13
|
+
:placeholder="localTournament.address"
|
|
14
|
+
@update:address="handleAddressUpdate"/>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="mt-3"/>
|
|
17
|
+
<BaseText :color="'quaternary'" :size="'sm'" :text="'SOCIAL MEDIA AND CONTACT'" :weight="'normal'"
|
|
18
|
+
class="mb-2 border-b border-quaternary"/>
|
|
19
|
+
<!-- This titled input needs to be worked like the external links of add tournament page two
|
|
20
|
+
<TitledInput :inputValue="localTournament.SocialMedia" :invalid="validation.name"-->
|
|
21
|
+
<!-- :title="'Instagram'" @update:value="value => localTournament.SocialMedia = value"/>-->
|
|
22
|
+
</div>
|
|
23
|
+
</template>
|
|
24
|
+
|
|
25
|
+
<script>
|
|
26
|
+
import ImageCropper from "../ComplexInputs/ImageCropper/ImageCropper.vue";
|
|
27
|
+
import BaseInput from "../../Atoms/Input/BaseInput.vue";
|
|
28
|
+
import BaseText from "../../Atoms/Text/BaseText.vue";
|
|
29
|
+
import AddressAutocomplete from "../ComplexInputs/AddressAutocomplete/AddressAutocomplete.vue";
|
|
30
|
+
import BaseButton from "../../Molecules/Buttons/BaseButton/BaseButton.vue";
|
|
31
|
+
import TitledInput from "../../Molecules/CombinationInputs/TitledInput/TitledInput.vue";
|
|
32
|
+
|
|
33
|
+
export default {
|
|
34
|
+
components: {
|
|
35
|
+
TitledInput,
|
|
36
|
+
AddressAutocomplete,
|
|
37
|
+
ImageCropper,
|
|
38
|
+
BaseInput,
|
|
39
|
+
BaseText,
|
|
40
|
+
BaseButton
|
|
41
|
+
},
|
|
42
|
+
props: {tournament: Object},
|
|
43
|
+
data() {
|
|
44
|
+
return {
|
|
45
|
+
localTournament: JSON.parse(JSON.stringify(this.tournament)),
|
|
46
|
+
validation: {
|
|
47
|
+
name: false,
|
|
48
|
+
imageLink: false,
|
|
49
|
+
address: false,
|
|
50
|
+
coordinates: false,
|
|
51
|
+
startDate: false,
|
|
52
|
+
totalDays: false,
|
|
53
|
+
description: false,
|
|
54
|
+
visibility: false
|
|
55
|
+
},
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
methods: {
|
|
59
|
+
handleAddressUpdate(updatedAddress) {
|
|
60
|
+
this.localTournament.address = updatedAddress.address;
|
|
61
|
+
this.localTournament.coordinates = updatedAddress.coordinates;
|
|
62
|
+
},
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
</script>
|
|
@@ -4,7 +4,34 @@ export default {
|
|
|
4
4
|
title: 'Organisms/Grids/GridContainer',
|
|
5
5
|
component: GridContainer,
|
|
6
6
|
tags: ['autodocs'],
|
|
7
|
-
|
|
7
|
+
args: {},
|
|
8
|
+
argTypes: {
|
|
9
|
+
items: {
|
|
10
|
+
control: {
|
|
11
|
+
type: 'object'
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
component: {
|
|
15
|
+
control: {
|
|
16
|
+
type: 'text'
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
label: {
|
|
20
|
+
control: {
|
|
21
|
+
type: 'text'
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
dropdownItems: {
|
|
25
|
+
control: {
|
|
26
|
+
type: 'object'
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
selectedItem: {
|
|
30
|
+
control: {
|
|
31
|
+
type: 'object'
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
8
35
|
};
|
|
9
36
|
export const Default = {
|
|
10
37
|
args: {
|
|
@@ -81,13 +81,13 @@ export default {
|
|
|
81
81
|
|
|
82
82
|
switch(this.sortCriteria) {
|
|
83
83
|
case 'Date':
|
|
84
|
-
result = [...result].sort((a, b) => new Date(a.
|
|
84
|
+
result = [...result].sort((a, b) => new Date(a.StartDate) - new Date(b.StartDate));
|
|
85
85
|
break;
|
|
86
86
|
case 'Name':
|
|
87
|
-
result = [...result].sort((a, b) => a.
|
|
87
|
+
result = [...result].sort((a, b) => a.Name.localeCompare(b.Name));
|
|
88
88
|
break;
|
|
89
89
|
case 'Location':
|
|
90
|
-
result = [...result].sort((a, b) => a.
|
|
90
|
+
result = [...result].sort((a, b) => a.Address[0].Name.localeCompare(b.Address[0].Name));
|
|
91
91
|
break;
|
|
92
92
|
}
|
|
93
93
|
return result;
|
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import AddTournamentPageOne from './AddTournamentPageOne.vue';
|
|
2
|
-
|
|
2
|
+
import mockLocation from '../../../../../mocks/locationMock.js';
|
|
3
|
+
import mockPersons from '../../../../../mocks/personsMock.js';
|
|
3
4
|
export default {
|
|
4
5
|
title: 'Templates/TournamentManagement/AddTournament/PageOne',
|
|
5
6
|
component: AddTournamentPageOne,
|
|
6
7
|
tags: ['autodocs'],
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const Template = args => ({
|
|
11
|
-
components: {AddTournamentPageOne},
|
|
12
|
-
setup() {
|
|
13
|
-
return {
|
|
14
|
-
args: {}
|
|
15
|
-
};
|
|
8
|
+
args: {
|
|
9
|
+
locations: mockLocation,
|
|
10
|
+
persons: mockPersons
|
|
16
11
|
},
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
argTypes: {
|
|
13
|
+
locations: {
|
|
14
|
+
control: {
|
|
15
|
+
type: 'object'
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
19
20
|
|
|
20
21
|
export const Default = {
|
|
21
|
-
args: {
|
|
22
|
+
args: {
|
|
23
|
+
locations: mockLocation,
|
|
24
|
+
addNewText: "Add New Location"
|
|
25
|
+
}
|
|
22
26
|
};
|
package/src/stories/Templates/TournamentManagement/AddTournament/PageOne/AddTournamentPageOne.vue
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<BaseText :color="'quaternary'" :size="'sm'" :text="'Step 1 out of 2'" :weight="'normal'"
|
|
5
5
|
data-testid="text-step"/>
|
|
6
6
|
</div>
|
|
7
|
-
<div class="w-full
|
|
7
|
+
<div class="w-full my-4">
|
|
8
8
|
<BaseText :color="'primaryHighlight'" :size="'2xl'" :text="'Add Tournament'" :weight="'normal'"
|
|
9
9
|
data-testid="text-add-tournament"/>
|
|
10
10
|
</div>
|
|
@@ -12,19 +12,13 @@
|
|
|
12
12
|
<ImageCropper :personID="1"/>
|
|
13
13
|
</div>
|
|
14
14
|
|
|
15
|
-
<div class="w-
|
|
15
|
+
<div class="w-fu--*ll flex flex-row justify-center">
|
|
16
16
|
<section class="w-96">
|
|
17
|
+
<TitledInput :invalid="validation.name" title="Tournament Name" :inputValue="tournament.name" placeholder="Enter Tournament Name" @update:value="value => tournament.name = value"></TitledInput>
|
|
17
18
|
<div class="flex flex-col mb-3">
|
|
18
|
-
<BaseText :invalid="validation.
|
|
19
|
-
class="mb-1" color="primary" data-testid="text-tournament-name"/>
|
|
20
|
-
<BaseInput :addBorder="true" :invalid="validation.name" :value="tournament.name" placeholder="Enter Tournament Name"
|
|
21
|
-
type="formInput" @update:value="value => tournament.name = value"/>
|
|
22
|
-
</div>
|
|
23
|
-
<div class="flex flex-col mb-3">
|
|
24
|
-
<BaseText :color="'primaryHighlight'" :invalid="validation.address" :size="'sm'" :text="'Address'"
|
|
19
|
+
<BaseText :color="'primaryHighlight'" :invalid="validation.address" :size="'sm'" :text="'Location'"
|
|
25
20
|
:weight="'normal'" class="mb-1" data-testid="text-address"/>
|
|
26
|
-
<
|
|
27
|
-
@update:address="handleAddressUpdate"/>
|
|
21
|
+
<FindLocation :addBorder="true" :locations="locations" addNewText="Add New" />
|
|
28
22
|
</div>
|
|
29
23
|
<div class="flex flex-row mb-3">
|
|
30
24
|
<div class="w-3/4 mr-1">
|
|
@@ -33,10 +27,8 @@
|
|
|
33
27
|
<DatePicker :invalid="validation.startDate" :setDate="tournament.startDate"
|
|
34
28
|
@update:selectedDate="handleDateUpdate"/>
|
|
35
29
|
</div>
|
|
36
|
-
<div
|
|
37
|
-
<
|
|
38
|
-
:weight="'normal'" class="mb-1" data-testid="text-total-days"/>
|
|
39
|
-
<BaseInput :addBorder="true" :invalid="validation.totalDays" :placeholder="`${1}`" :value="`${tournament.totalDays}`"/>
|
|
30
|
+
<div>
|
|
31
|
+
<TitledInput :invalid="validation.totalDays" title="Number of Days" :inputValue="tournament.totalDays" placeholder="1" @update:value="value => tournament.totalDays = value"></TitledInput>
|
|
40
32
|
</div>
|
|
41
33
|
</div>
|
|
42
34
|
<div class="flex flex-col mb-3">
|
|
@@ -44,6 +36,11 @@
|
|
|
44
36
|
:weight="'normal'" class="mb-1" data-testid="text-description"/>
|
|
45
37
|
<TextBoxEditor :invalid="validation.description" @update:editorContent="handleEditorUpdate"/>
|
|
46
38
|
</div>
|
|
39
|
+
<div class="flex flex-col pb-4">
|
|
40
|
+
<BaseText :color="'primaryHighlight'" :invalid="false" :size="'sm'" :text="'Primary Contact'"
|
|
41
|
+
:weight="'normal'" class="mb-1" data-testid="text-address"/>
|
|
42
|
+
<FindPerson :addBorder="true" :persons="persons" addNewText="Add New Person" />
|
|
43
|
+
</div>
|
|
47
44
|
<div class="flex flex-col pb-4">
|
|
48
45
|
<BaseText :color="'primaryHighlight'" :invalid="validation.visibility" :size="'sm'"
|
|
49
46
|
:text="'Tournament Visibility'" :weight="'normal'" class="mb-2" data-testid="text-visibility"/>
|
|
@@ -52,7 +49,7 @@
|
|
|
52
49
|
</div>
|
|
53
50
|
<div>
|
|
54
51
|
<BaseButton class="w-full" color="neutral" label="Continue" size="sm" type="secondary"
|
|
55
|
-
|
|
52
|
+
@click="handleSubmit()"/>
|
|
56
53
|
</div>
|
|
57
54
|
</section>
|
|
58
55
|
</div>
|
|
@@ -61,17 +58,23 @@
|
|
|
61
58
|
|
|
62
59
|
<script>
|
|
63
60
|
import BaseText from "../../../../Atoms/Text/BaseText.vue";
|
|
64
|
-
import ImageCropper from "../../../../Organisms/
|
|
61
|
+
import ImageCropper from "../../../../Organisms/ComplexInputs/ImageCropper/ImageCropper.vue";
|
|
65
62
|
import BaseInput from "../../../../Atoms/Input/BaseInput.vue";
|
|
66
|
-
import AddressAutocomplete from "../../../../Organisms/
|
|
67
|
-
import DatePicker from "../../../../Organisms/
|
|
68
|
-
import TextBoxEditor from "../../../../Organisms/
|
|
63
|
+
import AddressAutocomplete from "../../../../Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.vue";
|
|
64
|
+
import DatePicker from "../../../../Organisms/ComplexInputs/DatePicker/DatePicker.vue";
|
|
65
|
+
import TextBoxEditor from "../../../../Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.vue";
|
|
69
66
|
import BaseRadioGroup from "../../../../Atoms/RadioGroup/BaseRadioGroup.vue";
|
|
70
67
|
import BaseButton from "../../../../Molecules/Buttons/BaseButton/BaseButton.vue";
|
|
68
|
+
import FindLocation from "../../../../Organisms/ComplexInputs/FindLocation/FindLocation.vue";
|
|
69
|
+
import FindPerson from "../../../../Organisms/ComplexInputs/FindPerson/FindPerson.vue";
|
|
70
|
+
import TitledInput from "../../../../Molecules/CombinationInputs/TitledInput/TitledInput.vue";
|
|
71
71
|
|
|
72
72
|
export default {
|
|
73
73
|
name: 'AddTournamentPageOne',
|
|
74
74
|
components: {
|
|
75
|
+
TitledInput,
|
|
76
|
+
FindPerson,
|
|
77
|
+
FindLocation,
|
|
75
78
|
BaseText,
|
|
76
79
|
BaseInput,
|
|
77
80
|
ImageCropper,
|
|
@@ -81,7 +84,10 @@ export default {
|
|
|
81
84
|
BaseRadioGroup,
|
|
82
85
|
BaseButton
|
|
83
86
|
},
|
|
84
|
-
props: {
|
|
87
|
+
props: {
|
|
88
|
+
locations: [],
|
|
89
|
+
persons: []
|
|
90
|
+
},
|
|
85
91
|
data() {
|
|
86
92
|
return {
|
|
87
93
|
tournament: {
|
package/tailwind.config.js
CHANGED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import AddressAutocomplete from './AddressAutocomplete.vue';
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
title: 'Organisms/Inputs/AddressAutocomplete',
|
|
5
|
-
component: AddressAutocomplete,
|
|
6
|
-
tags: ['autodocs'],
|
|
7
|
-
argTypes: {}
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const Template = args => ({
|
|
11
|
-
components: { AddressAutocomplete },
|
|
12
|
-
setup() {
|
|
13
|
-
return {
|
|
14
|
-
args: {
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
},
|
|
18
|
-
methods: {
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
export const Default = {
|
|
23
|
-
args: {
|
|
24
|
-
}
|
|
25
|
-
};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import DropDownMenu from './DropDownMenu.vue';
|
|
2
|
-
export default {
|
|
3
|
-
title: 'Organisms/Inputs/DropDownMenu',
|
|
4
|
-
component: DropDownMenu,
|
|
5
|
-
tags: ['autodocs']
|
|
6
|
-
};
|
|
7
|
-
const Template = args => ({
|
|
8
|
-
components: { DropDownMenu },
|
|
9
|
-
setup() {
|
|
10
|
-
return {
|
|
11
|
-
args: {
|
|
12
|
-
label: 'default',
|
|
13
|
-
items: []
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
},
|
|
17
|
-
methods: {
|
|
18
|
-
onMenuClick(index) {
|
|
19
|
-
alert(`Button ${index + 1} clicked!`);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
export const Default = {
|
|
25
|
-
args: {
|
|
26
|
-
label: 'Sort By',
|
|
27
|
-
items: [
|
|
28
|
-
{text: 'Text1', link: '/link1'},
|
|
29
|
-
{text: 'Text2', link: '/link2'},
|
|
30
|
-
{text: 'Text3', link: '/link3'}
|
|
31
|
-
],
|
|
32
|
-
selectedItem: {text: 'Text1', link: '/link1'}
|
|
33
|
-
}
|
|
34
|
-
};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import AvatarUploader from './ImageCropper.vue';
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
title: 'Organisms/Inputs/ImageCropper',
|
|
5
|
-
tags: ['autodocs'],
|
|
6
|
-
component: AvatarUploader,
|
|
7
|
-
argTypes: {}
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const Template = args => ({
|
|
11
|
-
components: { AddTournamentPageOne },
|
|
12
|
-
setup() {
|
|
13
|
-
return {
|
|
14
|
-
args: {
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
},
|
|
18
|
-
methods: {
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
export const Default = {
|
|
23
|
-
args: {
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import TextBoxEditor from './TextBoxEditor.vue';
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
title: 'Organisms/Inputs/TextBoxEditor',
|
|
5
|
-
tags: ['autodocs'],
|
|
6
|
-
component: TextBoxEditor,
|
|
7
|
-
argTypes: {}
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const Template = args => ({
|
|
11
|
-
components: { TextBoxEditor },
|
|
12
|
-
setup() {
|
|
13
|
-
return {
|
|
14
|
-
args: {
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
},
|
|
18
|
-
methods: {
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
export const Default = {
|
|
23
|
-
args: {
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
File without changes
|