classcard-ui 0.2.606 → 0.2.607

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 (175) hide show
  1. package/README.md +24 -24
  2. package/dist/classcard-ui.common.js +53 -53
  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 +53 -53
  6. package/dist/classcard-ui.umd.js.map +1 -1
  7. package/dist/classcard-ui.umd.min.js.map +1 -1
  8. package/package.json +81 -81
  9. package/src/App.vue +16 -16
  10. package/src/components/CAlerts/CAlerts.vue +70 -70
  11. package/src/components/CAlerts/index.js +2 -2
  12. package/src/components/CAnchorTabs/CAnchorTabs.vue +96 -96
  13. package/src/components/CAnchorTabs/index.js +2 -2
  14. package/src/components/CAnchorTag/CAnchorTag.vue +62 -62
  15. package/src/components/CAnchorTag/index.js +2 -2
  16. package/src/components/CAvatar/CAvatar.vue +89 -89
  17. package/src/components/CAvatar/index.js +2 -2
  18. package/src/components/CAvatarGroup/CAvatarGroup.vue +145 -145
  19. package/src/components/CAvatarGroup/index.js +2 -2
  20. package/src/components/CBasicTable/CBasicTable.vue +184 -184
  21. package/src/components/CBasicTable/index.js +2 -2
  22. package/src/components/CBreadcrumbs/CBreadcrumbs.vue +38 -38
  23. package/src/components/CBreadcrumbs/index.js +2 -2
  24. package/src/components/CButton/CButton.vue +147 -147
  25. package/src/components/CButton/index.js +2 -2
  26. package/src/components/CButtonGroup/CButtonGroup.vue +116 -116
  27. package/src/components/CButtonGroup/index.js +2 -2
  28. package/src/components/CButtonIcon/CButtonIcon.vue +91 -91
  29. package/src/components/CButtonIcon/index.js +2 -2
  30. package/src/components/CButtonLink/CButtonLink.vue +39 -39
  31. package/src/components/CButtonLink/index.js +2 -2
  32. package/src/components/CButtonSelect/CButtonSelect.vue +103 -103
  33. package/src/components/CButtonSelect/index.js +2 -2
  34. package/src/components/CButtonWithDropdown/CButtonWithDropdown.vue +168 -168
  35. package/src/components/CButtonWithDropdown/index.js +2 -2
  36. package/src/components/CCalendar/CCalendar.vue +400 -400
  37. package/src/components/CCalendar/index.js +3 -3
  38. package/src/components/CCard/CCard.vue +49 -49
  39. package/src/components/CCard/index.js +2 -2
  40. package/src/components/CCheckbox/CCheckbox.vue +70 -70
  41. package/src/components/CCheckbox/index.js +2 -2
  42. package/src/components/CCollapsibleSection/CCollapsibleSection.vue +99 -99
  43. package/src/components/CCollapsibleSection/index.js +2 -2
  44. package/src/components/CColorDots/CColorDots.vue +35 -35
  45. package/src/components/CColorDots/index.js +3 -3
  46. package/src/components/CConfirmActionModal/CConfirmActionModal.vue +120 -120
  47. package/src/components/CConfirmActionModal/index.js +3 -3
  48. package/src/components/CDatepicker/CDatepicker.vue +134 -134
  49. package/src/components/CDatepicker/index.js +2 -2
  50. package/src/components/CDualSelect/CDualSelect.vue +193 -193
  51. package/src/components/CDualSelect/index.js +2 -2
  52. package/src/components/CEditor/CEditor.vue +91 -91
  53. package/src/components/CEditor/index.js +2 -2
  54. package/src/components/CFormSectionHeading/CFormSectionHeading.vue +52 -52
  55. package/src/components/CFormSectionHeading/index.js +2 -2
  56. package/src/components/CGroupedSelect/CGroupedSelect.vue +217 -217
  57. package/src/components/CGroupedSelect/index.js +3 -3
  58. package/src/components/CIcon/CIcon.vue +77 -77
  59. package/src/components/CIcon/index.js +2 -2
  60. package/src/components/CIconDropdown/CIconDropdown.vue +105 -105
  61. package/src/components/CIconDropdown/index.js +2 -2
  62. package/src/components/CInput/CInput.vue +120 -120
  63. package/src/components/CInput/index.js +2 -2
  64. package/src/components/CInputAddon/CInputAddon.vue +202 -202
  65. package/src/components/CInputAddon/index.js +2 -2
  66. package/src/components/CInputEmail/CInputEmail.vue +84 -84
  67. package/src/components/CInputEmail/index.js +2 -2
  68. package/src/components/CModalHeading/CModalHeading.vue +22 -22
  69. package/src/components/CModalHeading/index.js +2 -2
  70. package/src/components/CModuleHelpLinks/CModuleHelpLinks.vue +39 -39
  71. package/src/components/CModuleHelpLinks/index.js +3 -3
  72. package/src/components/CMultiselect/CMultiselect.vue +323 -323
  73. package/src/components/CMultiselect/index.js +2 -2
  74. package/src/components/CMultiselectr/CMultiselectr.vue +44 -44
  75. package/src/components/CMultiselectr/index.js +2 -2
  76. package/src/components/CPageHeading/CPageHeading.vue +56 -56
  77. package/src/components/CPageHeading/index.js +2 -2
  78. package/src/components/CPagination/CPagination.vue +202 -202
  79. package/src/components/CPagination/index.js +2 -2
  80. package/src/components/CPhoneNumber/CPhoneNumber.vue +71 -71
  81. package/src/components/CPhoneNumber/index.js +2 -2
  82. package/src/components/CRadio/CRadio.vue +114 -114
  83. package/src/components/CRadio/index.js +2 -2
  84. package/src/components/CRangeSlider/CRangeSlider.vue +55 -55
  85. package/src/components/CRangeSlider/index.js +2 -2
  86. package/src/components/CReorderableStackedList/CReorderableStackedList.vue +94 -94
  87. package/src/components/CReorderableStackedList/index.js +2 -2
  88. package/src/components/CSelect/CSelect.vue +314 -314
  89. package/src/components/CSelect/index.js +2 -2
  90. package/src/components/CSmallTimeline/CSmallTimeline.vue +40 -40
  91. package/src/components/CSmallTimeline/index.js +2 -2
  92. package/src/components/CStackedList/CStackedList.vue +132 -132
  93. package/src/components/CStackedList/index.js +2 -2
  94. package/src/components/CStats/CStats.vue +102 -102
  95. package/src/components/CStats/index.js +2 -2
  96. package/src/components/CSwitch/CSwitch.vue +140 -140
  97. package/src/components/CSwitch/index.js +2 -2
  98. package/src/components/CTable/CTable.vue +488 -488
  99. package/src/components/CTable/index.js +2 -2
  100. package/src/components/CTabs/CTabs.vue +111 -111
  101. package/src/components/CTabs/index.js +2 -2
  102. package/src/components/CTag/CTag.vue +36 -36
  103. package/src/components/CTag/index.js +2 -2
  104. package/src/components/CTextarea/CTextarea.vue +85 -85
  105. package/src/components/CTextarea/index.js +2 -2
  106. package/src/components/CTimeline/CTimeline.vue +237 -237
  107. package/src/components/CTimeline/index.js +2 -2
  108. package/src/components/CUpload/CUpload.vue +201 -201
  109. package/src/components/CUpload/index.js +2 -2
  110. package/src/components/index.js +48 -48
  111. package/src/icons.js +259 -259
  112. package/src/main.js +22 -22
  113. package/src/stories/CAlerts.stories.js +37 -37
  114. package/src/stories/CAnchorTabs.stories.js +29 -29
  115. package/src/stories/CAnchorTag.stories.js +36 -36
  116. package/src/stories/CAvatar.stories.js +38 -38
  117. package/src/stories/CAvatarGroup.stories.js +100 -100
  118. package/src/stories/CBasicTable.stories.js +316 -316
  119. package/src/stories/CBreadcrumbs.stories.js +24 -24
  120. package/src/stories/CButton.stories.js +46 -46
  121. package/src/stories/CButtonGroup.stories.js +33 -33
  122. package/src/stories/CButtonIcon.stories.js +27 -27
  123. package/src/stories/CButtonLink.stories.js +24 -24
  124. package/src/stories/CButtonSelect.stories.js +32 -32
  125. package/src/stories/CButtonWithDropdown.stories.js +41 -41
  126. package/src/stories/CCalendar.stories.js +16 -16
  127. package/src/stories/CCard.stories.js +30 -30
  128. package/src/stories/CCheckbox.stories.js +29 -29
  129. package/src/stories/CCollapsibleSection.stories.js +28 -28
  130. package/src/stories/CColorDots.stories.js +28 -28
  131. package/src/stories/CConfirmActionModal.stories.js +59 -59
  132. package/src/stories/CDatepicker.stories.js +30 -30
  133. package/src/stories/CDualSelect.stories.js +29 -29
  134. package/src/stories/CEditor.stories.js +30 -30
  135. package/src/stories/CFormSectionHeading.stories.js +34 -34
  136. package/src/stories/CGroupedSelect.stories.js +69 -69
  137. package/src/stories/CIcon.stories.js +26 -26
  138. package/src/stories/CIconDropdown.stories.js +39 -39
  139. package/src/stories/CInput.stories.js +36 -36
  140. package/src/stories/CInputAddon.stories.js +37 -37
  141. package/src/stories/CInputEmail.stories.js +27 -27
  142. package/src/stories/CModalHeading.stories.js +25 -25
  143. package/src/stories/CModuleHelpLinks.stories.js +25 -25
  144. package/src/stories/CMultiselect.stories.js +97 -97
  145. package/src/stories/CMultiselectr.stories.js +23 -23
  146. package/src/stories/CPageHeading.stories.js +32 -32
  147. package/src/stories/CPagination.stories.js +30 -30
  148. package/src/stories/CPhoneNumber.stories.js +29 -29
  149. package/src/stories/CRadio.stories.js +36 -36
  150. package/src/stories/CRangeSlider.stories.js +23 -23
  151. package/src/stories/CReorderableStackedList.stories.js +23 -23
  152. package/src/stories/CSelect.stories.js +50 -50
  153. package/src/stories/CSmallTimeline.stories.js +26 -26
  154. package/src/stories/CStackedList.stories.js +37 -37
  155. package/src/stories/CStats.stories.js +33 -33
  156. package/src/stories/CSwitch.stories.js +28 -28
  157. package/src/stories/CTable.stories.js +77 -77
  158. package/src/stories/CTabs.stories.js +33 -33
  159. package/src/stories/CTag.stories.js +23 -23
  160. package/src/stories/CTextarea.stories.js +32 -32
  161. package/src/stories/CTimeline.stories.js +26 -26
  162. package/src/stories/CUpload.stories.js +36 -36
  163. package/src/stories/Introduction.stories.mdx +207 -207
  164. package/src/stories/Page.vue +88 -88
  165. package/src/stories/assets/code-brackets.svg +0 -0
  166. package/src/stories/assets/colors.svg +0 -0
  167. package/src/stories/assets/comments.svg +0 -0
  168. package/src/stories/assets/direction.svg +0 -0
  169. package/src/stories/assets/flow.svg +0 -0
  170. package/src/stories/assets/plugin.svg +0 -0
  171. package/src/stories/assets/repo.svg +0 -0
  172. package/src/stories/assets/stackalt.svg +0 -0
  173. package/src/stories/header.css +26 -26
  174. package/src/stories/page.css +69 -69
  175. package/src/stories/utils.css +17 -17
@@ -1,3 +1,3 @@
1
- import CTable from './CTable.vue'
2
-
1
+ import CTable from './CTable.vue'
2
+
3
3
  export default CTable
@@ -1,111 +1,111 @@
1
- <template>
2
- <div>
3
- <slot></slot>
4
- <div class="lg: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="block w-full rounded-md border-gray-300 pr-6 pl-4 text-sm focus:border-indigo-500 focus:ring-indigo-500"
10
- id="tabs"
11
- >
12
- <option
13
- v-for="tab in tabs"
14
- :key="tab.text"
15
- :value="tab.name"
16
- class="text-sm"
17
- >
18
- {{ tab.text }}
19
- </option>
20
- </select>
21
- </div>
22
- <div class="hidden lg:block">
23
- <div class="border-b border-gray-200">
24
- <nav :class="classes" class="-mb-px flex" aria-label="Tabs">
25
- <a
26
- v-for="tab in tabs"
27
- :key="tab.text"
28
- @click="switchTab(tab.name)"
29
- class="group inline-flex cursor-pointer items-center whitespace-nowrap border-b-2 py-4 px-1 text-sm font-medium"
30
- :class="
31
- activeTab == tab.name
32
- ? 'border-indigo-600 text-indigo-700 hover:text-indigo-800'
33
- : 'border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700'
34
- "
35
- >
36
- <c-icon
37
- v-if="tab.icon"
38
- :name="tab.icon"
39
- class="-ml-0.5 mr-2 h-5 w-5"
40
- :class="
41
- activeTab == tab.name
42
- ? 'text-indigo-700 group-hover:text-indigo-800'
43
- : 'text-gray-400 group-hover:text-gray-500 '
44
- "
45
- type="solid"
46
- ></c-icon>
47
- <span
48
- :class="
49
- activeTab == tab.name
50
- ? 'text-indigo-700'
51
- : 'text-gray-500 hover:text-gray-700'
52
- "
53
- >
54
- {{ tab.text }}
55
- </span>
56
- </a>
57
- </nav>
58
- </div>
59
- </div>
60
- <div v-for="(tab, index) in tabs" :key="index">
61
- <div v-show="tab.name == activeTab">
62
- <slot :name="`tab-panel-${tab.name}`"></slot>
63
- </div>
64
- </div>
65
- </div>
66
- </template>
67
-
68
- <script>
69
- // import CIcon from "../CIcon/CIcon.vue";
70
- export default {
71
- name: "CTabs",
72
- // components: { CIcon },
73
- props: {
74
- tabs: {
75
- type: Array,
76
- required: true,
77
- },
78
- initialTab: {
79
- type: String,
80
- },
81
- classes: {
82
- type: String,
83
- },
84
- tabClasses: {
85
- type: String,
86
- },
87
- },
88
- data() {
89
- return {
90
- activeTab: this.initialTab,
91
- };
92
- },
93
- methods: {
94
- switchTab(tabText) {
95
- console.log(tabText);
96
- this.activeTab = tabText;
97
- },
98
- switchTabForMobile(index) {
99
- var selectedOption = this.tabs[index];
100
- this.activeTab = selectedOption.name;
101
- },
102
- },
103
- watch: {
104
- initialTab() {
105
- this.activeTab = this.initialTab;
106
- },
107
- },
108
- };
109
- </script>
110
-
111
- <style></style>
1
+ <template>
2
+ <div>
3
+ <slot></slot>
4
+ <div class="lg: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="block w-full rounded-md border-gray-300 pr-6 pl-4 text-sm focus:border-indigo-500 focus:ring-indigo-500"
10
+ id="tabs"
11
+ >
12
+ <option
13
+ v-for="tab in tabs"
14
+ :key="tab.text"
15
+ :value="tab.name"
16
+ class="text-sm"
17
+ >
18
+ {{ tab.text }}
19
+ </option>
20
+ </select>
21
+ </div>
22
+ <div class="hidden lg:block">
23
+ <div class="border-b border-gray-200">
24
+ <nav :class="classes" class="-mb-px flex" aria-label="Tabs">
25
+ <a
26
+ v-for="tab in tabs"
27
+ :key="tab.text"
28
+ @click="switchTab(tab.name)"
29
+ class="group inline-flex cursor-pointer items-center whitespace-nowrap border-b-2 py-4 px-1 text-sm font-medium"
30
+ :class="
31
+ activeTab == tab.name
32
+ ? 'border-indigo-600 text-indigo-700 hover:text-indigo-800'
33
+ : 'border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700'
34
+ "
35
+ >
36
+ <c-icon
37
+ v-if="tab.icon"
38
+ :name="tab.icon"
39
+ class="-ml-0.5 mr-2 h-5 w-5"
40
+ :class="
41
+ activeTab == tab.name
42
+ ? 'text-indigo-700 group-hover:text-indigo-800'
43
+ : 'text-gray-400 group-hover:text-gray-500 '
44
+ "
45
+ type="solid"
46
+ ></c-icon>
47
+ <span
48
+ :class="
49
+ activeTab == tab.name
50
+ ? 'text-indigo-700'
51
+ : 'text-gray-500 hover:text-gray-700'
52
+ "
53
+ >
54
+ {{ tab.text }}
55
+ </span>
56
+ </a>
57
+ </nav>
58
+ </div>
59
+ </div>
60
+ <div v-for="(tab, index) in tabs" :key="index">
61
+ <div v-show="tab.name == activeTab">
62
+ <slot :name="`tab-panel-${tab.name}`"></slot>
63
+ </div>
64
+ </div>
65
+ </div>
66
+ </template>
67
+
68
+ <script>
69
+ // import CIcon from "../CIcon/CIcon.vue";
70
+ export default {
71
+ name: "CTabs",
72
+ // components: { CIcon },
73
+ props: {
74
+ tabs: {
75
+ type: Array,
76
+ required: true,
77
+ },
78
+ initialTab: {
79
+ type: String,
80
+ },
81
+ classes: {
82
+ type: String,
83
+ },
84
+ tabClasses: {
85
+ type: String,
86
+ },
87
+ },
88
+ data() {
89
+ return {
90
+ activeTab: this.initialTab,
91
+ };
92
+ },
93
+ methods: {
94
+ switchTab(tabText) {
95
+ console.log(tabText);
96
+ this.activeTab = tabText;
97
+ },
98
+ switchTabForMobile(index) {
99
+ var selectedOption = this.tabs[index];
100
+ this.activeTab = selectedOption.name;
101
+ },
102
+ },
103
+ watch: {
104
+ initialTab() {
105
+ this.activeTab = this.initialTab;
106
+ },
107
+ },
108
+ };
109
+ </script>
110
+
111
+ <style></style>
@@ -1,3 +1,3 @@
1
- import CTabs from './CTabs.vue'
2
-
1
+ import CTabs from './CTabs.vue'
2
+
3
3
  export default CTabs
@@ -1,36 +1,36 @@
1
- <template>
2
- <div>
3
- <span
4
- :class="[colorClasses, tagClasses]"
5
- class="px-2.5 py-0.5 inline-flex text-sm leading-5 rounded-md"
6
- >
7
- {{ label }}
8
- </span>
9
- </div>
10
- </template>
11
- <script>
12
- export default {
13
- name: "CTag",
14
- props: {
15
- label: { type: String },
16
- color: { type: String, default: "green" },
17
- tagClasses: {
18
- type: String,
19
- },
20
- },
21
- computed: {
22
- colorClasses() {
23
- return {
24
- "bg-gray-100 text-gray-800": this.color == "gray",
25
- "bg-red-100 text-red-800": this.color == "red",
26
- "bg-yellow-100 text-yellow-800": this.color == "yellow",
27
- "bg-green-100 text-green-800": this.color == "green",
28
- "bg-blue-100 text-blue-800": this.color == "indigo",
29
- "bg-purple-100 text-purple-800": this.color == "purple",
30
- "bg-pink-100 text-pink-800": this.color == "pink",
31
- "bg-indigo-100 text-indigo-800": this.color == "indigo",
32
- };
33
- },
34
- },
35
- };
36
- </script>
1
+ <template>
2
+ <div>
3
+ <span
4
+ :class="[colorClasses, tagClasses]"
5
+ class="px-2.5 py-0.5 inline-flex text-sm leading-5 rounded-md"
6
+ >
7
+ {{ label }}
8
+ </span>
9
+ </div>
10
+ </template>
11
+ <script>
12
+ export default {
13
+ name: "CTag",
14
+ props: {
15
+ label: { type: String },
16
+ color: { type: String, default: "green" },
17
+ tagClasses: {
18
+ type: String,
19
+ },
20
+ },
21
+ computed: {
22
+ colorClasses() {
23
+ return {
24
+ "bg-gray-100 text-gray-800": this.color == "gray",
25
+ "bg-red-100 text-red-800": this.color == "red",
26
+ "bg-yellow-100 text-yellow-800": this.color == "yellow",
27
+ "bg-green-100 text-green-800": this.color == "green",
28
+ "bg-blue-100 text-blue-800": this.color == "indigo",
29
+ "bg-purple-100 text-purple-800": this.color == "purple",
30
+ "bg-pink-100 text-pink-800": this.color == "pink",
31
+ "bg-indigo-100 text-indigo-800": this.color == "indigo",
32
+ };
33
+ },
34
+ },
35
+ };
36
+ </script>
@@ -1,3 +1,3 @@
1
- import CTag from './CTag.vue'
2
-
1
+ import CTag from './CTag.vue'
2
+
3
3
  export default CTag
@@ -1,85 +1,85 @@
1
- <template>
2
- <div>
3
- <div class="flex justify-between">
4
- <label v-if="label" class="block text-sm font-medium text-gray-900">
5
- {{ label }}
6
- </label>
7
- <span v-if="hint" class="text-sm text-gray-500">{{ hint }}</span>
8
- </div>
9
-
10
- <div class="mt-1">
11
- <textarea
12
- :value="textareaValue"
13
- @input="$emit('input', $event.target.value)"
14
- @blur="$emit('blur', $event.target.value)"
15
- :placeholder="placeholder"
16
- :rows="rows"
17
- :class="errorClasses"
18
- :disabled="disabled"
19
- class="shadow-sm focus:ring-indigo-500 focus:border-indigo-500 block w-full sm:text-sm rounded-md disabled:opacity-50 text-gray-900"
20
- ></textarea>
21
- <div
22
- v-if="!isValidate"
23
- class="absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none text-red-600"
24
- >
25
- <c-icon name="exclamation-circle" type="solid" class="h-5 w-5"></c-icon>
26
- </div>
27
- </div>
28
- <p v-if="!isValidate" class="mt-2 text-sm text-red-600">
29
- {{ errorMessage }}
30
- </p>
31
- <p v-if="helpText && isValidate == true" class="mt-2 text-sm text-gray-500">
32
- {{ helpText }}
33
- </p>
34
- </div>
35
- </template>
36
- <script>
37
- import CIcon from "../CIcon/CIcon.vue";
38
- export default {
39
- name: "CTextarea",
40
- components: { CIcon },
41
- props: {
42
- label: {
43
- type: String,
44
- },
45
- placeholder: {
46
- type: String,
47
- },
48
- value: {
49
- type: String,
50
- },
51
- rows: { type: String, default: "3" },
52
- helpText: {
53
- type: String,
54
- },
55
- hint: { type: String },
56
- isValidate: { type: Boolean },
57
- errorMessage: {
58
- type: String,
59
- },
60
- disabled: {
61
- type: Boolean,
62
- default: false,
63
- },
64
- },
65
- computed: {
66
- errorClasses() {
67
- return {
68
- "border-red-300 text-red-900 placeholder-red-300 focus:ring-red-500 focus:border-red-500":
69
- this.isValidate == false,
70
- "border-gray-300": this.isValidate == true,
71
- };
72
- },
73
- },
74
- data() {
75
- return {
76
- textareaValue: this.value,
77
- };
78
- },
79
- watch: {
80
- value() {
81
- this.textareaValue = this.value;
82
- },
83
- },
84
- };
85
- </script>
1
+ <template>
2
+ <div>
3
+ <div class="flex justify-between">
4
+ <label v-if="label" class="block text-sm font-medium text-gray-900">
5
+ {{ label }}
6
+ </label>
7
+ <span v-if="hint" class="text-sm text-gray-500">{{ hint }}</span>
8
+ </div>
9
+
10
+ <div class="mt-1">
11
+ <textarea
12
+ :value="textareaValue"
13
+ @input="$emit('input', $event.target.value)"
14
+ @blur="$emit('blur', $event.target.value)"
15
+ :placeholder="placeholder"
16
+ :rows="rows"
17
+ :class="errorClasses"
18
+ :disabled="disabled"
19
+ class="shadow-sm focus:ring-indigo-500 focus:border-indigo-500 block w-full sm:text-sm rounded-md disabled:opacity-50 text-gray-900"
20
+ ></textarea>
21
+ <div
22
+ v-if="!isValidate"
23
+ class="absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none text-red-600"
24
+ >
25
+ <c-icon name="exclamation-circle" type="solid" class="h-5 w-5"></c-icon>
26
+ </div>
27
+ </div>
28
+ <p v-if="!isValidate" class="mt-2 text-sm text-red-600">
29
+ {{ errorMessage }}
30
+ </p>
31
+ <p v-if="helpText && isValidate == true" class="mt-2 text-sm text-gray-500">
32
+ {{ helpText }}
33
+ </p>
34
+ </div>
35
+ </template>
36
+ <script>
37
+ import CIcon from "../CIcon/CIcon.vue";
38
+ export default {
39
+ name: "CTextarea",
40
+ components: { CIcon },
41
+ props: {
42
+ label: {
43
+ type: String,
44
+ },
45
+ placeholder: {
46
+ type: String,
47
+ },
48
+ value: {
49
+ type: String,
50
+ },
51
+ rows: { type: String, default: "3" },
52
+ helpText: {
53
+ type: String,
54
+ },
55
+ hint: { type: String },
56
+ isValidate: { type: Boolean },
57
+ errorMessage: {
58
+ type: String,
59
+ },
60
+ disabled: {
61
+ type: Boolean,
62
+ default: false,
63
+ },
64
+ },
65
+ computed: {
66
+ errorClasses() {
67
+ return {
68
+ "border-red-300 text-red-900 placeholder-red-300 focus:ring-red-500 focus:border-red-500":
69
+ this.isValidate == false,
70
+ "border-gray-300": this.isValidate == true,
71
+ };
72
+ },
73
+ },
74
+ data() {
75
+ return {
76
+ textareaValue: this.value,
77
+ };
78
+ },
79
+ watch: {
80
+ value() {
81
+ this.textareaValue = this.value;
82
+ },
83
+ },
84
+ };
85
+ </script>
@@ -1,3 +1,3 @@
1
- import CTextarea from './CTextarea.vue'
2
-
1
+ import CTextarea from './CTextarea.vue'
2
+
3
3
  export default CTextarea