@dcrackel/hematournamentui 1.0.22 → 1.0.23

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 (74) hide show
  1. package/.eslintrc.js +18 -18
  2. package/.gitattributes +2 -2
  3. package/.prettierignore +1 -1
  4. package/.storybook/main.js +18 -18
  5. package/.storybook/mockRoutes.js +9 -9
  6. package/.storybook/preview-head.html +3 -3
  7. package/.storybook/preview.js +17 -17
  8. package/LICENSE +21 -21
  9. package/README.md +83 -83
  10. package/dist/HemaTouranmentUI-lib.es.js +7060 -6920
  11. package/dist/HemaTouranmentUI-lib.umd.js +27 -27
  12. package/dist/style.css +1 -1
  13. package/index.html +12 -12
  14. package/package.json +58 -58
  15. package/postcss.config.js +6 -6
  16. package/prettier.config.js +10 -10
  17. package/src/index.js +25 -25
  18. package/src/main.js +2 -2
  19. package/src/mocks/fileMock.js +1 -1
  20. package/src/mocks/tournamentMock.js +34 -34
  21. package/src/stories/Atoms/Icon/BaseIcon.stories.js +54 -54
  22. package/src/stories/Atoms/Icon/BaseIcon.test.js +91 -91
  23. package/src/stories/Atoms/Icon/BaseIcon.vue +48 -48
  24. package/src/stories/Atoms/Input/BaseInput.stories.js +29 -28
  25. package/src/stories/Atoms/Input/BaseInput.test.js +87 -87
  26. package/src/stories/Atoms/Input/BaseInput.vue +85 -73
  27. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.stories.js +31 -31
  28. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.test.js +49 -49
  29. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.vue +49 -49
  30. package/src/stories/Atoms/Tag/BaseTag.stories.js +29 -29
  31. package/src/stories/Atoms/Tag/BaseTag.test.js +42 -42
  32. package/src/stories/Atoms/Tag/BaseTag.vue +57 -57
  33. package/src/stories/Atoms/Text/BaseText.stories.js +77 -77
  34. package/src/stories/Atoms/Text/BaseText.test.js +172 -172
  35. package/src/stories/Atoms/Text/BaseText.vue +170 -170
  36. package/src/stories/Configure.mdx +320 -320
  37. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.stories.js +41 -41
  38. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.test.js +80 -80
  39. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.vue +31 -31
  40. package/src/stories/Molecules/Button/BaseButton.stories.js +93 -76
  41. package/src/stories/Molecules/Button/BaseButton.test.js +147 -147
  42. package/src/stories/Molecules/Button/BaseButton.vue +116 -125
  43. package/src/stories/Molecules/Cards/Detail/TournamentCardDetail.stories.js +33 -33
  44. package/src/stories/Molecules/Cards/Detail/TournamentCardDetail.vue +38 -38
  45. package/src/stories/Molecules/Cards/Header/TournamentCardHeader.stories.js +48 -48
  46. package/src/stories/Molecules/Cards/Header/TournamentCardHeader.vue +40 -40
  47. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.stories.js +36 -36
  48. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.vue +49 -49
  49. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.stories.js +32 -32
  50. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.vue +46 -46
  51. package/src/stories/Organisms/AddressAutocomplete/AddressAutocomplete.stories.js +25 -25
  52. package/src/stories/Organisms/AddressAutocomplete/AddressAutocomplete.vue +51 -51
  53. package/src/stories/Organisms/DatePicker/DatePicker.stories.js +25 -25
  54. package/src/stories/Organisms/DatePicker/DatePicker.vue +62 -62
  55. package/src/stories/Organisms/DropDown/DropDownMenu.stories.js +34 -34
  56. package/src/stories/Organisms/DropDown/DropDownMenu.vue +51 -51
  57. package/src/stories/Organisms/Grid/GridContainer.stories.js +47 -47
  58. package/src/stories/Organisms/Grid/GridContainer.vue +108 -108
  59. package/src/stories/Organisms/ImageCropper/ImageCropper.stories.js +28 -28
  60. package/src/stories/Organisms/ImageCropper/ImageCropper.vue +86 -86
  61. package/src/stories/Organisms/TextBoxEditor/TextBoxEditor.stories.js +28 -28
  62. package/src/stories/Organisms/TextBoxEditor/TextBoxEditor.vue +97 -97
  63. package/src/stories/Organisms/TournamentCard/TournamentCard.stories.js +37 -37
  64. package/src/stories/Organisms/TournamentCard/TournamentCard.vue +35 -35
  65. package/src/stories/Templates/Forms/AddTournamentPageOne/AddTournamentPageOne.stories.js +25 -25
  66. package/src/stories/Templates/Forms/AddTournamentPageOne/AddTournamentPageOne.vue +138 -137
  67. package/src/stories/Templates/Forms/AddTournamentPageTwo/AddTournamentPageTwo.stories.js +35 -0
  68. package/src/stories/Templates/Forms/AddTournamentPageTwo/AddTournamentPageTwo.vue +121 -0
  69. package/src/stories/Templates/Menu/Admin/AdminLeftMenu.stories.js +28 -28
  70. package/src/stories/Templates/Menu/Admin/AdminLeftMenu.vue +57 -57
  71. package/tailwind/output.css +1247 -1212
  72. package/tailwind/tailwind.css +4 -4
  73. package/tailwind.config.js +50 -50
  74. package/vite.config.js +23 -23
@@ -1,108 +1,108 @@
1
- <template>
2
- <div class="border border-dropdownSelect rounded-lg p-9 bg-neutral">
3
- <div class="my-4">
4
- <FilterUpcomingPast :selected="selectedTimeFrame" @timeFrame="handleTimeFrameChange"/>
5
- </div>
6
- <div class="my-4">
7
- <FilterAndSortBar :items="dropdownItems" :label="label" :selectedItem="selectedItem" @filterbar="handleFilter" @sort="handleSort"/>
8
- </div>
9
- <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 3xl:grid-cols-4 gap-6 w-full">
10
- <div v-for="item in filteredItems" :key="item.id">
11
- <component :is="component" :detail="item" />
12
- </div>
13
- </div>
14
- </div>
15
-
16
- </template>
17
-
18
-
19
- <script>
20
- import BaseText from "../../Atoms/Text/BaseText.vue";
21
- import TournamentCard from "../../Organisms/TournamentCard/TournamentCard.vue";
22
- import FilterAndSortBar from "../../Molecules/Filters/FilterAndSortBar/FilterAndSortBar.vue";
23
- import FilterUpcomingPast from "../../Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.vue";
24
-
25
- export default {
26
- name: 'GridContainer',
27
- components: {
28
- FilterAndSortBar,
29
- BaseText,
30
- TournamentCard,
31
- FilterUpcomingPast
32
- },
33
- props: {
34
- items: {
35
- type: Array,
36
- default: () => []
37
- },
38
- component: {
39
- type: String,
40
- required: true
41
- },
42
- label: {
43
- type: String,
44
- },
45
- dropdownItems: {
46
- type: Array,
47
- default: () => []
48
- },
49
- selectedItem: null
50
- },
51
- data() {
52
- return {
53
- filterOn: '',
54
- sortCriteria: 'Date',
55
- selectedTimeFrame: 'All'
56
- };
57
- },
58
- computed: {
59
- filteredItems() {
60
- let result = this.items;
61
-
62
- if (this.filterOn.trim()) {
63
- const lowerCaseSearchText = this.filterOn.toLowerCase();
64
- result = result.filter(item =>
65
- Object.values(item).some(value =>
66
- typeof value === 'string' && value.toLowerCase().includes(lowerCaseSearchText)
67
- )
68
- );
69
- }
70
-
71
- const currentDate = new Date();
72
- currentDate.setHours(0, 0, 0, 0);
73
- switch (this.selectedTimeFrame) {
74
- case 'Upcoming':
75
- result = result.filter(item => new Date(item.date) >= currentDate);
76
- break;
77
- case 'Past':
78
- result = result.filter(item => new Date(item.date) < currentDate);
79
- break;
80
- }
81
-
82
- switch(this.sortCriteria) {
83
- case 'Date':
84
- result = [...result].sort((a, b) => new Date(a.date) - new Date(b.date));
85
- break;
86
- case 'Name':
87
- result = [...result].sort((a, b) => a.name.localeCompare(b.name));
88
- break;
89
- case 'Location':
90
- result = [...result].sort((a, b) => a.location.localeCompare(b.location));
91
- break;
92
- }
93
- return result;
94
- }
95
- },
96
- methods: {
97
- handleFilter(filterText) {
98
- this.filterOn = filterText;
99
- },
100
- handleSort(criteria) {
101
- this.sortCriteria = criteria.text;
102
- },
103
- handleTimeFrameChange(timeFrame) {
104
- this.selectedTimeFrame = timeFrame;
105
- }
106
- }
107
- };
108
- </script>
1
+ <template>
2
+ <div class="border border-dropdownSelect rounded-lg p-9 bg-neutral">
3
+ <div class="my-4">
4
+ <FilterUpcomingPast :selected="selectedTimeFrame" @timeFrame="handleTimeFrameChange"/>
5
+ </div>
6
+ <div class="my-4">
7
+ <FilterAndSortBar :items="dropdownItems" :label="label" :selectedItem="selectedItem" @filterbar="handleFilter" @sort="handleSort"/>
8
+ </div>
9
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 3xl:grid-cols-4 gap-6 w-full">
10
+ <div v-for="item in filteredItems" :key="item.id">
11
+ <component :is="component" :detail="item" />
12
+ </div>
13
+ </div>
14
+ </div>
15
+
16
+ </template>
17
+
18
+
19
+ <script>
20
+ import BaseText from "../../Atoms/Text/BaseText.vue";
21
+ import TournamentCard from "../../Organisms/TournamentCard/TournamentCard.vue";
22
+ import FilterAndSortBar from "../../Molecules/Filters/FilterAndSortBar/FilterAndSortBar.vue";
23
+ import FilterUpcomingPast from "../../Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.vue";
24
+
25
+ export default {
26
+ name: 'GridContainer',
27
+ components: {
28
+ FilterAndSortBar,
29
+ BaseText,
30
+ TournamentCard,
31
+ FilterUpcomingPast
32
+ },
33
+ props: {
34
+ items: {
35
+ type: Array,
36
+ default: () => []
37
+ },
38
+ component: {
39
+ type: String,
40
+ required: true
41
+ },
42
+ label: {
43
+ type: String,
44
+ },
45
+ dropdownItems: {
46
+ type: Array,
47
+ default: () => []
48
+ },
49
+ selectedItem: null
50
+ },
51
+ data() {
52
+ return {
53
+ filterOn: '',
54
+ sortCriteria: 'Date',
55
+ selectedTimeFrame: 'All'
56
+ };
57
+ },
58
+ computed: {
59
+ filteredItems() {
60
+ let result = this.items;
61
+
62
+ if (this.filterOn.trim()) {
63
+ const lowerCaseSearchText = this.filterOn.toLowerCase();
64
+ result = result.filter(item =>
65
+ Object.values(item).some(value =>
66
+ typeof value === 'string' && value.toLowerCase().includes(lowerCaseSearchText)
67
+ )
68
+ );
69
+ }
70
+
71
+ const currentDate = new Date();
72
+ currentDate.setHours(0, 0, 0, 0);
73
+ switch (this.selectedTimeFrame) {
74
+ case 'Upcoming':
75
+ result = result.filter(item => new Date(item.date) >= currentDate);
76
+ break;
77
+ case 'Past':
78
+ result = result.filter(item => new Date(item.date) < currentDate);
79
+ break;
80
+ }
81
+
82
+ switch(this.sortCriteria) {
83
+ case 'Date':
84
+ result = [...result].sort((a, b) => new Date(a.date) - new Date(b.date));
85
+ break;
86
+ case 'Name':
87
+ result = [...result].sort((a, b) => a.name.localeCompare(b.name));
88
+ break;
89
+ case 'Location':
90
+ result = [...result].sort((a, b) => a.location.localeCompare(b.location));
91
+ break;
92
+ }
93
+ return result;
94
+ }
95
+ },
96
+ methods: {
97
+ handleFilter(filterText) {
98
+ this.filterOn = filterText;
99
+ },
100
+ handleSort(criteria) {
101
+ this.sortCriteria = criteria.text;
102
+ },
103
+ handleTimeFrameChange(timeFrame) {
104
+ this.selectedTimeFrame = timeFrame;
105
+ }
106
+ }
107
+ };
108
+ </script>
@@ -1,28 +1,28 @@
1
- import AvatarUploader from './ImageCropper.vue';
2
-
3
- export default {
4
- title: 'Organisms/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
+ import AvatarUploader from './ImageCropper.vue';
2
+
3
+ export default {
4
+ title: 'Organisms/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,86 +1,86 @@
1
- <template>
2
- <section class="">
3
- <img
4
- class="h-40 w-96 border-2 border-dashed rounded-lg"
5
- :src="userPicUrl"
6
- @error=""
7
- v-bind:alt="personID"
8
- @click="setShowCropper()"
9
- />
10
- <avatar-cropper
11
- @uploading="handleUploading"
12
- @uploaded="handleUploaded"
13
- @completed="handleCompleted"
14
- @error="handlerError"
15
- v-model="showCropper"
16
- :upload-url="`./uploads/${personID}`"
17
- :cropper-options="{
18
- aspectRatio: 8/3,
19
- autoCropArea: 1,
20
- viewMode: 1,
21
- movable: true,
22
- zoomable: true }"
23
- />
24
-
25
- </section>
26
- </template>
27
-
28
- <script>
29
- import AvatarCropper from 'vue-avatar-cropper'
30
-
31
- export default {
32
- name: 'GenericImageCropper',
33
- props: {
34
- personID: {
35
- type: Number,
36
- default: 1
37
- }
38
- },
39
- components: {
40
- AvatarCropper
41
- },
42
- data() {
43
- return {
44
- showCropper: false,
45
- userPicUrl: ''
46
- }
47
- },
48
- mounted() {
49
- this.getImgUrl(this.personID)
50
- },
51
- watch: {
52
- personID: {
53
- immediate: true,
54
- handler(newVal, oldVal) {
55
- this.getImgUrl(newVal)
56
- }
57
- }
58
- },
59
- methods: {
60
- getImgUrl(id) {
61
- //this.userPicUrl = `${ferrotasNodeServer}/uploads/${id}.png?${Date.now()}`
62
- this.userPicUrl = '../../../../src/assets/select-tournament.png'
63
- },
64
- setShowCropper() {
65
- this.showCropper = true
66
- },
67
- handleUploading() {
68
- this.userPicUrl = `./uploads/default.jpeg`
69
- this.message = 'uploading...'
70
- },
71
- handleUploaded(response) {
72
- if (response.response.status === 200) {
73
- this.getImgUrl(this.personID)
74
- }
75
- },
76
- handleCompleted() {
77
- this.message = 'upload completed.'
78
- },
79
- handlerError(message, type, xhr) {
80
- console.error(`${message} ${type} ${xhr}`)
81
- this.message = 'Oops! Something went wrong...'
82
- }
83
- }
84
- }
85
- </script>
86
-
1
+ <template>
2
+ <section class="">
3
+ <img
4
+ class="h-40 w-96 border-2 border-dashed rounded-lg"
5
+ :src="userPicUrl"
6
+ @error=""
7
+ v-bind:alt="personID"
8
+ @click="setShowCropper()"
9
+ />
10
+ <avatar-cropper
11
+ @uploading="handleUploading"
12
+ @uploaded="handleUploaded"
13
+ @completed="handleCompleted"
14
+ @error="handlerError"
15
+ v-model="showCropper"
16
+ :upload-url="`./uploads/${personID}`"
17
+ :cropper-options="{
18
+ aspectRatio: 8/3,
19
+ autoCropArea: 1,
20
+ viewMode: 1,
21
+ movable: true,
22
+ zoomable: true }"
23
+ />
24
+
25
+ </section>
26
+ </template>
27
+
28
+ <script>
29
+ import AvatarCropper from 'vue-avatar-cropper'
30
+
31
+ export default {
32
+ name: 'GenericImageCropper',
33
+ props: {
34
+ personID: {
35
+ type: Number,
36
+ default: 1
37
+ }
38
+ },
39
+ components: {
40
+ AvatarCropper
41
+ },
42
+ data() {
43
+ return {
44
+ showCropper: false,
45
+ userPicUrl: ''
46
+ }
47
+ },
48
+ mounted() {
49
+ this.getImgUrl(this.personID)
50
+ },
51
+ watch: {
52
+ personID: {
53
+ immediate: true,
54
+ handler(newVal, oldVal) {
55
+ this.getImgUrl(newVal)
56
+ }
57
+ }
58
+ },
59
+ methods: {
60
+ getImgUrl(id) {
61
+ //this.userPicUrl = `${ferrotasNodeServer}/uploads/${id}.png?${Date.now()}`
62
+ this.userPicUrl = '../../../../src/assets/select-tournament.png'
63
+ },
64
+ setShowCropper() {
65
+ this.showCropper = true
66
+ },
67
+ handleUploading() {
68
+ this.userPicUrl = `./uploads/default.jpeg`
69
+ this.message = 'uploading...'
70
+ },
71
+ handleUploaded(response) {
72
+ if (response.response.status === 200) {
73
+ this.getImgUrl(this.personID)
74
+ }
75
+ },
76
+ handleCompleted() {
77
+ this.message = 'upload completed.'
78
+ },
79
+ handlerError(message, type, xhr) {
80
+ console.error(`${message} ${type} ${xhr}`)
81
+ this.message = 'Oops! Something went wrong...'
82
+ }
83
+ }
84
+ }
85
+ </script>
86
+
@@ -1,28 +1,28 @@
1
- import TextBoxEditor from './TextBoxEditor.vue';
2
-
3
- export default {
4
- title: 'Organisms/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
-
1
+ import TextBoxEditor from './TextBoxEditor.vue';
2
+
3
+ export default {
4
+ title: 'Organisms/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
+