classcard-ui 0.2.1475 → 0.2.1476

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 (209) hide show
  1. package/README.md +24 -24
  2. package/dist/classcard-ui.common.js +86 -85
  3. package/dist/classcard-ui.common.js.map +1 -1
  4. package/dist/classcard-ui.css +1 -1
  5. package/dist/classcard-ui.umd.js +86 -85
  6. package/dist/classcard-ui.umd.js.map +1 -1
  7. package/dist/classcard-ui.umd.min.js +1 -1
  8. package/dist/classcard-ui.umd.min.js.map +1 -1
  9. package/package.json +83 -83
  10. package/src/App.vue +16 -16
  11. package/src/colorConfig.js +52 -52
  12. package/src/components/CAlertModal/CAlertModal.vue +179 -179
  13. package/src/components/CAlertModal/index.js +3 -3
  14. package/src/components/CAlerts/CAlerts.vue +114 -114
  15. package/src/components/CAlerts/index.js +2 -2
  16. package/src/components/CAnchorTabs/CAnchorTabs.vue +100 -100
  17. package/src/components/CAnchorTabs/index.js +2 -2
  18. package/src/components/CAnchorTag/CAnchorTag.vue +84 -84
  19. package/src/components/CAnchorTag/index.js +2 -2
  20. package/src/components/CAvatar/CAvatar.vue +230 -230
  21. package/src/components/CAvatar/index.js +2 -2
  22. package/src/components/CAvatarGroup/CAvatarGroup.vue +213 -213
  23. package/src/components/CAvatarGroup/index.js +2 -2
  24. package/src/components/CBasicTable/CBasicTable.vue +184 -184
  25. package/src/components/CBasicTable/index.js +2 -2
  26. package/src/components/CBreadcrumbs/CBreadcrumbs.vue +38 -38
  27. package/src/components/CBreadcrumbs/index.js +2 -2
  28. package/src/components/CButton/CButton.vue +239 -239
  29. package/src/components/CButton/index.js +2 -2
  30. package/src/components/CButtonGroup/CButtonGroup.vue +155 -155
  31. package/src/components/CButtonGroup/index.js +2 -2
  32. package/src/components/CButtonIcon/CButtonIcon.vue +166 -166
  33. package/src/components/CButtonIcon/index.js +2 -2
  34. package/src/components/CButtonLink/CButtonLink.vue +43 -43
  35. package/src/components/CButtonLink/index.js +2 -2
  36. package/src/components/CButtonSelect/CButtonSelect.vue +186 -186
  37. package/src/components/CButtonSelect/index.js +2 -2
  38. package/src/components/CButtonSelectBorder/CButtonSelectBorder.vue +265 -265
  39. package/src/components/CButtonSelectBorder/index.js +3 -3
  40. package/src/components/CButtonWithDropdown/CButtonWithDropdown.vue +152 -152
  41. package/src/components/CButtonWithDropdown/index.js +2 -2
  42. package/src/components/CCalendar/CCalendar.vue +443 -443
  43. package/src/components/CCalendar/index.js +3 -3
  44. package/src/components/CCard/CCard.vue +53 -53
  45. package/src/components/CCard/index.js +2 -2
  46. package/src/components/CCheckbox/CCheckbox.vue +200 -200
  47. package/src/components/CCheckbox/index.js +2 -2
  48. package/src/components/CCircularButton/CCircularButton.vue +57 -57
  49. package/src/components/CCircularButton/index.js +2 -2
  50. package/src/components/CCollapsibleSection/CCollapsibleSection.vue +121 -121
  51. package/src/components/CCollapsibleSection/index.js +2 -2
  52. package/src/components/CColorDots/CColorDots.vue +52 -52
  53. package/src/components/CColorDots/index.js +3 -3
  54. package/src/components/CConfirmActionModal/CConfirmActionModal.vue +221 -221
  55. package/src/components/CConfirmActionModal/index.js +3 -3
  56. package/src/components/CDatepicker/CDatepicker.vue +235 -235
  57. package/src/components/CDatepicker/index.js +2 -2
  58. package/src/components/CDualSelect/CDualSelect.vue +193 -193
  59. package/src/components/CDualSelect/index.js +2 -2
  60. package/src/components/CEditor/CEditor.vue +114 -114
  61. package/src/components/CEditor/index.js +2 -2
  62. package/src/components/CFormSectionHeading/CFormSectionHeading.vue +76 -76
  63. package/src/components/CFormSectionHeading/index.js +2 -2
  64. package/src/components/CGroupedFilterDropdown/CGroupedFilterDropdown.vue +263 -263
  65. package/src/components/CGroupedFilterDropdown/index.js +2 -2
  66. package/src/components/CGroupedSelect/CGroupedSelect.vue +366 -366
  67. package/src/components/CGroupedSelect/index.js +3 -3
  68. package/src/components/CIcon/CIcon.vue +112 -112
  69. package/src/components/CIcon/index.js +2 -2
  70. package/src/components/CIconDropdown/CIconDropdown.vue +206 -206
  71. package/src/components/CIconDropdown/index.js +2 -2
  72. package/src/components/CIconSelect/CIconSelect.vue +182 -182
  73. package/src/components/CIconSelect/index.js +3 -3
  74. package/src/components/CInput/CInput.vue +173 -173
  75. package/src/components/CInput/index.js +2 -2
  76. package/src/components/CInputAddon/CInputAddon.vue +297 -297
  77. package/src/components/CInputAddon/index.js +2 -2
  78. package/src/components/CInputEmail/CInputEmail.vue +107 -107
  79. package/src/components/CInputEmail/index.js +2 -2
  80. package/src/components/CInsetTabs/CInsetTabs.vue +134 -134
  81. package/src/components/CInsetTabs/index.js +3 -3
  82. package/src/components/CModalHeading/CModalHeading.vue +22 -22
  83. package/src/components/CModalHeading/index.js +2 -2
  84. package/src/components/CModuleHelpLinks/CModuleHelpLinks.vue +88 -88
  85. package/src/components/CModuleHelpLinks/index.js +3 -3
  86. package/src/components/CMultiselect/CMultiselect.vue +1170 -1170
  87. package/src/components/CMultiselect/index.js +2 -2
  88. package/src/components/CMultiselectr/CMultiselectr.vue +44 -44
  89. package/src/components/CMultiselectr/index.js +2 -2
  90. package/src/components/CPageHeading/CPageHeading.vue +83 -83
  91. package/src/components/CPageHeading/index.js +2 -2
  92. package/src/components/CPagination/CPagination.vue +239 -239
  93. package/src/components/CPagination/index.js +2 -2
  94. package/src/components/CPhoneNumber/CPhoneNumber.vue +213 -213
  95. package/src/components/CPhoneNumber/index.js +2 -2
  96. package/src/components/CProgress/CProgress.vue +91 -91
  97. package/src/components/CProgress/index.js +2 -2
  98. package/src/components/CRadio/CRadio.vue +197 -197
  99. package/src/components/CRadio/index.js +2 -2
  100. package/src/components/CRadioGroup/CRadioGroup.vue +96 -96
  101. package/src/components/CRadioGroup/index.js +2 -2
  102. package/src/components/CRangeSlider/CRangeSlider.vue +55 -55
  103. package/src/components/CRangeSlider/index.js +2 -2
  104. package/src/components/CReorderableStackedList/CReorderableStackedList.vue +94 -94
  105. package/src/components/CReorderableStackedList/index.js +2 -2
  106. package/src/components/CSelect/CSelect.vue +1210 -1210
  107. package/src/components/CSelect/index.js +2 -2
  108. package/src/components/CSmallTimeline/CSmallTimeline.vue +40 -40
  109. package/src/components/CSmallTimeline/index.js +2 -2
  110. package/src/components/CStackedList/CStackedList.vue +162 -162
  111. package/src/components/CStackedList/index.js +2 -2
  112. package/src/components/CStats/CStats.vue +157 -157
  113. package/src/components/CStats/index.js +2 -2
  114. package/src/components/CSwitch/CSwitch.vue +200 -200
  115. package/src/components/CSwitch/index.js +2 -2
  116. package/src/components/CTabLazy/CTabLazy.vue +83 -83
  117. package/src/components/CTabLazy/index.js +2 -2
  118. package/src/components/CTable/CTable.vue +1114 -1114
  119. package/src/components/CTable/index.js +2 -2
  120. package/src/components/CTabs/CTabs.vue +250 -250
  121. package/src/components/CTabs/index.js +2 -2
  122. package/src/components/CTag/CTag.vue +109 -109
  123. package/src/components/CTag/index.js +2 -2
  124. package/src/components/CTextarea/CTextarea.vue +118 -118
  125. package/src/components/CTextarea/index.js +2 -2
  126. package/src/components/CTimeline/CTimeline.vue +237 -237
  127. package/src/components/CTimeline/index.js +2 -2
  128. package/src/components/CToolTip/CToolTip.vue +108 -108
  129. package/src/components/CToolTip/index.js +3 -3
  130. package/src/components/CUpload/CUpload.vue +331 -331
  131. package/src/components/CUpload/index.js +2 -2
  132. package/src/components/NumberAnimator.vue +112 -112
  133. package/src/components/index.js +57 -57
  134. package/src/helper.js +8 -8
  135. package/src/icons.js +831 -830
  136. package/src/main.js +22 -22
  137. package/src/stories/CAlertModal.stories.js +30 -30
  138. package/src/stories/CAlerts.stories.js +39 -39
  139. package/src/stories/CAnchorTabs.stories.js +29 -29
  140. package/src/stories/CAnchorTag.stories.js +38 -38
  141. package/src/stories/CAvatar.stories.js +38 -38
  142. package/src/stories/CAvatarGroup.stories.js +136 -136
  143. package/src/stories/CBasicTable.stories.js +316 -316
  144. package/src/stories/CBreadcrumbs.stories.js +24 -24
  145. package/src/stories/CButton.stories.js +49 -49
  146. package/src/stories/CButtonGroup.stories.js +43 -43
  147. package/src/stories/CButtonIcon.stories.js +27 -27
  148. package/src/stories/CButtonLink.stories.js +24 -24
  149. package/src/stories/CButtonSelect.stories.js +44 -44
  150. package/src/stories/CButtonSelectBorder.stories.js +56 -56
  151. package/src/stories/CButtonWithDropdown.stories.js +41 -41
  152. package/src/stories/CCalendar.stories.js +16 -16
  153. package/src/stories/CCard.stories.js +30 -30
  154. package/src/stories/CCheckbox.stories.js +38 -38
  155. package/src/stories/CCircularButton.stories.js +29 -29
  156. package/src/stories/CCollapsibleSection.stories.js +29 -29
  157. package/src/stories/CColorDots.stories.js +37 -37
  158. package/src/stories/CConfirmActionModal.stories.js +60 -60
  159. package/src/stories/CDatepicker.stories.js +31 -31
  160. package/src/stories/CDualSelect.stories.js +29 -29
  161. package/src/stories/CEditor.stories.js +30 -30
  162. package/src/stories/CFormSectionHeading.stories.js +37 -37
  163. package/src/stories/CGroupedFilterDropdown.stories.js +176 -176
  164. package/src/stories/CGroupedSelect.stories.js +103 -103
  165. package/src/stories/CIcon.stories.js +31 -31
  166. package/src/stories/CIconDropdown.stories.js +52 -52
  167. package/src/stories/CIconSelect.stories.js +45 -45
  168. package/src/stories/CInput.stories.js +36 -36
  169. package/src/stories/CInputAddon.stories.js +37 -37
  170. package/src/stories/CInputEmail.stories.js +27 -27
  171. package/src/stories/CInsetTabs.stories.js +48 -48
  172. package/src/stories/CModalHeading.stories.js +25 -25
  173. package/src/stories/CModuleHelpLinks.stories.js +25 -25
  174. package/src/stories/CMultiselect.stories.js +136 -136
  175. package/src/stories/CMultiselectr.stories.js +23 -23
  176. package/src/stories/CPageHeading.stories.js +32 -32
  177. package/src/stories/CPagination.stories.js +30 -30
  178. package/src/stories/CPhoneNumber.stories.js +37 -37
  179. package/src/stories/CProgress.stories.js +23 -23
  180. package/src/stories/CRadio.stories.js +44 -44
  181. package/src/stories/CRadioGroup.stories.js +51 -51
  182. package/src/stories/CRangeSlider.stories.js +23 -23
  183. package/src/stories/CReorderableStackedList.stories.js +23 -23
  184. package/src/stories/CSelect.stories.js +157 -157
  185. package/src/stories/CSmallTimeline.stories.js +26 -26
  186. package/src/stories/CStackedList.stories.js +37 -37
  187. package/src/stories/CStats.stories.js +53 -53
  188. package/src/stories/CSwitch.stories.js +28 -28
  189. package/src/stories/CTabLazy.stories.js +42 -42
  190. package/src/stories/CTable.stories.js +203 -203
  191. package/src/stories/CTabs.stories.js +36 -36
  192. package/src/stories/CTag.stories.js +37 -37
  193. package/src/stories/CTextarea.stories.js +32 -32
  194. package/src/stories/CTimeline.stories.js +26 -26
  195. package/src/stories/CToolTip.stories.js +27 -27
  196. package/src/stories/CUpload.stories.js +36 -36
  197. package/src/stories/Introduction.stories.mdx +207 -207
  198. package/src/stories/Page.vue +88 -88
  199. package/src/stories/assets/code-brackets.svg +0 -0
  200. package/src/stories/assets/colors.svg +0 -0
  201. package/src/stories/assets/comments.svg +0 -0
  202. package/src/stories/assets/direction.svg +0 -0
  203. package/src/stories/assets/flow.svg +0 -0
  204. package/src/stories/assets/plugin.svg +0 -0
  205. package/src/stories/assets/repo.svg +0 -0
  206. package/src/stories/assets/stackalt.svg +0 -0
  207. package/src/stories/header.css +26 -26
  208. package/src/stories/page.css +69 -69
  209. package/src/stories/utils.css +32 -32
@@ -1,213 +1,213 @@
1
- <template>
2
- <div :class="description ? 'items-start' : 'items-center'" class="flex">
3
- <div class="flex -space-x-1" v-if="images && images.length <= 3">
4
- <img
5
- v-for="(image, index) in images"
6
- :key="index"
7
- :class="classes"
8
- class="inline-block ring-2 ring-white"
9
- :src="image.image"
10
- alt=""
11
- />
12
- </div>
13
- <div class="flex -space-x-1" v-if="images && images.length > 3">
14
- <img
15
- v-for="(image, index) in images.slice(0, 4)"
16
- :key="index"
17
- :class="classes"
18
- class="inline-block ring-2 ring-white"
19
- :src="image.image"
20
- alt=""
21
- />
22
- </div>
23
- <div class="flex -space-x-1" v-if="nameInitials && nameInitialsWithColors.length > 4">
24
- <template v-for="(name, index) in nameInitialsWithColors.slice(0, 4)">
25
- <div
26
- :key="index"
27
- :class="[nameInitialsClasses, 'relative']"
28
- @mouseover="handleMouseOver(index)"
29
- @mouseleave="handleMouseLeave"
30
- >
31
- <c-tool-tip
32
- v-if="showTooltipOnHover && hoveredIndex === index"
33
- :tooltipText="name.fullName"
34
- :isTopAligned="true"
35
- color="#1f2937"
36
- classes="absolute left-1/2 -translate-x-1/2 -mt-12 text-white bg-gray-800 w-max"
37
- ></c-tool-tip>
38
- <img
39
- v-if="showImageWithInitials && (name.image || name.image_240)"
40
- :class="[
41
- 'w-full h-full object-cover',
42
- rounded ? 'rounded-full' : 'rounded-md'
43
- ]"
44
- :src="name.image || name.image_240"
45
- :alt="'Profile picture of ' + name.fullName"
46
- />
47
- <div
48
- v-else
49
- :class="[
50
- 'w-full h-full inline-block text-center font-medium ring-2 ring-white',
51
- 'bg-' + name.color + '-100',
52
- 'border-' + name.color + '-300',
53
- ,
54
- 'text-' + name.color + '-600',
55
- rounded ? 'rounded-full' : 'rounded-md'
56
- ]"
57
- :style="[
58
- size == 'medium' ? { 'line-height': '3rem' } : '',
59
- size == 'large' ? { 'line-height': '3.5rem' } : '',
60
- size == 'very large' ? { 'line-height': '6rem' } : '',
61
- size == 'extraextrasmall' ? { 'font-size': '0.5rem' } : '',
62
- size == 'extrasmall' ? { 'font-size': '0.7rem' } : '',
63
- ]"
64
- >
65
- {{ name.initials }}
66
- </div>
67
- </div>
68
- </template>
69
- </div>
70
- <div class="flex -space-x-1" v-if="nameInitials && nameInitialsWithColors.length <= 4">
71
- <template v-for="(name, index) in nameInitialsWithColors">
72
- <div
73
- :key="index"
74
- :class="[nameInitialsClasses, 'relative']"
75
- @mouseover="handleMouseOver(index)"
76
- @mouseleave="handleMouseLeave"
77
- >
78
- <c-tool-tip
79
- v-if="showTooltipOnHover && hoveredIndex === index"
80
- :tooltipText="name.fullName"
81
- :isTopAligned="true"
82
- color="#1f2937"
83
- classes="absolute left-1/2 -translate-x-1/2 -mt-12 text-white bg-gray-800 w-max"
84
- ></c-tool-tip>
85
- <img
86
- v-if="showImageWithInitials && (name.image || name.image_240)"
87
- :class="[
88
- 'w-full h-full object-cover',
89
- rounded ? 'rounded-full' : 'rounded-md'
90
- ]"
91
- :src="name.image || name.image_240"
92
- :alt="'Profile picture of ' + name.fullName"
93
- />
94
- <div
95
- v-else
96
- :class="[
97
- 'w-full h-full inline-block text-center font-medium ring-2 ring-white',
98
- 'bg-' + name.color + '-100',
99
- 'border-' + name.color + '-300',
100
- ,
101
- 'text-' + name.color + '-600',
102
- rounded ? 'rounded-full' : 'rounded-md'
103
- ]"
104
- :style="[
105
- size == 'medium' ? { 'line-height': '3rem' } : '',
106
- size == 'large' ? { 'line-height': '3.5rem' } : '',
107
- size == 'very large' ? { 'line-height': '6rem' } : '',
108
- size == 'extraextrasmall' ? { 'font-size': '0.5rem' } : '',
109
- size == 'extrasmall' ? { 'font-size': '0.7rem' } : '',
110
- ]"
111
- >
112
- {{ name.initials }}
113
- </div>
114
- </div>
115
- </template>
116
- </div>
117
- <div class="ml-3 text-left" v-if="name">
118
- <p v-if="name" class="text-sm text-gray-500">
119
- {{ name }}
120
- </p>
121
- <p v-if="description" class="text-xs text-gray-500 group-hover:text-gray-700">
122
- {{ description }}
123
- </p>
124
- <slot></slot>
125
- </div>
126
- </div>
127
- </template>
128
- <script>
129
- import CToolTip from '../CToolTip/CToolTip.vue';
130
- export default {
131
- components: { CToolTip },
132
- name: "CAvatarGroup",
133
- props: {
134
- size: {
135
- type: String,
136
- required: true,
137
- default: "medium",
138
- },
139
- images: {
140
- type: Array,
141
- },
142
- nameInitials: {
143
- type: Array,
144
- },
145
- rounded: { type: Boolean },
146
- name: { type: String },
147
- description: { type: String },
148
- showTooltipOnHover: {
149
- type: Boolean,
150
- default: false,
151
- },
152
- showImageWithInitials: {
153
- type: Boolean,
154
- default: false,
155
- },
156
- },
157
- data() {
158
- return {
159
- colors: ["gray", "red", "yellow", "indigo", "pink", "purple", "green"],
160
- hoveredIndex: null,
161
- };
162
- },
163
- computed: {
164
- classes() {
165
- return {
166
- "h-6 w-6": this.size == "extraextrasmall",
167
- "h-8 w-8": this.size == "extrasmall",
168
- "h-10 w-10": this.size == "small",
169
- "h-12 w-12": this.size == "medium",
170
- "h-14 w-14": this.size == "large",
171
- "h-24 w-24": this.size == "very large",
172
- "rounded-full": this.rounded == true,
173
- "rounded-md": this.rounded == false,
174
- };
175
- },
176
- nameInitialsClasses() {
177
- return {
178
- "h-6 w-6 leading-6": this.size == "extraextrasmall",
179
- "h-8 w-8 leading-8": this.size == "extrasmall",
180
- "h-10 w-10 leading-10 text-xs": this.size == "small",
181
- "h-12 w-12 text-sm": this.size == "medium",
182
- "h-14 w-14 text-base": this.size == "large",
183
- "h-24 w-24 text-2xl": this.size == "very large"
184
- };
185
- },
186
- nameInitialsWithColors() {
187
- let nameWithColors = this.nameInitials;
188
- nameWithColors.map((name) => {
189
- name.color = this.setColors();
190
- name.fullName = name.surname ? `${name.firstName} ${name.surname}` : name.firstName
191
- });
192
- return nameWithColors;
193
- },
194
- },
195
- methods: {
196
- setColors() {
197
- this.colors = this.colors.sort(() => Math.random() - 0.5);
198
- let show = this.colors[Math.floor(Math.random() * this.colors.length)];
199
- return show;
200
- },
201
- handleMouseOver(index) {
202
- if (this.showTooltipOnHover) {
203
- this.hoveredIndex = index;
204
- }
205
- },
206
- handleMouseLeave() {
207
- if (this.showTooltipOnHover) {
208
- this.hoveredIndex = null;
209
- }
210
- },
211
- },
212
- };
213
- </script>
1
+ <template>
2
+ <div :class="description ? 'items-start' : 'items-center'" class="flex">
3
+ <div class="flex -space-x-1" v-if="images && images.length <= 3">
4
+ <img
5
+ v-for="(image, index) in images"
6
+ :key="index"
7
+ :class="classes"
8
+ class="inline-block ring-2 ring-white"
9
+ :src="image.image"
10
+ alt=""
11
+ />
12
+ </div>
13
+ <div class="flex -space-x-1" v-if="images && images.length > 3">
14
+ <img
15
+ v-for="(image, index) in images.slice(0, 4)"
16
+ :key="index"
17
+ :class="classes"
18
+ class="inline-block ring-2 ring-white"
19
+ :src="image.image"
20
+ alt=""
21
+ />
22
+ </div>
23
+ <div class="flex -space-x-1" v-if="nameInitials && nameInitialsWithColors.length > 4">
24
+ <template v-for="(name, index) in nameInitialsWithColors.slice(0, 4)">
25
+ <div
26
+ :key="index"
27
+ :class="[nameInitialsClasses, 'relative']"
28
+ @mouseover="handleMouseOver(index)"
29
+ @mouseleave="handleMouseLeave"
30
+ >
31
+ <c-tool-tip
32
+ v-if="showTooltipOnHover && hoveredIndex === index"
33
+ :tooltipText="name.fullName"
34
+ :isTopAligned="true"
35
+ color="#1f2937"
36
+ classes="absolute left-1/2 -translate-x-1/2 -mt-12 text-white bg-gray-800 w-max"
37
+ ></c-tool-tip>
38
+ <img
39
+ v-if="showImageWithInitials && (name.image || name.image_240)"
40
+ :class="[
41
+ 'w-full h-full object-cover',
42
+ rounded ? 'rounded-full' : 'rounded-md'
43
+ ]"
44
+ :src="name.image || name.image_240"
45
+ :alt="'Profile picture of ' + name.fullName"
46
+ />
47
+ <div
48
+ v-else
49
+ :class="[
50
+ 'w-full h-full inline-block text-center font-medium ring-2 ring-white',
51
+ 'bg-' + name.color + '-100',
52
+ 'border-' + name.color + '-300',
53
+ ,
54
+ 'text-' + name.color + '-600',
55
+ rounded ? 'rounded-full' : 'rounded-md'
56
+ ]"
57
+ :style="[
58
+ size == 'medium' ? { 'line-height': '3rem' } : '',
59
+ size == 'large' ? { 'line-height': '3.5rem' } : '',
60
+ size == 'very large' ? { 'line-height': '6rem' } : '',
61
+ size == 'extraextrasmall' ? { 'font-size': '0.5rem' } : '',
62
+ size == 'extrasmall' ? { 'font-size': '0.7rem' } : '',
63
+ ]"
64
+ >
65
+ {{ name.initials }}
66
+ </div>
67
+ </div>
68
+ </template>
69
+ </div>
70
+ <div class="flex -space-x-1" v-if="nameInitials && nameInitialsWithColors.length <= 4">
71
+ <template v-for="(name, index) in nameInitialsWithColors">
72
+ <div
73
+ :key="index"
74
+ :class="[nameInitialsClasses, 'relative']"
75
+ @mouseover="handleMouseOver(index)"
76
+ @mouseleave="handleMouseLeave"
77
+ >
78
+ <c-tool-tip
79
+ v-if="showTooltipOnHover && hoveredIndex === index"
80
+ :tooltipText="name.fullName"
81
+ :isTopAligned="true"
82
+ color="#1f2937"
83
+ classes="absolute left-1/2 -translate-x-1/2 -mt-12 text-white bg-gray-800 w-max"
84
+ ></c-tool-tip>
85
+ <img
86
+ v-if="showImageWithInitials && (name.image || name.image_240)"
87
+ :class="[
88
+ 'w-full h-full object-cover',
89
+ rounded ? 'rounded-full' : 'rounded-md'
90
+ ]"
91
+ :src="name.image || name.image_240"
92
+ :alt="'Profile picture of ' + name.fullName"
93
+ />
94
+ <div
95
+ v-else
96
+ :class="[
97
+ 'w-full h-full inline-block text-center font-medium ring-2 ring-white',
98
+ 'bg-' + name.color + '-100',
99
+ 'border-' + name.color + '-300',
100
+ ,
101
+ 'text-' + name.color + '-600',
102
+ rounded ? 'rounded-full' : 'rounded-md'
103
+ ]"
104
+ :style="[
105
+ size == 'medium' ? { 'line-height': '3rem' } : '',
106
+ size == 'large' ? { 'line-height': '3.5rem' } : '',
107
+ size == 'very large' ? { 'line-height': '6rem' } : '',
108
+ size == 'extraextrasmall' ? { 'font-size': '0.5rem' } : '',
109
+ size == 'extrasmall' ? { 'font-size': '0.7rem' } : '',
110
+ ]"
111
+ >
112
+ {{ name.initials }}
113
+ </div>
114
+ </div>
115
+ </template>
116
+ </div>
117
+ <div class="ml-3 text-left" v-if="name">
118
+ <p v-if="name" class="text-sm text-gray-500">
119
+ {{ name }}
120
+ </p>
121
+ <p v-if="description" class="text-xs text-gray-500 group-hover:text-gray-700">
122
+ {{ description }}
123
+ </p>
124
+ <slot></slot>
125
+ </div>
126
+ </div>
127
+ </template>
128
+ <script>
129
+ import CToolTip from '../CToolTip/CToolTip.vue';
130
+ export default {
131
+ components: { CToolTip },
132
+ name: "CAvatarGroup",
133
+ props: {
134
+ size: {
135
+ type: String,
136
+ required: true,
137
+ default: "medium",
138
+ },
139
+ images: {
140
+ type: Array,
141
+ },
142
+ nameInitials: {
143
+ type: Array,
144
+ },
145
+ rounded: { type: Boolean },
146
+ name: { type: String },
147
+ description: { type: String },
148
+ showTooltipOnHover: {
149
+ type: Boolean,
150
+ default: false,
151
+ },
152
+ showImageWithInitials: {
153
+ type: Boolean,
154
+ default: false,
155
+ },
156
+ },
157
+ data() {
158
+ return {
159
+ colors: ["gray", "red", "yellow", "indigo", "pink", "purple", "green"],
160
+ hoveredIndex: null,
161
+ };
162
+ },
163
+ computed: {
164
+ classes() {
165
+ return {
166
+ "h-6 w-6": this.size == "extraextrasmall",
167
+ "h-8 w-8": this.size == "extrasmall",
168
+ "h-10 w-10": this.size == "small",
169
+ "h-12 w-12": this.size == "medium",
170
+ "h-14 w-14": this.size == "large",
171
+ "h-24 w-24": this.size == "very large",
172
+ "rounded-full": this.rounded == true,
173
+ "rounded-md": this.rounded == false,
174
+ };
175
+ },
176
+ nameInitialsClasses() {
177
+ return {
178
+ "h-6 w-6 leading-6": this.size == "extraextrasmall",
179
+ "h-8 w-8 leading-8": this.size == "extrasmall",
180
+ "h-10 w-10 leading-10 text-xs": this.size == "small",
181
+ "h-12 w-12 text-sm": this.size == "medium",
182
+ "h-14 w-14 text-base": this.size == "large",
183
+ "h-24 w-24 text-2xl": this.size == "very large"
184
+ };
185
+ },
186
+ nameInitialsWithColors() {
187
+ let nameWithColors = this.nameInitials;
188
+ nameWithColors.map((name) => {
189
+ name.color = this.setColors();
190
+ name.fullName = name.surname ? `${name.firstName} ${name.surname}` : name.firstName
191
+ });
192
+ return nameWithColors;
193
+ },
194
+ },
195
+ methods: {
196
+ setColors() {
197
+ this.colors = this.colors.sort(() => Math.random() - 0.5);
198
+ let show = this.colors[Math.floor(Math.random() * this.colors.length)];
199
+ return show;
200
+ },
201
+ handleMouseOver(index) {
202
+ if (this.showTooltipOnHover) {
203
+ this.hoveredIndex = index;
204
+ }
205
+ },
206
+ handleMouseLeave() {
207
+ if (this.showTooltipOnHover) {
208
+ this.hoveredIndex = null;
209
+ }
210
+ },
211
+ },
212
+ };
213
+ </script>
@@ -1,3 +1,3 @@
1
- import CAvatarGroup from './CAvatarGroup.vue'
2
-
1
+ import CAvatarGroup from './CAvatarGroup.vue'
2
+
3
3
  export default CAvatarGroup