classcard-ui 0.2.985 → 0.2.986

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 (188) hide show
  1. package/README.md +24 -24
  2. package/dist/classcard-ui.common.js +70 -58
  3. package/dist/classcard-ui.common.js.map +1 -1
  4. package/dist/classcard-ui.umd.js +70 -58
  5. package/dist/classcard-ui.umd.js.map +1 -1
  6. package/dist/classcard-ui.umd.min.js +1 -1
  7. package/dist/classcard-ui.umd.min.js.map +1 -1
  8. package/package.json +82 -82
  9. package/src/.DS_Store +0 -0
  10. package/src/App.vue +16 -16
  11. package/src/components/CAlerts/CAlerts.vue +70 -70
  12. package/src/components/CAlerts/index.js +2 -2
  13. package/src/components/CAnchorTabs/CAnchorTabs.vue +96 -96
  14. package/src/components/CAnchorTabs/index.js +2 -2
  15. package/src/components/CAnchorTag/CAnchorTag.vue +62 -62
  16. package/src/components/CAnchorTag/index.js +2 -2
  17. package/src/components/CAvatar/CAvatar.vue +136 -136
  18. package/src/components/CAvatar/index.js +2 -2
  19. package/src/components/CAvatarGroup/CAvatarGroup.vue +145 -145
  20. package/src/components/CAvatarGroup/index.js +2 -2
  21. package/src/components/CBasicTable/CBasicTable.vue +184 -184
  22. package/src/components/CBasicTable/index.js +2 -2
  23. package/src/components/CBreadcrumbs/CBreadcrumbs.vue +38 -38
  24. package/src/components/CBreadcrumbs/index.js +2 -2
  25. package/src/components/CButton/CButton.vue +152 -152
  26. package/src/components/CButton/index.js +2 -2
  27. package/src/components/CButtonGroup/CButtonGroup.vue +118 -118
  28. package/src/components/CButtonGroup/index.js +2 -2
  29. package/src/components/CButtonIcon/CButtonIcon.vue +117 -117
  30. package/src/components/CButtonIcon/index.js +2 -2
  31. package/src/components/CButtonLink/CButtonLink.vue +39 -39
  32. package/src/components/CButtonLink/index.js +2 -2
  33. package/src/components/CButtonSelect/CButtonSelect.vue +124 -124
  34. package/src/components/CButtonSelect/index.js +2 -2
  35. package/src/components/CButtonSelectBorder/CButtonSelectBorder.vue +135 -135
  36. package/src/components/CButtonSelectBorder/index.js +3 -3
  37. package/src/components/CButtonWithDropdown/CButtonWithDropdown.vue +135 -135
  38. package/src/components/CButtonWithDropdown/index.js +2 -2
  39. package/src/components/CCalendar/CCalendar.vue +410 -410
  40. package/src/components/CCalendar/index.js +3 -3
  41. package/src/components/CCard/CCard.vue +49 -49
  42. package/src/components/CCard/index.js +2 -2
  43. package/src/components/CCheckbox/CCheckbox.vue +85 -85
  44. package/src/components/CCheckbox/index.js +2 -2
  45. package/src/components/CCircularButton/CCircularButton.vue +52 -52
  46. package/src/components/CCircularButton/index.js +2 -2
  47. package/src/components/CCollapsibleSection/CCollapsibleSection.vue +101 -101
  48. package/src/components/CCollapsibleSection/index.js +2 -2
  49. package/src/components/CColorDots/CColorDots.vue +46 -46
  50. package/src/components/CColorDots/index.js +3 -3
  51. package/src/components/CConfirmActionModal/CConfirmActionModal.vue +171 -171
  52. package/src/components/CConfirmActionModal/index.js +3 -3
  53. package/src/components/CDatepicker/CDatepicker.vue +158 -158
  54. package/src/components/CDatepicker/index.js +2 -2
  55. package/src/components/CDualSelect/CDualSelect.vue +193 -193
  56. package/src/components/CDualSelect/index.js +2 -2
  57. package/src/components/CEditor/CEditor.vue +98 -98
  58. package/src/components/CEditor/index.js +2 -2
  59. package/src/components/CFormSectionHeading/CFormSectionHeading.vue +53 -53
  60. package/src/components/CFormSectionHeading/index.js +2 -2
  61. package/src/components/CGroupedSelect/CGroupedSelect.vue +245 -245
  62. package/src/components/CGroupedSelect/index.js +3 -3
  63. package/src/components/CIcon/CIcon.vue +77 -77
  64. package/src/components/CIcon/index.js +2 -2
  65. package/src/components/CIconDropdown/CIconDropdown.vue +131 -120
  66. package/src/components/CIconDropdown/index.js +2 -2
  67. package/src/components/CInput/CInput.vue +134 -134
  68. package/src/components/CInput/index.js +2 -2
  69. package/src/components/CInputAddon/CInputAddon.vue +228 -228
  70. package/src/components/CInputAddon/index.js +2 -2
  71. package/src/components/CInputEmail/CInputEmail.vue +93 -93
  72. package/src/components/CInputEmail/index.js +2 -2
  73. package/src/components/CInsetTabs/CInsetTabs.vue +88 -88
  74. package/src/components/CInsetTabs/index.js +3 -3
  75. package/src/components/CModalHeading/CModalHeading.vue +22 -22
  76. package/src/components/CModalHeading/index.js +2 -2
  77. package/src/components/CModuleHelpLinks/CModuleHelpLinks.vue +70 -70
  78. package/src/components/CModuleHelpLinks/index.js +3 -3
  79. package/src/components/CMultiselect/CMultiselect.vue +479 -479
  80. package/src/components/CMultiselect/index.js +2 -2
  81. package/src/components/CMultiselectr/CMultiselectr.vue +44 -44
  82. package/src/components/CMultiselectr/index.js +2 -2
  83. package/src/components/CPageHeading/CPageHeading.vue +56 -56
  84. package/src/components/CPageHeading/index.js +2 -2
  85. package/src/components/CPagination/CPagination.vue +233 -233
  86. package/src/components/CPagination/index.js +2 -2
  87. package/src/components/CPhoneNumber/CPhoneNumber.vue +114 -114
  88. package/src/components/CPhoneNumber/index.js +2 -2
  89. package/src/components/CRadio/CRadio.vue +124 -124
  90. package/src/components/CRadio/index.js +2 -2
  91. package/src/components/CRangeSlider/CRangeSlider.vue +55 -55
  92. package/src/components/CRangeSlider/index.js +2 -2
  93. package/src/components/CReorderableStackedList/CReorderableStackedList.vue +94 -94
  94. package/src/components/CReorderableStackedList/index.js +2 -2
  95. package/src/components/CSelect/CSelect.vue +417 -417
  96. package/src/components/CSelect/index.js +2 -2
  97. package/src/components/CSmallTimeline/CSmallTimeline.vue +40 -40
  98. package/src/components/CSmallTimeline/index.js +2 -2
  99. package/src/components/CStackedList/CStackedList.vue +150 -150
  100. package/src/components/CStackedList/index.js +2 -2
  101. package/src/components/CStats/CStats.vue +116 -116
  102. package/src/components/CStats/index.js +2 -2
  103. package/src/components/CSwitch/CSwitch.vue +171 -171
  104. package/src/components/CSwitch/index.js +2 -2
  105. package/src/components/CTabLazy/CTabLazy.vue +58 -58
  106. package/src/components/CTabLazy/index.js +2 -2
  107. package/src/components/CTable/CTable.vue +671 -671
  108. package/src/components/CTable/index.js +2 -2
  109. package/src/components/CTabs/CTabs.vue +125 -125
  110. package/src/components/CTabs/index.js +2 -2
  111. package/src/components/CTag/CTag.vue +59 -59
  112. package/src/components/CTag/index.js +2 -2
  113. package/src/components/CTextarea/CTextarea.vue +107 -107
  114. package/src/components/CTextarea/index.js +2 -2
  115. package/src/components/CTimeline/CTimeline.vue +237 -237
  116. package/src/components/CTimeline/index.js +2 -2
  117. package/src/components/CUpload/CUpload.vue +267 -267
  118. package/src/components/CUpload/index.js +2 -2
  119. package/src/components/index.js +52 -52
  120. package/src/icons.js +364 -364
  121. package/src/main.js +22 -22
  122. package/src/stories/CAlerts.stories.js +37 -37
  123. package/src/stories/CAnchorTabs.stories.js +29 -29
  124. package/src/stories/CAnchorTag.stories.js +36 -36
  125. package/src/stories/CAvatar.stories.js +38 -38
  126. package/src/stories/CAvatarGroup.stories.js +100 -100
  127. package/src/stories/CBasicTable.stories.js +316 -316
  128. package/src/stories/CBreadcrumbs.stories.js +24 -24
  129. package/src/stories/CButton.stories.js +47 -47
  130. package/src/stories/CButtonGroup.stories.js +33 -33
  131. package/src/stories/CButtonIcon.stories.js +27 -27
  132. package/src/stories/CButtonLink.stories.js +24 -24
  133. package/src/stories/CButtonSelect.stories.js +41 -41
  134. package/src/stories/CButtonSelectBorder.stories.js +48 -48
  135. package/src/stories/CButtonWithDropdown.stories.js +41 -41
  136. package/src/stories/CCalendar.stories.js +16 -16
  137. package/src/stories/CCard.stories.js +30 -30
  138. package/src/stories/CCheckbox.stories.js +29 -29
  139. package/src/stories/CCircularButton.stories.js +29 -29
  140. package/src/stories/CCollapsibleSection.stories.js +28 -28
  141. package/src/stories/CColorDots.stories.js +28 -28
  142. package/src/stories/CConfirmActionModal.stories.js +59 -59
  143. package/src/stories/CDatepicker.stories.js +30 -30
  144. package/src/stories/CDualSelect.stories.js +29 -29
  145. package/src/stories/CEditor.stories.js +30 -30
  146. package/src/stories/CFormSectionHeading.stories.js +34 -34
  147. package/src/stories/CGroupedSelect.stories.js +71 -71
  148. package/src/stories/CIcon.stories.js +26 -26
  149. package/src/stories/CIconDropdown.stories.js +45 -45
  150. package/src/stories/CInput.stories.js +36 -36
  151. package/src/stories/CInputAddon.stories.js +37 -37
  152. package/src/stories/CInputEmail.stories.js +27 -27
  153. package/src/stories/CInsetTabs.stories.js +38 -38
  154. package/src/stories/CModalHeading.stories.js +25 -25
  155. package/src/stories/CModuleHelpLinks.stories.js +25 -25
  156. package/src/stories/CMultiselect.stories.js +157 -157
  157. package/src/stories/CMultiselectr.stories.js +23 -23
  158. package/src/stories/CPageHeading.stories.js +32 -32
  159. package/src/stories/CPagination.stories.js +30 -30
  160. package/src/stories/CPhoneNumber.stories.js +29 -29
  161. package/src/stories/CRadio.stories.js +36 -36
  162. package/src/stories/CRangeSlider.stories.js +23 -23
  163. package/src/stories/CReorderableStackedList.stories.js +23 -23
  164. package/src/stories/CSelect.stories.js +96 -96
  165. package/src/stories/CSmallTimeline.stories.js +26 -26
  166. package/src/stories/CStackedList.stories.js +37 -37
  167. package/src/stories/CStats.stories.js +33 -33
  168. package/src/stories/CSwitch.stories.js +28 -28
  169. package/src/stories/CTabLazy.stories.js +24 -24
  170. package/src/stories/CTable.stories.js +169 -169
  171. package/src/stories/CTabs.stories.js +33 -33
  172. package/src/stories/CTag.stories.js +34 -34
  173. package/src/stories/CTextarea.stories.js +32 -32
  174. package/src/stories/CTimeline.stories.js +26 -26
  175. package/src/stories/CUpload.stories.js +36 -36
  176. package/src/stories/Introduction.stories.mdx +207 -207
  177. package/src/stories/Page.vue +88 -88
  178. package/src/stories/assets/code-brackets.svg +0 -0
  179. package/src/stories/assets/colors.svg +0 -0
  180. package/src/stories/assets/comments.svg +0 -0
  181. package/src/stories/assets/direction.svg +0 -0
  182. package/src/stories/assets/flow.svg +0 -0
  183. package/src/stories/assets/plugin.svg +0 -0
  184. package/src/stories/assets/repo.svg +0 -0
  185. package/src/stories/assets/stackalt.svg +0 -0
  186. package/src/stories/header.css +26 -26
  187. package/src/stories/page.css +69 -69
  188. package/src/stories/utils.css +17 -17
@@ -1,171 +1,171 @@
1
- <template>
2
- <div>
3
- <!-- small toggle -->
4
- <div
5
- v-if="size === 'small'"
6
- :class="[
7
- label == '' ? 'items-center' : 'items-start',
8
- disabled ? 'cursor-default' : 'cursor-pointer',
9
- ]"
10
- class="flex"
11
- >
12
- <span
13
- class="mr-2 flex flex-grow flex-col"
14
- id="smallleft"
15
- v-if="direction == 'left'"
16
- @click="switchValue"
17
- >
18
- <span v-if="label" :class="classes" class="text-gray-900">{{
19
- label
20
- }}</span>
21
- <span v-if="description" class="text-sm text-gray-500">{{
22
- description
23
- }}</span>
24
- </span>
25
- <button
26
- type="button"
27
- class="group disabled-pointer-events-none relative inline-flex h-5 w-10 flex-shrink-0 cursor-pointer items-center justify-center rounded-full focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 disabled:cursor-default disabled:opacity-50"
28
- aria-pressed="false"
29
- @click="switchValue"
30
- :disabled="disabled"
31
- >
32
- <span class="sr-only">Use setting</span>
33
- <span
34
- aria-hidden="true"
35
- class="pointer-events-none absolute h-full w-full rounded-md"
36
- ></span>
37
- <span
38
- aria-hidden="true"
39
- :class="{
40
- 'bg-indigo-600': isToggle,
41
- 'bg-gray-200': !isToggle || isToggle === undefined,
42
- }"
43
- class="pointer-events-none absolute mx-auto h-4 w-9 rounded-full transition-colors duration-200 ease-in-out"
44
- ></span>
45
- <span
46
- aria-hidden="true"
47
- :class="{ 'translate-x-5': isToggle, 'translate-x-0': !isToggle }"
48
- class="pointer-events-none absolute left-0 inline-block h-5 w-5 transform rounded-full border border-gray-200 bg-white ring-0 transition-transform duration-200 ease-in-out"
49
- ></span>
50
- </button>
51
- <span
52
- class="ml-2 flex flex-col"
53
- id="toggleLabel"
54
- v-if="direction == 'right'"
55
- @click="switchValue"
56
- >
57
- <span v-if="label" :class="classes" class="text-gray-900">{{
58
- label
59
- }}</span>
60
- <span v-if="description" class="text-sm text-gray-500">{{
61
- description
62
- }}</span>
63
- </span>
64
- </div>
65
- <!-- large toggle -->
66
- <div
67
- v-else
68
- :class="label == '' ? 'items-center' : 'items-start'"
69
- class="flex cursor-pointer justify-between"
70
- >
71
- <span
72
- class="mr-2 flex flex-grow flex-col"
73
- id="toggleLabel"
74
- v-if="direction == 'left'"
75
- @click="switchValue"
76
- >
77
- <span v-if="label" :class="classes" class="text-gray-900">{{
78
- label
79
- }}</span>
80
- <span v-if="description" class="text-sm text-gray-500">{{
81
- description
82
- }}</span>
83
- </span>
84
- <button
85
- type="button"
86
- aria-pressed="false"
87
- :class="{
88
- 'bg-indigo-600': isToggle == 1,
89
- 'bg-gray-200': isToggle == 0 || isToggle === undefined,
90
- 'cursor-default': disabled,
91
- 'cursor-pointer': !disabled,
92
- }"
93
- @click.stop="switchValue"
94
- class="relative inline-flex h-6 w-11 flex-shrink-0 rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"
95
- :disabled="disabled"
96
- >
97
- <span class="sr-only">Use setting</span>
98
- <span
99
- aria-hidden="true"
100
- :class="{
101
- 'translate-x-5': isToggle == 1,
102
- 'translate-x-0': isToggle == 0,
103
- }"
104
- class="inline-block h-5 w-5 transform rounded-full bg-white ring-0 transition duration-200 ease-in-out"
105
- ></span>
106
- </button>
107
- <span
108
- class="ml-2 flex flex-col disabled:opacity-50"
109
- id="toggleLabel"
110
- v-if="direction == 'right'"
111
- >
112
- <span v-if="label" :class="classes" class="text-gray-900">{{
113
- label
114
- }}</span>
115
- <span v-if="description" class="text-sm text-gray-500">{{
116
- description
117
- }}</span>
118
- </span>
119
- </div>
120
- </div>
121
- </template>
122
-
123
- <script>
124
- export default {
125
- name: "CSwitch",
126
- components: {},
127
- props: {
128
- label: {
129
- type: String,
130
- },
131
- description: {
132
- type: String,
133
- },
134
- returnToggleValue: {
135
- type: Function,
136
- },
137
- classes: {
138
- type: String,
139
- },
140
- value: { type: Number },
141
- size: {
142
- type: String,
143
- },
144
- direction: {
145
- type: String,
146
- },
147
- disabled: {
148
- type: Boolean,
149
- default: false,
150
- },
151
- },
152
- data() {
153
- return {
154
- isToggle: this.value,
155
- };
156
- },
157
- methods: {
158
- switchValue() {
159
- this.isToggle = this.isToggle === 1 ? 0 : 1;
160
- this.$emit("returnToggleValue", this.isToggle);
161
- },
162
- },
163
- watch: {
164
- value() {
165
- this.isToggle = this.value;
166
- },
167
- },
168
- };
169
- </script>
170
-
171
- <style></style>
1
+ <template>
2
+ <div>
3
+ <!-- small toggle -->
4
+ <div
5
+ v-if="size === 'small'"
6
+ :class="[
7
+ label == '' ? 'items-center' : 'items-start',
8
+ disabled ? 'cursor-default' : 'cursor-pointer',
9
+ ]"
10
+ class="flex"
11
+ >
12
+ <span
13
+ class="mr-2 flex flex-grow flex-col"
14
+ id="smallleft"
15
+ v-if="direction == 'left'"
16
+ @click="switchValue"
17
+ >
18
+ <span v-if="label" :class="classes" class="text-gray-900">{{
19
+ label
20
+ }}</span>
21
+ <span v-if="description" class="text-sm text-gray-500">{{
22
+ description
23
+ }}</span>
24
+ </span>
25
+ <button
26
+ type="button"
27
+ class="group disabled-pointer-events-none relative inline-flex h-5 w-10 flex-shrink-0 cursor-pointer items-center justify-center rounded-full focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 disabled:cursor-default disabled:opacity-50"
28
+ aria-pressed="false"
29
+ @click="switchValue"
30
+ :disabled="disabled"
31
+ >
32
+ <span class="sr-only">Use setting</span>
33
+ <span
34
+ aria-hidden="true"
35
+ class="pointer-events-none absolute h-full w-full rounded-md"
36
+ ></span>
37
+ <span
38
+ aria-hidden="true"
39
+ :class="{
40
+ 'bg-indigo-600': isToggle,
41
+ 'bg-gray-200': !isToggle || isToggle === undefined,
42
+ }"
43
+ class="pointer-events-none absolute mx-auto h-4 w-9 rounded-full transition-colors duration-200 ease-in-out"
44
+ ></span>
45
+ <span
46
+ aria-hidden="true"
47
+ :class="{ 'translate-x-5': isToggle, 'translate-x-0': !isToggle }"
48
+ class="pointer-events-none absolute left-0 inline-block h-5 w-5 transform rounded-full border border-gray-200 bg-white ring-0 transition-transform duration-200 ease-in-out"
49
+ ></span>
50
+ </button>
51
+ <span
52
+ class="ml-2 flex flex-col"
53
+ id="toggleLabel"
54
+ v-if="direction == 'right'"
55
+ @click="switchValue"
56
+ >
57
+ <span v-if="label" :class="classes" class="text-gray-900">{{
58
+ label
59
+ }}</span>
60
+ <span v-if="description" class="text-sm text-gray-500">{{
61
+ description
62
+ }}</span>
63
+ </span>
64
+ </div>
65
+ <!-- large toggle -->
66
+ <div
67
+ v-else
68
+ :class="label == '' ? 'items-center' : 'items-start'"
69
+ class="flex cursor-pointer justify-between"
70
+ >
71
+ <span
72
+ class="mr-2 flex flex-grow flex-col"
73
+ id="toggleLabel"
74
+ v-if="direction == 'left'"
75
+ @click="switchValue"
76
+ >
77
+ <span v-if="label" :class="classes" class="text-gray-900">{{
78
+ label
79
+ }}</span>
80
+ <span v-if="description" class="text-sm text-gray-500">{{
81
+ description
82
+ }}</span>
83
+ </span>
84
+ <button
85
+ type="button"
86
+ aria-pressed="false"
87
+ :class="{
88
+ 'bg-indigo-600': isToggle == 1,
89
+ 'bg-gray-200': isToggle == 0 || isToggle === undefined,
90
+ 'cursor-default': disabled,
91
+ 'cursor-pointer': !disabled,
92
+ }"
93
+ @click.stop="switchValue"
94
+ class="relative inline-flex h-6 w-11 flex-shrink-0 rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"
95
+ :disabled="disabled"
96
+ >
97
+ <span class="sr-only">Use setting</span>
98
+ <span
99
+ aria-hidden="true"
100
+ :class="{
101
+ 'translate-x-5': isToggle == 1,
102
+ 'translate-x-0': isToggle == 0,
103
+ }"
104
+ class="inline-block h-5 w-5 transform rounded-full bg-white ring-0 transition duration-200 ease-in-out"
105
+ ></span>
106
+ </button>
107
+ <span
108
+ class="ml-2 flex flex-col disabled:opacity-50"
109
+ id="toggleLabel"
110
+ v-if="direction == 'right'"
111
+ >
112
+ <span v-if="label" :class="classes" class="text-gray-900">{{
113
+ label
114
+ }}</span>
115
+ <span v-if="description" class="text-sm text-gray-500">{{
116
+ description
117
+ }}</span>
118
+ </span>
119
+ </div>
120
+ </div>
121
+ </template>
122
+
123
+ <script>
124
+ export default {
125
+ name: "CSwitch",
126
+ components: {},
127
+ props: {
128
+ label: {
129
+ type: String,
130
+ },
131
+ description: {
132
+ type: String,
133
+ },
134
+ returnToggleValue: {
135
+ type: Function,
136
+ },
137
+ classes: {
138
+ type: String,
139
+ },
140
+ value: { type: Number },
141
+ size: {
142
+ type: String,
143
+ },
144
+ direction: {
145
+ type: String,
146
+ },
147
+ disabled: {
148
+ type: Boolean,
149
+ default: false,
150
+ },
151
+ },
152
+ data() {
153
+ return {
154
+ isToggle: this.value,
155
+ };
156
+ },
157
+ methods: {
158
+ switchValue() {
159
+ this.isToggle = this.isToggle === 1 ? 0 : 1;
160
+ this.$emit("returnToggleValue", this.isToggle);
161
+ },
162
+ },
163
+ watch: {
164
+ value() {
165
+ this.isToggle = this.value;
166
+ },
167
+ },
168
+ };
169
+ </script>
170
+
171
+ <style></style>
@@ -1,3 +1,3 @@
1
- import CSwitch from './CSwitch.vue'
2
-
1
+ import CSwitch from './CSwitch.vue'
2
+
3
3
  export default CSwitch
@@ -1,58 +1,58 @@
1
- <template>
2
- <div>
3
- <div class="border-b border-gray-200">
4
- <div class="mt-2 max-w-5xl pr-4">
5
- <nav class="-mb-px flex space-x-8" aria-label="Tabs">
6
- <button
7
- v-for="(tab, i) in tabs"
8
- :key="i"
9
- :class="[
10
- activeTab === tab
11
- ? 'border-b-2 border-indigo-500 text-indigo-500'
12
- : 'border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700',
13
- 'whitespace-nowrap py-4 px-1 text-sm font-medium',
14
- ]"
15
- @click="handleChangeTab(tab)"
16
- aria-current="page"
17
- >
18
- {{ tab }}
19
- </button>
20
- </nav>
21
- </div>
22
- </div>
23
- <div>
24
- <component
25
- :is="currentTabComponent"
26
- :currentTabComponent="currentTabComponent"
27
- :activeTab="activeTab"
28
- />
29
- </div>
30
- </div>
31
- </template>
32
-
33
- <script>
34
- export default {
35
- name: "CTabLazy",
36
- props: {
37
- tabs: {
38
- type: Array,
39
- required: true,
40
- },
41
- currentTabComponent: {
42
- type: String,
43
- required: true,
44
- },
45
- },
46
- data() {
47
- return {
48
- activeTab: this.tabs[0],
49
- };
50
- },
51
- methods: {
52
- handleChangeTab(tab) {
53
- this.activeTab = tab;
54
- this.$emit("switcTab", this.activeTab);
55
- },
56
- },
57
- };
58
- </script>
1
+ <template>
2
+ <div>
3
+ <div class="border-b border-gray-200">
4
+ <div class="mt-2 max-w-5xl pr-4">
5
+ <nav class="-mb-px flex space-x-8" aria-label="Tabs">
6
+ <button
7
+ v-for="(tab, i) in tabs"
8
+ :key="i"
9
+ :class="[
10
+ activeTab === tab
11
+ ? 'border-b-2 border-indigo-500 text-indigo-500'
12
+ : 'border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700',
13
+ 'whitespace-nowrap py-4 px-1 text-sm font-medium',
14
+ ]"
15
+ @click="handleChangeTab(tab)"
16
+ aria-current="page"
17
+ >
18
+ {{ tab }}
19
+ </button>
20
+ </nav>
21
+ </div>
22
+ </div>
23
+ <div>
24
+ <component
25
+ :is="currentTabComponent"
26
+ :currentTabComponent="currentTabComponent"
27
+ :activeTab="activeTab"
28
+ />
29
+ </div>
30
+ </div>
31
+ </template>
32
+
33
+ <script>
34
+ export default {
35
+ name: "CTabLazy",
36
+ props: {
37
+ tabs: {
38
+ type: Array,
39
+ required: true,
40
+ },
41
+ currentTabComponent: {
42
+ type: String,
43
+ required: true,
44
+ },
45
+ },
46
+ data() {
47
+ return {
48
+ activeTab: this.tabs[0],
49
+ };
50
+ },
51
+ methods: {
52
+ handleChangeTab(tab) {
53
+ this.activeTab = tab;
54
+ this.$emit("switcTab", this.activeTab);
55
+ },
56
+ },
57
+ };
58
+ </script>
@@ -1,2 +1,2 @@
1
- import CTabLazy from "./CTabLazy.vue";
2
- export default CTabLazy;
1
+ import CTabLazy from "./CTabLazy.vue";
2
+ export default CTabLazy;