classcard-ui 0.2.660 → 0.2.664

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 (176) hide show
  1. package/README.md +24 -24
  2. package/dist/classcard-ui.common.js +94 -94
  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 +94 -94
  6. package/dist/classcard-ui.umd.js.map +1 -1
  7. package/dist/classcard-ui.umd.min.js +1 -1
  8. package/dist/classcard-ui.umd.min.js.map +1 -1
  9. package/package.json +81 -81
  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 +112 -112
  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 +147 -147
  26. package/src/components/CButton/index.js +2 -2
  27. package/src/components/CButtonGroup/CButtonGroup.vue +116 -116
  28. package/src/components/CButtonGroup/index.js +2 -2
  29. package/src/components/CButtonIcon/CButtonIcon.vue +91 -91
  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 +103 -103
  34. package/src/components/CButtonSelect/index.js +2 -2
  35. package/src/components/CButtonWithDropdown/CButtonWithDropdown.vue +168 -168
  36. package/src/components/CButtonWithDropdown/index.js +2 -2
  37. package/src/components/CCalendar/CCalendar.vue +401 -401
  38. package/src/components/CCalendar/index.js +3 -3
  39. package/src/components/CCard/CCard.vue +49 -49
  40. package/src/components/CCard/index.js +2 -2
  41. package/src/components/CCheckbox/CCheckbox.vue +70 -70
  42. package/src/components/CCheckbox/index.js +2 -2
  43. package/src/components/CCollapsibleSection/CCollapsibleSection.vue +99 -99
  44. package/src/components/CCollapsibleSection/index.js +2 -2
  45. package/src/components/CColorDots/CColorDots.vue +35 -35
  46. package/src/components/CColorDots/index.js +3 -3
  47. package/src/components/CConfirmActionModal/CConfirmActionModal.vue +120 -120
  48. package/src/components/CConfirmActionModal/index.js +3 -3
  49. package/src/components/CDatepicker/CDatepicker.vue +139 -139
  50. package/src/components/CDatepicker/index.js +2 -2
  51. package/src/components/CDualSelect/CDualSelect.vue +193 -193
  52. package/src/components/CDualSelect/index.js +2 -2
  53. package/src/components/CEditor/CEditor.vue +96 -96
  54. package/src/components/CEditor/index.js +2 -2
  55. package/src/components/CFormSectionHeading/CFormSectionHeading.vue +53 -53
  56. package/src/components/CFormSectionHeading/index.js +2 -2
  57. package/src/components/CGroupedSelect/CGroupedSelect.vue +217 -217
  58. package/src/components/CGroupedSelect/index.js +3 -3
  59. package/src/components/CIcon/CIcon.vue +77 -77
  60. package/src/components/CIcon/index.js +2 -2
  61. package/src/components/CIconDropdown/CIconDropdown.vue +111 -111
  62. package/src/components/CIconDropdown/index.js +2 -2
  63. package/src/components/CInput/CInput.vue +120 -120
  64. package/src/components/CInput/index.js +2 -2
  65. package/src/components/CInputAddon/CInputAddon.vue +202 -202
  66. package/src/components/CInputAddon/index.js +2 -2
  67. package/src/components/CInputEmail/CInputEmail.vue +93 -93
  68. package/src/components/CInputEmail/index.js +2 -2
  69. package/src/components/CModalHeading/CModalHeading.vue +22 -22
  70. package/src/components/CModalHeading/index.js +2 -2
  71. package/src/components/CModuleHelpLinks/CModuleHelpLinks.vue +39 -39
  72. package/src/components/CModuleHelpLinks/index.js +3 -3
  73. package/src/components/CMultiselect/CMultiselect.vue +340 -340
  74. package/src/components/CMultiselect/index.js +2 -2
  75. package/src/components/CMultiselectr/CMultiselectr.vue +44 -44
  76. package/src/components/CMultiselectr/index.js +2 -2
  77. package/src/components/CPageHeading/CPageHeading.vue +56 -56
  78. package/src/components/CPageHeading/index.js +2 -2
  79. package/src/components/CPagination/CPagination.vue +202 -202
  80. package/src/components/CPagination/index.js +2 -2
  81. package/src/components/CPhoneNumber/CPhoneNumber.vue +81 -71
  82. package/src/components/CPhoneNumber/index.js +2 -2
  83. package/src/components/CRadio/CRadio.vue +120 -116
  84. package/src/components/CRadio/index.js +2 -2
  85. package/src/components/CRangeSlider/CRangeSlider.vue +55 -55
  86. package/src/components/CRangeSlider/index.js +2 -2
  87. package/src/components/CReorderableStackedList/CReorderableStackedList.vue +94 -94
  88. package/src/components/CReorderableStackedList/index.js +2 -2
  89. package/src/components/CSelect/CSelect.vue +343 -343
  90. package/src/components/CSelect/index.js +2 -2
  91. package/src/components/CSmallTimeline/CSmallTimeline.vue +40 -40
  92. package/src/components/CSmallTimeline/index.js +2 -2
  93. package/src/components/CStackedList/CStackedList.vue +132 -132
  94. package/src/components/CStackedList/index.js +2 -2
  95. package/src/components/CStats/CStats.vue +111 -111
  96. package/src/components/CStats/index.js +2 -2
  97. package/src/components/CSwitch/CSwitch.vue +140 -140
  98. package/src/components/CSwitch/index.js +2 -2
  99. package/src/components/CTable/CTable.vue +536 -536
  100. package/src/components/CTable/index.js +2 -2
  101. package/src/components/CTabs/CTabs.vue +111 -111
  102. package/src/components/CTabs/index.js +2 -2
  103. package/src/components/CTag/CTag.vue +36 -36
  104. package/src/components/CTag/index.js +2 -2
  105. package/src/components/CTextarea/CTextarea.vue +95 -95
  106. package/src/components/CTextarea/index.js +2 -2
  107. package/src/components/CTimeline/CTimeline.vue +237 -237
  108. package/src/components/CTimeline/index.js +2 -2
  109. package/src/components/CUpload/CUpload.vue +231 -231
  110. package/src/components/CUpload/index.js +2 -2
  111. package/src/components/index.js +48 -48
  112. package/src/icons.js +275 -275
  113. package/src/main.js +22 -22
  114. package/src/stories/CAlerts.stories.js +37 -37
  115. package/src/stories/CAnchorTabs.stories.js +29 -29
  116. package/src/stories/CAnchorTag.stories.js +36 -36
  117. package/src/stories/CAvatar.stories.js +38 -38
  118. package/src/stories/CAvatarGroup.stories.js +100 -100
  119. package/src/stories/CBasicTable.stories.js +316 -316
  120. package/src/stories/CBreadcrumbs.stories.js +24 -24
  121. package/src/stories/CButton.stories.js +46 -46
  122. package/src/stories/CButtonGroup.stories.js +33 -33
  123. package/src/stories/CButtonIcon.stories.js +27 -27
  124. package/src/stories/CButtonLink.stories.js +24 -24
  125. package/src/stories/CButtonSelect.stories.js +32 -32
  126. package/src/stories/CButtonWithDropdown.stories.js +41 -41
  127. package/src/stories/CCalendar.stories.js +16 -16
  128. package/src/stories/CCard.stories.js +30 -30
  129. package/src/stories/CCheckbox.stories.js +29 -29
  130. package/src/stories/CCollapsibleSection.stories.js +28 -28
  131. package/src/stories/CColorDots.stories.js +28 -28
  132. package/src/stories/CConfirmActionModal.stories.js +59 -59
  133. package/src/stories/CDatepicker.stories.js +30 -30
  134. package/src/stories/CDualSelect.stories.js +29 -29
  135. package/src/stories/CEditor.stories.js +30 -30
  136. package/src/stories/CFormSectionHeading.stories.js +34 -34
  137. package/src/stories/CGroupedSelect.stories.js +69 -69
  138. package/src/stories/CIcon.stories.js +26 -26
  139. package/src/stories/CIconDropdown.stories.js +39 -39
  140. package/src/stories/CInput.stories.js +36 -36
  141. package/src/stories/CInputAddon.stories.js +37 -37
  142. package/src/stories/CInputEmail.stories.js +27 -27
  143. package/src/stories/CModalHeading.stories.js +25 -25
  144. package/src/stories/CModuleHelpLinks.stories.js +25 -25
  145. package/src/stories/CMultiselect.stories.js +97 -97
  146. package/src/stories/CMultiselectr.stories.js +23 -23
  147. package/src/stories/CPageHeading.stories.js +32 -32
  148. package/src/stories/CPagination.stories.js +30 -30
  149. package/src/stories/CPhoneNumber.stories.js +29 -29
  150. package/src/stories/CRadio.stories.js +36 -36
  151. package/src/stories/CRangeSlider.stories.js +23 -23
  152. package/src/stories/CReorderableStackedList.stories.js +23 -23
  153. package/src/stories/CSelect.stories.js +50 -50
  154. package/src/stories/CSmallTimeline.stories.js +26 -26
  155. package/src/stories/CStackedList.stories.js +37 -37
  156. package/src/stories/CStats.stories.js +33 -33
  157. package/src/stories/CSwitch.stories.js +28 -28
  158. package/src/stories/CTable.stories.js +77 -77
  159. package/src/stories/CTabs.stories.js +33 -33
  160. package/src/stories/CTag.stories.js +23 -23
  161. package/src/stories/CTextarea.stories.js +32 -32
  162. package/src/stories/CTimeline.stories.js +26 -26
  163. package/src/stories/CUpload.stories.js +36 -36
  164. package/src/stories/Introduction.stories.mdx +207 -207
  165. package/src/stories/Page.vue +88 -88
  166. package/src/stories/assets/code-brackets.svg +0 -0
  167. package/src/stories/assets/colors.svg +0 -0
  168. package/src/stories/assets/comments.svg +0 -0
  169. package/src/stories/assets/direction.svg +0 -0
  170. package/src/stories/assets/flow.svg +0 -0
  171. package/src/stories/assets/plugin.svg +0 -0
  172. package/src/stories/assets/repo.svg +0 -0
  173. package/src/stories/assets/stackalt.svg +0 -0
  174. package/src/stories/header.css +26 -26
  175. package/src/stories/page.css +69 -69
  176. package/src/stories/utils.css +17 -17
@@ -1,202 +1,202 @@
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
- <span v-if="hint" class="text-sm text-gray-500">{{ hint }}</span>
13
- </div>
14
- <div v-if="!inlineAddon && addonType == 'leading'" class="relative mt-1 flex rounded-md">
15
- <span
16
- :class="disabled ? 'opacity-50' : ''"
17
- v-if="addon"
18
- class="inline-flex items-center rounded-l-md border border-r-0 border-gray-300 bg-gray-50 px-3 text-gray-500 sm:text-sm"
19
- >
20
- {{ addon }}
21
- </span>
22
- <input
23
- :type="inputType"
24
- :value="inputValue"
25
- @input="$emit('input', $event.target.value)"
26
- @blur="$emit('blur', $event.target.value)"
27
- :class="{ ...errorClasses, 'rounded-l-md': !addon }"
28
- class="block w-full flex-1 rounded-r-md px-3 py-2 text-gray-900 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 disabled:opacity-50 sm:text-sm"
29
- :placeholder="placeholder"
30
- :disabled="disabled"
31
- />
32
- <div
33
- v-if="!isValidate"
34
- class="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3 text-red-600"
35
- >
36
- <c-icon name="exclamation-circle" type="solid" class="h-5 w-5"></c-icon>
37
- </div>
38
- </div>
39
- <div v-if="!inlineAddon && addonType == 'trailing'" class="relative mt-1 flex rounded-md">
40
- <input
41
- :type="inputType"
42
- :value="inputValue"
43
- @input="$emit('input', $event.target.value)"
44
- @blur="$emit('blur', $event.target.value)"
45
- :class="errorClasses"
46
- class="block w-full flex-1 rounded-l-md px-3 py-2 text-gray-900 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 disabled:opacity-50 sm:text-sm"
47
- :placeholder="placeholder"
48
- :disabled="disabled"
49
- />
50
- <div
51
- v-if="!isValidate"
52
- class="pointer-events-none absolute inset-y-0 right-14 flex items-center pr-3 text-red-600"
53
- >
54
- <c-icon name="exclamation-circle" type="solid" class="h-5 w-5"></c-icon>
55
- </div>
56
- <span
57
- :class="disabled ? 'opacity-50' : ''"
58
- class="inline-flex items-center rounded-r-md border border-l-0 border-gray-300 bg-gray-50 px-4 py-2 text-gray-500 sm:text-sm"
59
- >
60
- {{ addon }}
61
- </span>
62
- </div>
63
- <div v-if="inlineAddon && addonType == 'trailing'" class="relative mt-1 flex rounded-md">
64
- <input
65
- :type="inputType"
66
- :value="inputValue"
67
- @input="$emit('input', $event.target.value)"
68
- @blur="$emit('blur', $event.target.value)"
69
- :class="errorClasses"
70
- class="block w-full flex-1 rounded-md px-3 py-2 text-gray-900 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 disabled:opacity-50 sm:text-sm"
71
- :placeholder="placeholder"
72
- :disabled="disabled"
73
- />
74
- <div class="pointer-events-none absolute inset-y-0 right-3 flex items-center">
75
- <div
76
- v-if="!isValidate"
77
- class="pointer-events-none right-0 flex items-center pr-2 text-red-600"
78
- >
79
- <c-icon name="exclamation-circle" type="solid" class="h-5 w-5"></c-icon>
80
- </div>
81
- <span
82
- class="text-gray-500 sm:text-sm"
83
- :class="[disabled ? 'opacity-50' : '', inputType === 'number' ? 'mr-5' : '']"
84
- >
85
- {{ addon }}
86
- </span>
87
- </div>
88
- </div>
89
- <div v-if="inlineAddon && addonType == 'leading'" class="relative mt-1 flex rounded-md">
90
- <div class="pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3">
91
- <span class="text-gray-500 sm:text-sm">{{ addon }}</span>
92
- </div>
93
- <input
94
- :type="inputType"
95
- :value="inputValue"
96
- @input="$emit('input', $event.target.value)"
97
- @blur="$emit('blur', $event.target.value)"
98
- :class="errorClasses"
99
- :style="`padding-left:${leftPaddingStyle}`"
100
- class="block w-full rounded-md text-gray-900 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 disabled:opacity-50 sm:text-sm"
101
- :placeholder="placeholder"
102
- :disabled="disabled"
103
- />
104
- <div
105
- v-if="!isValidate"
106
- class="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3 text-red-600"
107
- >
108
- <c-icon name="exclamation-circle" type="solid" class="h-5 w-5"></c-icon>
109
- </div>
110
- </div>
111
- <p v-if="!isValidate" class="mt-2 text-left text-sm text-red-600">
112
- {{ errorMessage }}
113
- </p>
114
- <p v-if="helpText && isValidate == true" :class="`mt-2 text-sm ${helpTextColorStyles}`">
115
- {{ helpText }}
116
- </p>
117
- </div>
118
- </template>
119
-
120
- <script>
121
- import CIcon from "../CIcon/CIcon.vue";
122
- export default {
123
- name: "CInputAddon",
124
- components: { CIcon },
125
- props: {
126
- label: {
127
- type: String,
128
- },
129
- placeholder: {
130
- type: String,
131
- },
132
- value: [String, Number],
133
- hint: { type: String },
134
- helpText: {
135
- type: String,
136
- },
137
- addon: { type: String },
138
- helpTextColor: {
139
- type: String,
140
- default: "gray",
141
- },
142
- inlineAddon: { type: Boolean },
143
- addonType: {
144
- type: String,
145
- },
146
- isValidate: { type: Boolean },
147
- errorMessage: {
148
- type: String,
149
- },
150
- disabled: {
151
- type: Boolean,
152
- },
153
- // whether the input field is mandatory or not
154
- isRequired: {
155
- type: Boolean,
156
- },
157
- inputType: {
158
- type: String,
159
- default: "text",
160
- },
161
- },
162
- computed: {
163
- errorClasses() {
164
- return {
165
- "border-red-300 text-red-900 placeholder-red-300 focus:ring-red-500 focus:border-red-500":
166
- this.isValidate == false,
167
- "border-gray-300": this.isValidate == true,
168
- };
169
- },
170
- leftPaddingStyle() {
171
- var leftPadding;
172
- if (this.addon.length <= 2) {
173
- leftPadding = "2rem";
174
- } else if (this.addon.length >= 3) {
175
- leftPadding = "3.5rem";
176
- }
177
- return leftPadding;
178
- },
179
- helpTextColorStyles() {
180
- switch (this.helpTextColor) {
181
- case "green":
182
- return "text-green-500";
183
- case "red":
184
- return "text-red-500";
185
- default:
186
- return "text-gray-500";
187
- }
188
- },
189
- },
190
- data() {
191
- return {
192
- inputValue: this.value,
193
- };
194
- },
195
- methods: {},
196
- watch: {
197
- value() {
198
- this.inputValue = this.value;
199
- },
200
- },
201
- };
202
- </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
+ <span v-if="hint" class="text-sm text-gray-500">{{ hint }}</span>
13
+ </div>
14
+ <div v-if="!inlineAddon && addonType == 'leading'" class="relative mt-1 flex rounded-md">
15
+ <span
16
+ :class="disabled ? 'opacity-50' : ''"
17
+ v-if="addon"
18
+ class="inline-flex items-center rounded-l-md border border-r-0 border-gray-300 bg-gray-50 px-3 text-gray-500 sm:text-sm"
19
+ >
20
+ {{ addon }}
21
+ </span>
22
+ <input
23
+ :type="inputType"
24
+ :value="inputValue"
25
+ @input="$emit('input', $event.target.value)"
26
+ @blur="$emit('blur', $event.target.value)"
27
+ :class="{ ...errorClasses, 'rounded-l-md': !addon }"
28
+ class="block w-full flex-1 rounded-r-md px-3 py-2 text-gray-900 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 disabled:opacity-50 sm:text-sm"
29
+ :placeholder="placeholder"
30
+ :disabled="disabled"
31
+ />
32
+ <div
33
+ v-if="!isValidate"
34
+ class="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3 text-red-600"
35
+ >
36
+ <c-icon name="exclamation-circle" type="solid" class="h-5 w-5"></c-icon>
37
+ </div>
38
+ </div>
39
+ <div v-if="!inlineAddon && addonType == 'trailing'" class="relative mt-1 flex rounded-md">
40
+ <input
41
+ :type="inputType"
42
+ :value="inputValue"
43
+ @input="$emit('input', $event.target.value)"
44
+ @blur="$emit('blur', $event.target.value)"
45
+ :class="errorClasses"
46
+ class="block w-full flex-1 rounded-l-md px-3 py-2 text-gray-900 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 disabled:opacity-50 sm:text-sm"
47
+ :placeholder="placeholder"
48
+ :disabled="disabled"
49
+ />
50
+ <div
51
+ v-if="!isValidate"
52
+ class="pointer-events-none absolute inset-y-0 right-14 flex items-center pr-3 text-red-600"
53
+ >
54
+ <c-icon name="exclamation-circle" type="solid" class="h-5 w-5"></c-icon>
55
+ </div>
56
+ <span
57
+ :class="disabled ? 'opacity-50' : ''"
58
+ class="inline-flex items-center rounded-r-md border border-l-0 border-gray-300 bg-gray-50 px-4 py-2 text-gray-500 sm:text-sm"
59
+ >
60
+ {{ addon }}
61
+ </span>
62
+ </div>
63
+ <div v-if="inlineAddon && addonType == 'trailing'" class="relative mt-1 flex rounded-md">
64
+ <input
65
+ :type="inputType"
66
+ :value="inputValue"
67
+ @input="$emit('input', $event.target.value)"
68
+ @blur="$emit('blur', $event.target.value)"
69
+ :class="errorClasses"
70
+ class="block w-full flex-1 rounded-md px-3 py-2 text-gray-900 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 disabled:opacity-50 sm:text-sm"
71
+ :placeholder="placeholder"
72
+ :disabled="disabled"
73
+ />
74
+ <div class="pointer-events-none absolute inset-y-0 right-3 flex items-center">
75
+ <div
76
+ v-if="!isValidate"
77
+ class="pointer-events-none right-0 flex items-center pr-2 text-red-600"
78
+ >
79
+ <c-icon name="exclamation-circle" type="solid" class="h-5 w-5"></c-icon>
80
+ </div>
81
+ <span
82
+ class="text-gray-500 sm:text-sm"
83
+ :class="[disabled ? 'opacity-50' : '', inputType === 'number' ? 'mr-5' : '']"
84
+ >
85
+ {{ addon }}
86
+ </span>
87
+ </div>
88
+ </div>
89
+ <div v-if="inlineAddon && addonType == 'leading'" class="relative mt-1 flex rounded-md">
90
+ <div class="pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3">
91
+ <span class="text-gray-500 sm:text-sm">{{ addon }}</span>
92
+ </div>
93
+ <input
94
+ :type="inputType"
95
+ :value="inputValue"
96
+ @input="$emit('input', $event.target.value)"
97
+ @blur="$emit('blur', $event.target.value)"
98
+ :class="errorClasses"
99
+ :style="`padding-left:${leftPaddingStyle}`"
100
+ class="block w-full rounded-md text-gray-900 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 disabled:opacity-50 sm:text-sm"
101
+ :placeholder="placeholder"
102
+ :disabled="disabled"
103
+ />
104
+ <div
105
+ v-if="!isValidate"
106
+ class="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3 text-red-600"
107
+ >
108
+ <c-icon name="exclamation-circle" type="solid" class="h-5 w-5"></c-icon>
109
+ </div>
110
+ </div>
111
+ <p v-if="!isValidate" class="mt-2 text-left text-sm text-red-600">
112
+ {{ errorMessage }}
113
+ </p>
114
+ <p v-if="helpText && isValidate == true" :class="`mt-2 text-sm ${helpTextColorStyles}`">
115
+ {{ helpText }}
116
+ </p>
117
+ </div>
118
+ </template>
119
+
120
+ <script>
121
+ import CIcon from "../CIcon/CIcon.vue";
122
+ export default {
123
+ name: "CInputAddon",
124
+ components: { CIcon },
125
+ props: {
126
+ label: {
127
+ type: String,
128
+ },
129
+ placeholder: {
130
+ type: String,
131
+ },
132
+ value: [String, Number],
133
+ hint: { type: String },
134
+ helpText: {
135
+ type: String,
136
+ },
137
+ addon: { type: String },
138
+ helpTextColor: {
139
+ type: String,
140
+ default: "gray",
141
+ },
142
+ inlineAddon: { type: Boolean },
143
+ addonType: {
144
+ type: String,
145
+ },
146
+ isValidate: { type: Boolean },
147
+ errorMessage: {
148
+ type: String,
149
+ },
150
+ disabled: {
151
+ type: Boolean,
152
+ },
153
+ // whether the input field is mandatory or not
154
+ isRequired: {
155
+ type: Boolean,
156
+ },
157
+ inputType: {
158
+ type: String,
159
+ default: "text",
160
+ },
161
+ },
162
+ computed: {
163
+ errorClasses() {
164
+ return {
165
+ "border-red-300 text-red-900 placeholder-red-300 focus:ring-red-500 focus:border-red-500":
166
+ this.isValidate == false,
167
+ "border-gray-300": this.isValidate == true,
168
+ };
169
+ },
170
+ leftPaddingStyle() {
171
+ var leftPadding;
172
+ if (this.addon.length <= 2) {
173
+ leftPadding = "2rem";
174
+ } else if (this.addon.length >= 3) {
175
+ leftPadding = "3.5rem";
176
+ }
177
+ return leftPadding;
178
+ },
179
+ helpTextColorStyles() {
180
+ switch (this.helpTextColor) {
181
+ case "green":
182
+ return "text-green-500";
183
+ case "red":
184
+ return "text-red-500";
185
+ default:
186
+ return "text-gray-500";
187
+ }
188
+ },
189
+ },
190
+ data() {
191
+ return {
192
+ inputValue: this.value,
193
+ };
194
+ },
195
+ methods: {},
196
+ watch: {
197
+ value() {
198
+ this.inputValue = this.value;
199
+ },
200
+ },
201
+ };
202
+ </script>
@@ -1,3 +1,3 @@
1
- import CInputAddon from './CInputAddon.vue'
2
-
1
+ import CInputAddon from './CInputAddon.vue'
2
+
3
3
  export default CInputAddon
@@ -1,93 +1,93 @@
1
- <template>
2
- <div>
3
- <div class="flex justify-between">
4
- <div class="flex items-center">
5
- <!-- label of input field -->
6
- <label v-if="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
- <span v-if="hint" class="text-sm text-gray-500">{{ hint }}</span>
13
- </div>
14
- <div class="relative mt-1 rounded-md">
15
- <input
16
- type="text"
17
- :class="errorClasses"
18
- class="block w-full flex-1 rounded-md px-3 py-2 text-gray-900 focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm"
19
- :placeholder="placeholder"
20
- :value="email"
21
- @blur="checkValidation"
22
- @input="$emit('input', $event.target.value)"
23
- />
24
- <div
25
- v-if="isValidate"
26
- class="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3 text-red-600"
27
- >
28
- <c-icon name="exclamation-circle" type="solid" class="h-5 w-5"></c-icon>
29
- </div>
30
- </div>
31
- <p v-if="isValidate" class="mt-2 text-sm text-red-600">Please enter valid email address</p>
32
- <p v-if="helpText && isValidate == false" class="mt-2 text-sm text-gray-500">
33
- {{ helpText }}
34
- </p>
35
- </div>
36
- </template>
37
-
38
- <script>
39
- import CIcon from "../CIcon/CIcon.vue";
40
- export default {
41
- name: "CInputEmail",
42
- components: { CIcon },
43
- props: {
44
- label: {
45
- type: String,
46
- required: true,
47
- },
48
- placeholder: {
49
- type: String,
50
- },
51
- hint: { type: String },
52
- helpText: {
53
- type: String,
54
- },
55
- // v-model of the field
56
- value: {
57
- type: String,
58
- },
59
- // whether the email field is mandatory or not
60
- isRequired: {
61
- type: Boolean,
62
- },
63
- },
64
- data() {
65
- return {
66
- email: this.value,
67
- isValidate: false,
68
- };
69
- },
70
- computed: {
71
- errorClasses() {
72
- return {
73
- "border-red-300 text-red-900 placeholder-red-300 focus:ring-red-500 focus:border-red-500":
74
- this.isValidate == true,
75
- "border-gray-300": this.isValidate == false,
76
- };
77
- },
78
- },
79
- methods: {
80
- checkValidation() {
81
- this.isValidate =
82
- /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(this.email) || this.email == ""
83
- ? false
84
- : true;
85
- },
86
- },
87
- watch: {
88
- value() {
89
- this.email = this.value;
90
- },
91
- },
92
- };
93
- </script>
1
+ <template>
2
+ <div>
3
+ <div class="flex justify-between">
4
+ <div class="flex items-center">
5
+ <!-- label of input field -->
6
+ <label v-if="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
+ <span v-if="hint" class="text-sm text-gray-500">{{ hint }}</span>
13
+ </div>
14
+ <div class="relative mt-1 rounded-md">
15
+ <input
16
+ type="text"
17
+ :class="errorClasses"
18
+ class="block w-full flex-1 rounded-md px-3 py-2 text-gray-900 focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm"
19
+ :placeholder="placeholder"
20
+ :value="email"
21
+ @blur="checkValidation"
22
+ @input="$emit('input', $event.target.value)"
23
+ />
24
+ <div
25
+ v-if="isValidate"
26
+ class="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3 text-red-600"
27
+ >
28
+ <c-icon name="exclamation-circle" type="solid" class="h-5 w-5"></c-icon>
29
+ </div>
30
+ </div>
31
+ <p v-if="isValidate" class="mt-2 text-sm text-red-600">Please enter valid email address</p>
32
+ <p v-if="helpText && isValidate == false" class="mt-2 text-sm text-gray-500">
33
+ {{ helpText }}
34
+ </p>
35
+ </div>
36
+ </template>
37
+
38
+ <script>
39
+ import CIcon from "../CIcon/CIcon.vue";
40
+ export default {
41
+ name: "CInputEmail",
42
+ components: { CIcon },
43
+ props: {
44
+ label: {
45
+ type: String,
46
+ required: true,
47
+ },
48
+ placeholder: {
49
+ type: String,
50
+ },
51
+ hint: { type: String },
52
+ helpText: {
53
+ type: String,
54
+ },
55
+ // v-model of the field
56
+ value: {
57
+ type: String,
58
+ },
59
+ // whether the email field is mandatory or not
60
+ isRequired: {
61
+ type: Boolean,
62
+ },
63
+ },
64
+ data() {
65
+ return {
66
+ email: this.value,
67
+ isValidate: false,
68
+ };
69
+ },
70
+ computed: {
71
+ errorClasses() {
72
+ return {
73
+ "border-red-300 text-red-900 placeholder-red-300 focus:ring-red-500 focus:border-red-500":
74
+ this.isValidate == true,
75
+ "border-gray-300": this.isValidate == false,
76
+ };
77
+ },
78
+ },
79
+ methods: {
80
+ checkValidation() {
81
+ this.isValidate =
82
+ /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(this.email) || this.email == ""
83
+ ? false
84
+ : true;
85
+ },
86
+ },
87
+ watch: {
88
+ value() {
89
+ this.email = this.value;
90
+ },
91
+ },
92
+ };
93
+ </script>
@@ -1,3 +1,3 @@
1
- import CInputEmail from './CInputEmail.vue'
2
-
1
+ import CInputEmail from './CInputEmail.vue'
2
+
3
3
  export default CInputEmail
@@ -1,22 +1,22 @@
1
- <template>
2
- <div>
3
- <div :class="{ 'border-b-2': divider }" class="pb-2 border-gray-200">
4
- <h3 class="text-lg leading-6 font-medium text-gray-700">
5
- {{ title }}
6
- </h3>
7
- <p v-if="description" class="max-w-4xl text-sm text-gray-500">
8
- {{ description }}
9
- </p>
10
- </div>
11
- </div>
12
- </template>
13
- <script>
14
- export default {
15
- name: "CModalHeading",
16
- props: {
17
- title: { type: String, required: true },
18
- description: { type: String },
19
- divider: { type: Boolean },
20
- },
21
- };
22
- </script>
1
+ <template>
2
+ <div>
3
+ <div :class="{ 'border-b-2': divider }" class="pb-2 border-gray-200">
4
+ <h3 class="text-lg leading-6 font-medium text-gray-700">
5
+ {{ title }}
6
+ </h3>
7
+ <p v-if="description" class="max-w-4xl text-sm text-gray-500">
8
+ {{ description }}
9
+ </p>
10
+ </div>
11
+ </div>
12
+ </template>
13
+ <script>
14
+ export default {
15
+ name: "CModalHeading",
16
+ props: {
17
+ title: { type: String, required: true },
18
+ description: { type: String },
19
+ divider: { type: Boolean },
20
+ },
21
+ };
22
+ </script>
@@ -1,3 +1,3 @@
1
- import CModalHeading from './CModalHeading.vue'
2
-
1
+ import CModalHeading from './CModalHeading.vue'
2
+
3
3
  export default CModalHeading