classcard-ui 0.2.1506 → 0.2.1508-beta.0

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 (216) hide show
  1. package/README.md +24 -24
  2. package/dist/classcard-ui.common.js +176 -138
  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 +176 -138
  6. package/dist/classcard-ui.umd.js.map +1 -1
  7. package/dist/classcard-ui.umd.min.js +2 -2
  8. package/dist/classcard-ui.umd.min.js.map +1 -1
  9. package/package.json +84 -84
  10. package/src/App.vue +16 -16
  11. package/src/colorConfig.js +52 -52
  12. package/src/components/CAlertModal/CAlertModal.vue +181 -181
  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 +231 -231
  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 +208 -208
  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 +290 -290
  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 +137 -137
  61. package/src/components/CEditor/index.js +6 -6
  62. package/src/components/CEditor/quill-font-setup.js +133 -133
  63. package/src/components/CFormSectionHeading/CFormSectionHeading.vue +76 -76
  64. package/src/components/CFormSectionHeading/index.js +2 -2
  65. package/src/components/CGroupedFilterDropdown/CGroupedFilterDropdown.vue +331 -331
  66. package/src/components/CGroupedFilterDropdown/index.js +2 -2
  67. package/src/components/CGroupedSelect/CGroupedSelect.vue +393 -393
  68. package/src/components/CGroupedSelect/index.js +3 -3
  69. package/src/components/CIcon/CIcon.vue +112 -112
  70. package/src/components/CIcon/index.js +2 -2
  71. package/src/components/CIconDropdown/CIconDropdown.vue +206 -206
  72. package/src/components/CIconDropdown/index.js +2 -2
  73. package/src/components/CIconSelect/CIconSelect.vue +182 -182
  74. package/src/components/CIconSelect/index.js +3 -3
  75. package/src/components/CInput/CInput.vue +227 -227
  76. package/src/components/CInput/index.js +2 -2
  77. package/src/components/CInputAddon/CInputAddon.vue +297 -297
  78. package/src/components/CInputAddon/index.js +2 -2
  79. package/src/components/CInputEmail/CInputEmail.vue +107 -107
  80. package/src/components/CInputEmail/index.js +2 -2
  81. package/src/components/CInsetTabs/CInsetTabs.vue +222 -222
  82. package/src/components/CInsetTabs/index.js +3 -3
  83. package/src/components/CLinearProgressBar/CLinearProgressBar.vue +35 -35
  84. package/src/components/CLinearProgressBar/index.js +2 -2
  85. package/src/components/CModalHeading/CModalHeading.vue +22 -22
  86. package/src/components/CModalHeading/index.js +2 -2
  87. package/src/components/CModuleHelpLinks/CModuleHelpLinks.vue +88 -88
  88. package/src/components/CModuleHelpLinks/index.js +3 -3
  89. package/src/components/CMultiselect/CMultiselect.vue +1314 -1314
  90. package/src/components/CMultiselect/index.js +2 -2
  91. package/src/components/CMultiselectr/CMultiselectr.vue +44 -44
  92. package/src/components/CMultiselectr/index.js +2 -2
  93. package/src/components/CPageHeading/CPageHeading.vue +83 -83
  94. package/src/components/CPageHeading/index.js +2 -2
  95. package/src/components/CPagination/CPagination.vue +239 -239
  96. package/src/components/CPagination/index.js +2 -2
  97. package/src/components/CPhoneNumber/CPhoneNumber.vue +213 -213
  98. package/src/components/CPhoneNumber/index.js +2 -2
  99. package/src/components/CProgress/CProgress.vue +95 -95
  100. package/src/components/CProgress/index.js +2 -2
  101. package/src/components/CRadio/CRadio.vue +198 -198
  102. package/src/components/CRadio/index.js +2 -2
  103. package/src/components/CRadioGroup/CRadioGroup.vue +96 -96
  104. package/src/components/CRadioGroup/index.js +2 -2
  105. package/src/components/CRangeSlider/CRangeSlider.vue +55 -55
  106. package/src/components/CRangeSlider/index.js +2 -2
  107. package/src/components/CReorderableStackedList/CReorderableStackedList.vue +94 -94
  108. package/src/components/CReorderableStackedList/index.js +2 -2
  109. package/src/components/CSelect/CSelect.vue +1225 -1225
  110. package/src/components/CSelect/index.js +2 -2
  111. package/src/components/CSmallTimeline/CSmallTimeline.vue +40 -40
  112. package/src/components/CSmallTimeline/index.js +2 -2
  113. package/src/components/CStackedList/CStackedList.vue +162 -162
  114. package/src/components/CStackedList/index.js +2 -2
  115. package/src/components/CStats/CStats.vue +157 -157
  116. package/src/components/CStats/index.js +2 -2
  117. package/src/components/CSwitch/CSwitch.vue +200 -200
  118. package/src/components/CSwitch/index.js +2 -2
  119. package/src/components/CTabLazy/CTabLazy.vue +83 -83
  120. package/src/components/CTabLazy/index.js +2 -2
  121. package/src/components/CTable/CTable.vue +1114 -1114
  122. package/src/components/CTable/index.js +2 -2
  123. package/src/components/CTabs/CTabs.vue +250 -250
  124. package/src/components/CTabs/index.js +2 -2
  125. package/src/components/CTag/CTag.vue +109 -109
  126. package/src/components/CTag/index.js +2 -2
  127. package/src/components/CTextarea/CTextarea.vue +118 -118
  128. package/src/components/CTextarea/index.js +2 -2
  129. package/src/components/CTimeline/CTimeline.vue +237 -237
  130. package/src/components/CTimeline/index.js +2 -2
  131. package/src/components/CTokenEditor/CTokenEditor.vue +804 -804
  132. package/src/components/CTokenEditor/index.js +3 -3
  133. package/src/components/CToolTip/CToolTip.vue +108 -108
  134. package/src/components/CToolTip/index.js +3 -3
  135. package/src/components/CUpload/CUpload.vue +332 -332
  136. package/src/components/CUpload/index.js +2 -2
  137. package/src/components/NumberAnimator.vue +112 -112
  138. package/src/components/index.js +60 -60
  139. package/src/helper.js +8 -8
  140. package/src/icons.js +855 -850
  141. package/src/main.js +22 -22
  142. package/src/stories/CAlertModal.stories.js +30 -30
  143. package/src/stories/CAlerts.stories.js +39 -39
  144. package/src/stories/CAnchorTabs.stories.js +29 -29
  145. package/src/stories/CAnchorTag.stories.js +38 -38
  146. package/src/stories/CAvatar.stories.js +38 -38
  147. package/src/stories/CAvatarGroup.stories.js +136 -136
  148. package/src/stories/CBasicTable.stories.js +316 -316
  149. package/src/stories/CBreadcrumbs.stories.js +24 -24
  150. package/src/stories/CButton.stories.js +49 -49
  151. package/src/stories/CButtonGroup.stories.js +43 -43
  152. package/src/stories/CButtonIcon.stories.js +27 -27
  153. package/src/stories/CButtonLink.stories.js +24 -24
  154. package/src/stories/CButtonSelect.stories.js +44 -44
  155. package/src/stories/CButtonSelectBorder.stories.js +56 -56
  156. package/src/stories/CButtonWithDropdown.stories.js +41 -41
  157. package/src/stories/CCalendar.stories.js +16 -16
  158. package/src/stories/CCard.stories.js +30 -30
  159. package/src/stories/CCheckbox.stories.js +38 -38
  160. package/src/stories/CCircularButton.stories.js +29 -29
  161. package/src/stories/CCollapsibleSection.stories.js +29 -29
  162. package/src/stories/CColorDots.stories.js +37 -37
  163. package/src/stories/CConfirmActionModal.stories.js +67 -67
  164. package/src/stories/CDatepicker.stories.js +31 -31
  165. package/src/stories/CDualSelect.stories.js +29 -29
  166. package/src/stories/CEditor.stories.js +36 -36
  167. package/src/stories/CFormSectionHeading.stories.js +37 -37
  168. package/src/stories/CGroupedFilterDropdown.stories.js +131 -131
  169. package/src/stories/CGroupedSelect.stories.js +103 -103
  170. package/src/stories/CIcon.stories.js +31 -31
  171. package/src/stories/CIconDropdown.stories.js +52 -52
  172. package/src/stories/CIconSelect.stories.js +45 -45
  173. package/src/stories/CInput.stories.js +50 -50
  174. package/src/stories/CInputAddon.stories.js +37 -37
  175. package/src/stories/CInputEmail.stories.js +27 -27
  176. package/src/stories/CInsetTabs.stories.js +50 -50
  177. package/src/stories/CLinearProgressBar.stories.js +22 -22
  178. package/src/stories/CModalHeading.stories.js +25 -25
  179. package/src/stories/CModuleHelpLinks.stories.js +25 -25
  180. package/src/stories/CMultiselect.stories.js +146 -146
  181. package/src/stories/CMultiselectr.stories.js +23 -23
  182. package/src/stories/CPageHeading.stories.js +32 -32
  183. package/src/stories/CPagination.stories.js +30 -30
  184. package/src/stories/CPhoneNumber.stories.js +37 -37
  185. package/src/stories/CProgress.stories.js +23 -23
  186. package/src/stories/CRadio.stories.js +44 -44
  187. package/src/stories/CRadioGroup.stories.js +51 -51
  188. package/src/stories/CRangeSlider.stories.js +23 -23
  189. package/src/stories/CReorderableStackedList.stories.js +23 -23
  190. package/src/stories/CSelect.stories.js +157 -157
  191. package/src/stories/CSmallTimeline.stories.js +26 -26
  192. package/src/stories/CStackedList.stories.js +37 -37
  193. package/src/stories/CStats.stories.js +53 -53
  194. package/src/stories/CSwitch.stories.js +28 -28
  195. package/src/stories/CTabLazy.stories.js +42 -42
  196. package/src/stories/CTable.stories.js +203 -203
  197. package/src/stories/CTabs.stories.js +36 -36
  198. package/src/stories/CTag.stories.js +37 -37
  199. package/src/stories/CTextarea.stories.js +32 -32
  200. package/src/stories/CTimeline.stories.js +26 -26
  201. package/src/stories/CTokenEditor.stories.js +136 -136
  202. package/src/stories/CToolTip.stories.js +27 -27
  203. package/src/stories/CUpload.stories.js +36 -36
  204. package/src/stories/Introduction.stories.mdx +207 -207
  205. package/src/stories/Page.vue +88 -88
  206. package/src/stories/assets/code-brackets.svg +0 -0
  207. package/src/stories/assets/colors.svg +0 -0
  208. package/src/stories/assets/comments.svg +0 -0
  209. package/src/stories/assets/direction.svg +0 -0
  210. package/src/stories/assets/flow.svg +0 -0
  211. package/src/stories/assets/plugin.svg +0 -0
  212. package/src/stories/assets/repo.svg +0 -0
  213. package/src/stories/assets/stackalt.svg +0 -0
  214. package/src/stories/header.css +26 -26
  215. package/src/stories/page.css +69 -69
  216. package/src/stories/utils.css +32 -32
@@ -1,227 +1,227 @@
1
- <template>
2
- <div>
3
- <div class="flex justify-between">
4
- <div class="flex items-center">
5
- <!-- label of input field -->
6
- <label class="block text-sm font-medium text-gray-900">
7
- {{ label }}
8
- </label>
9
- <!-- asterisk sign to render if field is required -->
10
- <p v-if="isRequired" class="ml-1 text-red-600">*</p>
11
- </div>
12
- <!-- hint on the right side of input field -->
13
- <span v-if="hint" class="text-sm text-gray-500">{{ hint }}</span>
14
- </div>
15
- <div
16
- :class="`relative h-9 ${
17
- label || hint ? 'mt-1' : ''
18
- } rounded-md ${inputWrapperClass}`"
19
- >
20
- <c-icon
21
- v-if="isSearchEnabled"
22
- name="search-outline-v2"
23
- type="outline"
24
- class="absolute top-2 left-2 h-5 w-5 flex-shrink-0 text-gray-400"
25
- ></c-icon>
26
- <input
27
- :readonly="readonly"
28
- :type="type"
29
- :value="inputValue"
30
- :id="id"
31
- @input="handleInput"
32
- @click="handleClick"
33
- @blur="
34
- $emit('blur', $event.target.value);
35
- $emit('blurEvent', $event);
36
- "
37
- @focus="$emit('focus', $event.target.value)"
38
- @keyup.enter="$emit('enter')"
39
- :class="[
40
- errorClasses,
41
- customClasses ? customClasses : 'rounded-md',
42
- isSearchEnabled ? 'pl-8' : '',
43
- trailingIcon && isValidate ? 'pr-9' : '',
44
- ]"
45
- class="block w-full h-full flex-1 px-3 py-2 text-sm text-gray-900 shadow-sm focus:border-indigo-500 focus:ring-indigo-500"
46
- :placeholder="placeholder"
47
- :disabled="disabled"
48
- :min="minValue"
49
- :max="maxValue"
50
- />
51
- <!-- to render to show validation is failed -->
52
- <div
53
- v-if="!isValidate && !customIcon"
54
- class="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3 text-red-600"
55
- >
56
- <c-icon name="exclamation-circle" type="solid" class="h-5 w-5 bg-white"></c-icon>
57
- </div>
58
- <!-- trailing info icon with optional tooltip; hidden when a validation error is shown so the error icon takes priority -->
59
- <div
60
- v-if="trailingIcon && isValidate"
61
- class="absolute inset-y-0 right-0 flex items-center pr-3"
62
- >
63
- <span
64
- tabindex="0"
65
- class="relative flex items-center text-gray-400 focus:outline-none"
66
- @mouseenter="showTrailingTooltip = true"
67
- @mouseleave="showTrailingTooltip = false"
68
- @focus="showTrailingTooltip = true"
69
- @blur="showTrailingTooltip = false"
70
- >
71
- <c-icon
72
- :name="trailingIcon"
73
- :type="trailingIconType"
74
- :viewBox="trailingIconViewBox || undefined"
75
- :classes="`${trailingIconClass} `"
76
- cursorType="cursor-pointer"
77
- ></c-icon>
78
- <c-tool-tip
79
- v-if="showTrailingTooltip && trailingIconTooltip"
80
- :tooltipText="trailingIconTooltip"
81
- isTopAligned
82
- classes="bottom-full left-1/2 mb-2 -translate-x-1/2 whitespace-nowrap bg-gray-900 text-white"
83
- color="#111827"
84
- ></c-tool-tip>
85
- </span>
86
- </div>
87
- <slot name="customIcon" v-if="customIcon"></slot>
88
- </div>
89
- <!-- validation error message -->
90
- <p v-if="!isValidate" class="mt-2 text-sm text-red-600">
91
- {{ errorMessage }}
92
- </p>
93
- <!-- description about the input field -->
94
- <p v-if="helpText && isValidate == true" class="mt-2 text-sm text-gray-500">
95
- {{ helpText }}
96
- </p>
97
- </div>
98
- </template>
99
-
100
- <script>
101
- import CIcon from "../CIcon/CIcon.vue";
102
- import CToolTip from "../CToolTip/CToolTip.vue";
103
- export default {
104
- name: "CInput",
105
- components: { CIcon, CToolTip },
106
- props: {
107
- // Label of input field
108
- label: {
109
- type: String,
110
- },
111
- // Read only of input field
112
- readonly: {
113
- type: Boolean,
114
- },
115
- // placeholder of input
116
- placeholder: {
117
- type: String,
118
- },
119
- // v-model of the field
120
- value: {
121
- type: String,
122
- },
123
- // hint on right side of input
124
- hint: { type: String },
125
- // description about the field
126
- helpText: {
127
- type: String,
128
- },
129
- // validation is passed or not
130
- isValidate: { type: Boolean },
131
- // validation error message
132
- errorMessage: {
133
- type: String,
134
- },
135
- // to disable the input field
136
- disabled: {
137
- type: Boolean,
138
- },
139
- // whether the input field is mandatory or not
140
- isRequired: {
141
- type: Boolean,
142
- },
143
- // type of input field
144
- type: {
145
- type: String,
146
- default: "text",
147
- },
148
- customClasses: {
149
- type: String,
150
- },
151
- customIcon: {
152
- type: Boolean,
153
- default: false,
154
- },
155
- minValue: {
156
- type: Number,
157
- },
158
- maxValue: {
159
- type: Number,
160
- },
161
- inputWrapperClass: {
162
- type: String,
163
- default: "",
164
- },
165
- id: {
166
- type: String,
167
- },
168
- isSearchEnabled: {
169
- type: Boolean,
170
- default: false,
171
- },
172
- // c-icon name to render at the right edge of the input
173
- trailingIcon: {
174
- type: String,
175
- },
176
- // type passed through to the trailing <c-icon :type>
177
- trailingIconType: {
178
- type: String,
179
- default: "outline",
180
- },
181
- // tooltip text shown on hover/focus of the trailing icon
182
- trailingIconTooltip: {
183
- type: String,
184
- },
185
- // viewBox passed through to the trailing <c-icon>; only applied when provided
186
- trailingIconViewBox: {
187
- type: String,
188
- },
189
- // class bound on the trailing <c-icon> so callers control colour/size (positioning is preserved)
190
- trailingIconClass: {
191
- type: String,
192
- default: "h-5 w-5 text-gray-400",
193
- },
194
- },
195
- computed: {
196
- errorClasses() {
197
- return {
198
- "border-red-300 text-red-900 placeholder-red-300 focus:ring-red-500 focus:border-red-500":
199
- this.isValidate == false,
200
- "border-gray-300": this.isValidate == true,
201
- };
202
- },
203
- },
204
- methods: {
205
- handleInput(event) {
206
- const value = event.target.value;
207
- this.inputValue = value;
208
- this.$emit("input", value);
209
- this.$emit("getCursorIndex", event.target.selectionStart);
210
- },
211
- handleClick(event) {
212
- this.$emit("getCursorIndex", event.target.selectionStart);
213
- },
214
- },
215
- data() {
216
- return {
217
- inputValue: this.value,
218
- showTrailingTooltip: false,
219
- };
220
- },
221
- watch: {
222
- value() {
223
- this.inputValue = this.value;
224
- },
225
- },
226
- };
227
- </script>
1
+ <template>
2
+ <div>
3
+ <div class="flex justify-between">
4
+ <div class="flex items-center">
5
+ <!-- label of input field -->
6
+ <label class="block text-sm font-medium text-gray-900">
7
+ {{ label }}
8
+ </label>
9
+ <!-- asterisk sign to render if field is required -->
10
+ <p v-if="isRequired" class="ml-1 text-red-600">*</p>
11
+ </div>
12
+ <!-- hint on the right side of input field -->
13
+ <span v-if="hint" class="text-sm text-gray-500">{{ hint }}</span>
14
+ </div>
15
+ <div
16
+ :class="`relative h-9 ${
17
+ label || hint ? 'mt-1' : ''
18
+ } rounded-md ${inputWrapperClass}`"
19
+ >
20
+ <c-icon
21
+ v-if="isSearchEnabled"
22
+ name="search-outline-v2"
23
+ type="outline"
24
+ class="absolute top-2 left-2 h-5 w-5 flex-shrink-0 text-gray-400"
25
+ ></c-icon>
26
+ <input
27
+ :readonly="readonly"
28
+ :type="type"
29
+ :value="inputValue"
30
+ :id="id"
31
+ @input="handleInput"
32
+ @click="handleClick"
33
+ @blur="
34
+ $emit('blur', $event.target.value);
35
+ $emit('blurEvent', $event);
36
+ "
37
+ @focus="$emit('focus', $event.target.value)"
38
+ @keyup.enter="$emit('enter')"
39
+ :class="[
40
+ errorClasses,
41
+ customClasses ? customClasses : 'rounded-md',
42
+ isSearchEnabled ? 'pl-8' : '',
43
+ trailingIcon && isValidate ? 'pr-9' : '',
44
+ ]"
45
+ class="block w-full h-full flex-1 px-3 py-2 text-sm text-gray-900 shadow-sm focus:border-indigo-500 focus:ring-indigo-500"
46
+ :placeholder="placeholder"
47
+ :disabled="disabled"
48
+ :min="minValue"
49
+ :max="maxValue"
50
+ />
51
+ <!-- to render to show validation is failed -->
52
+ <div
53
+ v-if="!isValidate && !customIcon"
54
+ class="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3 text-red-600"
55
+ >
56
+ <c-icon name="exclamation-circle" type="solid" class="h-5 w-5 bg-white"></c-icon>
57
+ </div>
58
+ <!-- trailing info icon with optional tooltip; hidden when a validation error is shown so the error icon takes priority -->
59
+ <div
60
+ v-if="trailingIcon && isValidate"
61
+ class="absolute inset-y-0 right-0 flex items-center pr-3"
62
+ >
63
+ <span
64
+ tabindex="0"
65
+ class="relative flex items-center text-gray-400 focus:outline-none"
66
+ @mouseenter="showTrailingTooltip = true"
67
+ @mouseleave="showTrailingTooltip = false"
68
+ @focus="showTrailingTooltip = true"
69
+ @blur="showTrailingTooltip = false"
70
+ >
71
+ <c-icon
72
+ :name="trailingIcon"
73
+ :type="trailingIconType"
74
+ :viewBox="trailingIconViewBox || undefined"
75
+ :classes="`${trailingIconClass} `"
76
+ cursorType="cursor-pointer"
77
+ ></c-icon>
78
+ <c-tool-tip
79
+ v-if="showTrailingTooltip && trailingIconTooltip"
80
+ :tooltipText="trailingIconTooltip"
81
+ isTopAligned
82
+ classes="bottom-full left-1/2 mb-2 -translate-x-1/2 whitespace-nowrap bg-gray-900 text-white"
83
+ color="#111827"
84
+ ></c-tool-tip>
85
+ </span>
86
+ </div>
87
+ <slot name="customIcon" v-if="customIcon"></slot>
88
+ </div>
89
+ <!-- validation error message -->
90
+ <p v-if="!isValidate" class="mt-2 text-sm text-red-600">
91
+ {{ errorMessage }}
92
+ </p>
93
+ <!-- description about the input field -->
94
+ <p v-if="helpText && isValidate == true" class="mt-2 text-sm text-gray-500">
95
+ {{ helpText }}
96
+ </p>
97
+ </div>
98
+ </template>
99
+
100
+ <script>
101
+ import CIcon from "../CIcon/CIcon.vue";
102
+ import CToolTip from "../CToolTip/CToolTip.vue";
103
+ export default {
104
+ name: "CInput",
105
+ components: { CIcon, CToolTip },
106
+ props: {
107
+ // Label of input field
108
+ label: {
109
+ type: String,
110
+ },
111
+ // Read only of input field
112
+ readonly: {
113
+ type: Boolean,
114
+ },
115
+ // placeholder of input
116
+ placeholder: {
117
+ type: String,
118
+ },
119
+ // v-model of the field
120
+ value: {
121
+ type: String,
122
+ },
123
+ // hint on right side of input
124
+ hint: { type: String },
125
+ // description about the field
126
+ helpText: {
127
+ type: String,
128
+ },
129
+ // validation is passed or not
130
+ isValidate: { type: Boolean },
131
+ // validation error message
132
+ errorMessage: {
133
+ type: String,
134
+ },
135
+ // to disable the input field
136
+ disabled: {
137
+ type: Boolean,
138
+ },
139
+ // whether the input field is mandatory or not
140
+ isRequired: {
141
+ type: Boolean,
142
+ },
143
+ // type of input field
144
+ type: {
145
+ type: String,
146
+ default: "text",
147
+ },
148
+ customClasses: {
149
+ type: String,
150
+ },
151
+ customIcon: {
152
+ type: Boolean,
153
+ default: false,
154
+ },
155
+ minValue: {
156
+ type: Number,
157
+ },
158
+ maxValue: {
159
+ type: Number,
160
+ },
161
+ inputWrapperClass: {
162
+ type: String,
163
+ default: "",
164
+ },
165
+ id: {
166
+ type: String,
167
+ },
168
+ isSearchEnabled: {
169
+ type: Boolean,
170
+ default: false,
171
+ },
172
+ // c-icon name to render at the right edge of the input
173
+ trailingIcon: {
174
+ type: String,
175
+ },
176
+ // type passed through to the trailing <c-icon :type>
177
+ trailingIconType: {
178
+ type: String,
179
+ default: "outline",
180
+ },
181
+ // tooltip text shown on hover/focus of the trailing icon
182
+ trailingIconTooltip: {
183
+ type: String,
184
+ },
185
+ // viewBox passed through to the trailing <c-icon>; only applied when provided
186
+ trailingIconViewBox: {
187
+ type: String,
188
+ },
189
+ // class bound on the trailing <c-icon> so callers control colour/size (positioning is preserved)
190
+ trailingIconClass: {
191
+ type: String,
192
+ default: "h-5 w-5 text-gray-400",
193
+ },
194
+ },
195
+ computed: {
196
+ errorClasses() {
197
+ return {
198
+ "border-red-300 text-red-900 placeholder-red-300 focus:ring-red-500 focus:border-red-500":
199
+ this.isValidate == false,
200
+ "border-gray-300": this.isValidate == true,
201
+ };
202
+ },
203
+ },
204
+ methods: {
205
+ handleInput(event) {
206
+ const value = event.target.value;
207
+ this.inputValue = value;
208
+ this.$emit("input", value);
209
+ this.$emit("getCursorIndex", event.target.selectionStart);
210
+ },
211
+ handleClick(event) {
212
+ this.$emit("getCursorIndex", event.target.selectionStart);
213
+ },
214
+ },
215
+ data() {
216
+ return {
217
+ inputValue: this.value,
218
+ showTrailingTooltip: false,
219
+ };
220
+ },
221
+ watch: {
222
+ value() {
223
+ this.inputValue = this.value;
224
+ },
225
+ },
226
+ };
227
+ </script>
@@ -1,3 +1,3 @@
1
- import CInput from './CInput.vue'
2
-
1
+ import CInput from './CInput.vue'
2
+
3
3
  export default CInput