classcard-ui 0.2.1473 → 0.2.1475

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 +413 -135
  3. package/dist/classcard-ui.common.js.map +1 -1
  4. package/dist/classcard-ui.css +2 -2
  5. package/dist/classcard-ui.umd.js +413 -135
  6. package/dist/classcard-ui.umd.js.map +1 -1
  7. package/dist/classcard-ui.umd.min.js +3 -3
  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 -937
  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 -1165
  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 +830 -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,3 +1,3 @@
1
- import CTable from './CTable.vue'
2
-
1
+ import CTable from './CTable.vue'
2
+
3
3
  export default CTable
@@ -1,250 +1,250 @@
1
- <template>
2
- <div>
3
- <slot></slot>
4
- <div class="sm:hidden" :class="tabClasses">
5
- <label for="tabs" class="sr-only">Select a tab</label>
6
- <select
7
- v-model="activeTab"
8
- @change="switchTabForMobile($event.target.selectedIndex)"
9
- class="selector-focus-class block w-full rounded-md border-gray-300 pr-6 pl-4 text-sm"
10
- :style="computedStyles"
11
- id="tabs"
12
- >
13
- <option
14
- v-for="tab in tabs"
15
- :key="tab.text"
16
- :value="tab.name"
17
- :id="getActionIDFn(tab.text)"
18
- class="text-sm"
19
- >
20
- {{ tab.text }}
21
- </option>
22
- </select>
23
- </div>
24
- <div :class="['hidden sm:block', navClasses]">
25
- <div
26
- :class="[
27
- 'flex items-center justify-between border-b border-gray-200',
28
- extraNavClasses,
29
- ]"
30
- >
31
- <nav :class="classes" class="-mb-px flex" aria-label="Tabs">
32
- <a
33
- v-for="tab in isExtraTabs ? tabsList : tabs"
34
- :key="tab.text"
35
- :id="getActionIDFn(tab.text)"
36
- @click="switchTab(tab.name)"
37
- class="group inline-flex cursor-pointer items-center whitespace-nowrap border-b-2 py-4 px-1 text-sm font-medium"
38
- :class="[
39
- activeTab == tab.name
40
- ? 'anchor-selected-class'
41
- : 'border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700',
42
- tab.isDisabled ? 'pointer-events-none opacity-50' : 'opacity-100',
43
- ]"
44
- :style="computedStyles"
45
- >
46
- <c-icon
47
- v-if="tab.icon"
48
- :name="tab.icon"
49
- class="-ml-0.5 mr-2 h-5 w-5"
50
- :class="
51
- activeTab == tab.name
52
- ? 'icon-selected-class'
53
- : 'text-gray-400 group-hover:text-gray-500 '
54
- "
55
- :style="computedStyles"
56
- :type="tab.iconType ? tab.iconType : 'solid'"
57
- :viewBox="tab.viewBox ? tab.viewBox : '0 0 20 20'"
58
- ></c-icon>
59
- <span
60
- :class="
61
- activeTab == tab.name
62
- ? 'span-selected-class'
63
- : 'text-gray-500 hover:text-gray-700'
64
- "
65
- :style="computedStyles"
66
- >
67
- {{ tab.text }}
68
- </span>
69
- <div class="ml-2" v-if="tab.count">
70
- <span
71
- :class="
72
- activeTab == tab.name
73
- ? 'count-active-class rounded-full px-2 py-0.5'
74
- : 'rounded-full bg-gray-100 px-2 py-0.5 text-gray-900'
75
- "
76
- :style="computedStyles"
77
- >
78
- {{ tab.count }}
79
- </span>
80
- </div>
81
- </a>
82
- <a
83
- v-if="extraTabsCount > 0"
84
- @click="handleMoreTabs"
85
- class="group relative inline-flex cursor-pointer items-center whitespace-nowrap border-b-2 border-transparent"
86
- >
87
- <span
88
- class="anchor-extra-tabs text-sm font-medium hover:underline"
89
- :style="computedStyles"
90
- >+{{ extraTabsCount }} more</span
91
- >
92
- <div
93
- v-if="openDropdown"
94
- class="absolute top-12 -left-32 z-10 w-44 rounded-md border border-gray-200 bg-white py-1 shadow-sm"
95
- >
96
- <p
97
- v-for="tab in extraTabs"
98
- :key="tab.text"
99
- :id="getActionIDFn(tab.text)"
100
- @click="handleSwitchTabs(tab.name)"
101
- class="py-2 px-4 text-sm text-gray-500 hover:bg-gray-100 hover:text-gray-700"
102
- >
103
- {{ tab.text }}
104
- </p>
105
- </div>
106
- </a>
107
- </nav>
108
- <div>
109
- <slot name="customComp"> </slot>
110
- </div>
111
- </div>
112
- </div>
113
- <div v-for="(tab, index) in tabs" :key="index">
114
- <div v-show="tab.name == activeTab">
115
- <slot :name="`tab-panel-${tab.name}`"></slot>
116
- </div>
117
- </div>
118
- </div>
119
- </template>
120
-
121
- <script>
122
- import { getActionID } from "../../helper";
123
- import { COLOR_CONFIG } from "../../colorConfig";
124
- // import CIcon from "../CIcon/CIcon.vue";
125
- export default {
126
- name: "CTabs",
127
- // components: { CIcon },
128
- props: {
129
- tabs: {
130
- type: Array,
131
- required: true,
132
- },
133
- id: {
134
- type: String,
135
- },
136
- initialTab: {
137
- type: String,
138
- },
139
- classes: {
140
- type: String,
141
- default: "space-x-3",
142
- },
143
- tabClasses: {
144
- type: String,
145
- },
146
- extraTabs: {
147
- type: Array,
148
- },
149
- tabsList: {
150
- type: Array,
151
- },
152
- extraTabsCount: {
153
- type: Number,
154
- },
155
- isExtraTabs: {
156
- type: Boolean,
157
- },
158
- navClasses: {
159
- type: String,
160
- default: "",
161
- },
162
- extraNavClasses: {
163
- type: String,
164
- default: "",
165
- },
166
- preferredColor: {
167
- type: String,
168
- default: "indigo",
169
- },
170
- },
171
- data() {
172
- return {
173
- activeTab: this.initialTab,
174
- openDropdown: false,
175
- };
176
- },
177
- methods: {
178
- getActionIDFn(name) {
179
- return getActionID(name, this.id);
180
- },
181
- switchTab(tabText, type = "") {
182
- this.activeTab = tabText;
183
- if (type != "handler") {
184
- this.$emit("handleTabsUpdate", tabText);
185
- }
186
- },
187
- switchTabForMobile(index) {
188
- var selectedOption = this.tabs[index];
189
- this.activeTab = selectedOption.name;
190
- },
191
- handleSwitchTabs(tab) {
192
- this.$emit("updateTabsList", tab);
193
- this.switchTab(tab, "handler");
194
- },
195
- handleMoreTabs() {
196
- this.openDropdown = !this.openDropdown;
197
- },
198
- },
199
- watch: {
200
- initialTab() {
201
- this.activeTab = this.initialTab;
202
- },
203
- },
204
- computed: {
205
- computedStyles() {
206
- const colors = COLOR_CONFIG[this.preferredColor] || COLOR_CONFIG.indigo;
207
- return {
208
- "--color-100": colors.shade100,
209
- "--color-500": colors.shade500,
210
- "--color-600": colors.shade600,
211
- "--color-700": colors.shade700,
212
- "--color-800": colors.shade800,
213
- "--color-900": colors.shade900,
214
- };
215
- },
216
- },
217
- };
218
- </script>
219
-
220
- <style scoped>
221
- .selector-focus-class:focus {
222
- outline: none;
223
- box-shadow: 0 0 0 2px white, 0 0 0 4px var(--color-500) !important;
224
- border-color: var(--color-500);
225
- }
226
- .anchor-selected-class {
227
- border-color: var(--color-600);
228
- color: var(--color-700);
229
- }
230
- .anchor-selected-class:hover {
231
- color: var(--color-800);
232
- }
233
- .icon-selected-class {
234
- color: var(--color-700);
235
- }
236
- .icon-selected-class:group-hover {
237
- color: var(--color-800);
238
- }
239
- .span-selected-class {
240
- color: var(--color-700);
241
- }
242
-
243
- .count-active-class {
244
- background-color: var(--color-100);
245
- color: var(--color-900);
246
- }
247
- .anchor-extra-tabs {
248
- color: var(--color-800);
249
- }
250
- </style>
1
+ <template>
2
+ <div>
3
+ <slot></slot>
4
+ <div class="sm:hidden" :class="tabClasses">
5
+ <label for="tabs" class="sr-only">Select a tab</label>
6
+ <select
7
+ v-model="activeTab"
8
+ @change="switchTabForMobile($event.target.selectedIndex)"
9
+ class="selector-focus-class block w-full rounded-md border-gray-300 pr-6 pl-4 text-sm"
10
+ :style="computedStyles"
11
+ id="tabs"
12
+ >
13
+ <option
14
+ v-for="tab in tabs"
15
+ :key="tab.text"
16
+ :value="tab.name"
17
+ :id="getActionIDFn(tab.text)"
18
+ class="text-sm"
19
+ >
20
+ {{ tab.text }}
21
+ </option>
22
+ </select>
23
+ </div>
24
+ <div :class="['hidden sm:block', navClasses]">
25
+ <div
26
+ :class="[
27
+ 'flex items-center justify-between border-b border-gray-200',
28
+ extraNavClasses,
29
+ ]"
30
+ >
31
+ <nav :class="classes" class="-mb-px flex" aria-label="Tabs">
32
+ <a
33
+ v-for="tab in isExtraTabs ? tabsList : tabs"
34
+ :key="tab.text"
35
+ :id="getActionIDFn(tab.text)"
36
+ @click="switchTab(tab.name)"
37
+ class="group inline-flex cursor-pointer items-center whitespace-nowrap border-b-2 py-4 px-1 text-sm font-medium"
38
+ :class="[
39
+ activeTab == tab.name
40
+ ? 'anchor-selected-class'
41
+ : 'border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700',
42
+ tab.isDisabled ? 'pointer-events-none opacity-50' : 'opacity-100',
43
+ ]"
44
+ :style="computedStyles"
45
+ >
46
+ <c-icon
47
+ v-if="tab.icon"
48
+ :name="tab.icon"
49
+ class="-ml-0.5 mr-2 h-5 w-5"
50
+ :class="
51
+ activeTab == tab.name
52
+ ? 'icon-selected-class'
53
+ : 'text-gray-400 group-hover:text-gray-500 '
54
+ "
55
+ :style="computedStyles"
56
+ :type="tab.iconType ? tab.iconType : 'solid'"
57
+ :viewBox="tab.viewBox ? tab.viewBox : '0 0 20 20'"
58
+ ></c-icon>
59
+ <span
60
+ :class="
61
+ activeTab == tab.name
62
+ ? 'span-selected-class'
63
+ : 'text-gray-500 hover:text-gray-700'
64
+ "
65
+ :style="computedStyles"
66
+ >
67
+ {{ tab.text }}
68
+ </span>
69
+ <div class="ml-2" v-if="tab.count">
70
+ <span
71
+ :class="
72
+ activeTab == tab.name
73
+ ? 'count-active-class rounded-full px-2 py-0.5'
74
+ : 'rounded-full bg-gray-100 px-2 py-0.5 text-gray-900'
75
+ "
76
+ :style="computedStyles"
77
+ >
78
+ {{ tab.count }}
79
+ </span>
80
+ </div>
81
+ </a>
82
+ <a
83
+ v-if="extraTabsCount > 0"
84
+ @click="handleMoreTabs"
85
+ class="group relative inline-flex cursor-pointer items-center whitespace-nowrap border-b-2 border-transparent"
86
+ >
87
+ <span
88
+ class="anchor-extra-tabs text-sm font-medium hover:underline"
89
+ :style="computedStyles"
90
+ >+{{ extraTabsCount }} more</span
91
+ >
92
+ <div
93
+ v-if="openDropdown"
94
+ class="absolute top-12 -left-32 z-10 w-44 rounded-md border border-gray-200 bg-white py-1 shadow-sm"
95
+ >
96
+ <p
97
+ v-for="tab in extraTabs"
98
+ :key="tab.text"
99
+ :id="getActionIDFn(tab.text)"
100
+ @click="handleSwitchTabs(tab.name)"
101
+ class="py-2 px-4 text-sm text-gray-500 hover:bg-gray-100 hover:text-gray-700"
102
+ >
103
+ {{ tab.text }}
104
+ </p>
105
+ </div>
106
+ </a>
107
+ </nav>
108
+ <div>
109
+ <slot name="customComp"> </slot>
110
+ </div>
111
+ </div>
112
+ </div>
113
+ <div v-for="(tab, index) in tabs" :key="index">
114
+ <div v-show="tab.name == activeTab">
115
+ <slot :name="`tab-panel-${tab.name}`"></slot>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ </template>
120
+
121
+ <script>
122
+ import { getActionID } from "../../helper";
123
+ import { COLOR_CONFIG } from "../../colorConfig";
124
+ // import CIcon from "../CIcon/CIcon.vue";
125
+ export default {
126
+ name: "CTabs",
127
+ // components: { CIcon },
128
+ props: {
129
+ tabs: {
130
+ type: Array,
131
+ required: true,
132
+ },
133
+ id: {
134
+ type: String,
135
+ },
136
+ initialTab: {
137
+ type: String,
138
+ },
139
+ classes: {
140
+ type: String,
141
+ default: "space-x-3",
142
+ },
143
+ tabClasses: {
144
+ type: String,
145
+ },
146
+ extraTabs: {
147
+ type: Array,
148
+ },
149
+ tabsList: {
150
+ type: Array,
151
+ },
152
+ extraTabsCount: {
153
+ type: Number,
154
+ },
155
+ isExtraTabs: {
156
+ type: Boolean,
157
+ },
158
+ navClasses: {
159
+ type: String,
160
+ default: "",
161
+ },
162
+ extraNavClasses: {
163
+ type: String,
164
+ default: "",
165
+ },
166
+ preferredColor: {
167
+ type: String,
168
+ default: "indigo",
169
+ },
170
+ },
171
+ data() {
172
+ return {
173
+ activeTab: this.initialTab,
174
+ openDropdown: false,
175
+ };
176
+ },
177
+ methods: {
178
+ getActionIDFn(name) {
179
+ return getActionID(name, this.id);
180
+ },
181
+ switchTab(tabText, type = "") {
182
+ this.activeTab = tabText;
183
+ if (type != "handler") {
184
+ this.$emit("handleTabsUpdate", tabText);
185
+ }
186
+ },
187
+ switchTabForMobile(index) {
188
+ var selectedOption = this.tabs[index];
189
+ this.activeTab = selectedOption.name;
190
+ },
191
+ handleSwitchTabs(tab) {
192
+ this.$emit("updateTabsList", tab);
193
+ this.switchTab(tab, "handler");
194
+ },
195
+ handleMoreTabs() {
196
+ this.openDropdown = !this.openDropdown;
197
+ },
198
+ },
199
+ watch: {
200
+ initialTab() {
201
+ this.activeTab = this.initialTab;
202
+ },
203
+ },
204
+ computed: {
205
+ computedStyles() {
206
+ const colors = COLOR_CONFIG[this.preferredColor] || COLOR_CONFIG.indigo;
207
+ return {
208
+ "--color-100": colors.shade100,
209
+ "--color-500": colors.shade500,
210
+ "--color-600": colors.shade600,
211
+ "--color-700": colors.shade700,
212
+ "--color-800": colors.shade800,
213
+ "--color-900": colors.shade900,
214
+ };
215
+ },
216
+ },
217
+ };
218
+ </script>
219
+
220
+ <style scoped>
221
+ .selector-focus-class:focus {
222
+ outline: none;
223
+ box-shadow: 0 0 0 2px white, 0 0 0 4px var(--color-500) !important;
224
+ border-color: var(--color-500);
225
+ }
226
+ .anchor-selected-class {
227
+ border-color: var(--color-600);
228
+ color: var(--color-700);
229
+ }
230
+ .anchor-selected-class:hover {
231
+ color: var(--color-800);
232
+ }
233
+ .icon-selected-class {
234
+ color: var(--color-700);
235
+ }
236
+ .icon-selected-class:group-hover {
237
+ color: var(--color-800);
238
+ }
239
+ .span-selected-class {
240
+ color: var(--color-700);
241
+ }
242
+
243
+ .count-active-class {
244
+ background-color: var(--color-100);
245
+ color: var(--color-900);
246
+ }
247
+ .anchor-extra-tabs {
248
+ color: var(--color-800);
249
+ }
250
+ </style>
@@ -1,3 +1,3 @@
1
- import CTabs from './CTabs.vue'
2
-
1
+ import CTabs from './CTabs.vue'
2
+
3
3
  export default CTabs