classcard-ui 0.2.1069 → 0.2.1070

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 (190) hide show
  1. package/README.md +24 -24
  2. package/dist/classcard-ui.common.js +56 -53
  3. package/dist/classcard-ui.common.js.map +1 -1
  4. package/dist/classcard-ui.umd.js +56 -53
  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/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 +212 -212
  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 +152 -152
  25. package/src/components/CButton/index.js +2 -2
  26. package/src/components/CButtonGroup/CButtonGroup.vue +118 -118
  27. package/src/components/CButtonGroup/index.js +2 -2
  28. package/src/components/CButtonIcon/CButtonIcon.vue +117 -117
  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 +134 -134
  33. package/src/components/CButtonSelect/index.js +2 -2
  34. package/src/components/CButtonSelectBorder/CButtonSelectBorder.vue +135 -135
  35. package/src/components/CButtonSelectBorder/index.js +3 -3
  36. package/src/components/CButtonWithDropdown/CButtonWithDropdown.vue +135 -135
  37. package/src/components/CButtonWithDropdown/index.js +2 -2
  38. package/src/components/CCalendar/CCalendar.vue +410 -410
  39. package/src/components/CCalendar/index.js +3 -3
  40. package/src/components/CCard/CCard.vue +49 -49
  41. package/src/components/CCard/index.js +2 -2
  42. package/src/components/CCheckbox/CCheckbox.vue +123 -123
  43. package/src/components/CCheckbox/index.js +2 -2
  44. package/src/components/CCircularButton/CCircularButton.vue +53 -53
  45. package/src/components/CCircularButton/index.js +2 -2
  46. package/src/components/CCollapsibleSection/CCollapsibleSection.vue +101 -101
  47. package/src/components/CCollapsibleSection/index.js +2 -2
  48. package/src/components/CColorDots/CColorDots.vue +51 -51
  49. package/src/components/CColorDots/index.js +3 -3
  50. package/src/components/CConfirmActionModal/CConfirmActionModal.vue +180 -180
  51. package/src/components/CConfirmActionModal/index.js +3 -3
  52. package/src/components/CDatepicker/CDatepicker.vue +201 -201
  53. package/src/components/CDatepicker/index.js +2 -2
  54. package/src/components/CDualSelect/CDualSelect.vue +193 -193
  55. package/src/components/CDualSelect/index.js +2 -2
  56. package/src/components/CEditor/CEditor.vue +98 -98
  57. package/src/components/CEditor/index.js +2 -2
  58. package/src/components/CFormSectionHeading/CFormSectionHeading.vue +53 -53
  59. package/src/components/CFormSectionHeading/index.js +2 -2
  60. package/src/components/CGroupedSelect/CGroupedSelect.vue +245 -245
  61. package/src/components/CGroupedSelect/index.js +3 -3
  62. package/src/components/CIcon/CIcon.vue +91 -91
  63. package/src/components/CIcon/index.js +2 -2
  64. package/src/components/CIconDropdown/CIconDropdown.vue +146 -146
  65. package/src/components/CIconDropdown/index.js +2 -2
  66. package/src/components/CInput/CInput.vue +134 -134
  67. package/src/components/CInput/index.js +2 -2
  68. package/src/components/CInputAddon/CInputAddon.vue +228 -228
  69. package/src/components/CInputAddon/index.js +2 -2
  70. package/src/components/CInputEmail/CInputEmail.vue +93 -93
  71. package/src/components/CInputEmail/index.js +2 -2
  72. package/src/components/CInsetTabs/CInsetTabs.vue +88 -88
  73. package/src/components/CInsetTabs/index.js +3 -3
  74. package/src/components/CModalHeading/CModalHeading.vue +22 -22
  75. package/src/components/CModalHeading/index.js +2 -2
  76. package/src/components/CModuleHelpLinks/CModuleHelpLinks.vue +70 -70
  77. package/src/components/CModuleHelpLinks/index.js +3 -3
  78. package/src/components/CMultiselect/CMultiselect.vue +615 -615
  79. package/src/components/CMultiselect/index.js +2 -2
  80. package/src/components/CMultiselectr/CMultiselectr.vue +44 -44
  81. package/src/components/CMultiselectr/index.js +2 -2
  82. package/src/components/CPageHeading/CPageHeading.vue +56 -56
  83. package/src/components/CPageHeading/index.js +2 -2
  84. package/src/components/CPagination/CPagination.vue +233 -233
  85. package/src/components/CPagination/index.js +2 -2
  86. package/src/components/CPhoneNumber/CPhoneNumber.vue +114 -114
  87. package/src/components/CPhoneNumber/index.js +2 -2
  88. package/src/components/CProgress/CProgress.vue +57 -57
  89. package/src/components/CProgress/index.js +2 -2
  90. package/src/components/CRadio/CRadio.vue +126 -126
  91. package/src/components/CRadio/index.js +2 -2
  92. package/src/components/CRangeSlider/CRangeSlider.vue +55 -55
  93. package/src/components/CRangeSlider/index.js +2 -2
  94. package/src/components/CReorderableStackedList/CReorderableStackedList.vue +94 -94
  95. package/src/components/CReorderableStackedList/index.js +2 -2
  96. package/src/components/CSelect/CSelect.vue +539 -539
  97. package/src/components/CSelect/index.js +2 -2
  98. package/src/components/CSmallTimeline/CSmallTimeline.vue +40 -40
  99. package/src/components/CSmallTimeline/index.js +2 -2
  100. package/src/components/CStackedList/CStackedList.vue +150 -150
  101. package/src/components/CStackedList/index.js +2 -2
  102. package/src/components/CStats/CStats.vue +116 -116
  103. package/src/components/CStats/index.js +2 -2
  104. package/src/components/CSwitch/CSwitch.vue +176 -176
  105. package/src/components/CSwitch/index.js +2 -2
  106. package/src/components/CTabLazy/CTabLazy.vue +63 -63
  107. package/src/components/CTabLazy/index.js +2 -2
  108. package/src/components/CTable/CTable.vue +671 -671
  109. package/src/components/CTable/index.js +2 -2
  110. package/src/components/CTabs/CTabs.vue +169 -169
  111. package/src/components/CTabs/index.js +2 -2
  112. package/src/components/CTag/CTag.vue +59 -59
  113. package/src/components/CTag/index.js +2 -2
  114. package/src/components/CTextarea/CTextarea.vue +107 -107
  115. package/src/components/CTextarea/index.js +2 -2
  116. package/src/components/CTimeline/CTimeline.vue +237 -237
  117. package/src/components/CTimeline/index.js +2 -2
  118. package/src/components/CUpload/CUpload.vue +267 -267
  119. package/src/components/CUpload/index.js +2 -2
  120. package/src/components/index.js +53 -53
  121. package/src/icons.js +459 -453
  122. package/src/main.js +22 -22
  123. package/src/stories/CAlerts.stories.js +37 -37
  124. package/src/stories/CAnchorTabs.stories.js +29 -29
  125. package/src/stories/CAnchorTag.stories.js +36 -36
  126. package/src/stories/CAvatar.stories.js +38 -38
  127. package/src/stories/CAvatarGroup.stories.js +100 -100
  128. package/src/stories/CBasicTable.stories.js +316 -316
  129. package/src/stories/CBreadcrumbs.stories.js +24 -24
  130. package/src/stories/CButton.stories.js +47 -47
  131. package/src/stories/CButtonGroup.stories.js +33 -33
  132. package/src/stories/CButtonIcon.stories.js +27 -27
  133. package/src/stories/CButtonLink.stories.js +24 -24
  134. package/src/stories/CButtonSelect.stories.js +41 -41
  135. package/src/stories/CButtonSelectBorder.stories.js +48 -48
  136. package/src/stories/CButtonWithDropdown.stories.js +41 -41
  137. package/src/stories/CCalendar.stories.js +16 -16
  138. package/src/stories/CCard.stories.js +30 -30
  139. package/src/stories/CCheckbox.stories.js +29 -29
  140. package/src/stories/CCircularButton.stories.js +29 -29
  141. package/src/stories/CCollapsibleSection.stories.js +28 -28
  142. package/src/stories/CColorDots.stories.js +28 -28
  143. package/src/stories/CConfirmActionModal.stories.js +59 -59
  144. package/src/stories/CDatepicker.stories.js +30 -30
  145. package/src/stories/CDualSelect.stories.js +29 -29
  146. package/src/stories/CEditor.stories.js +30 -30
  147. package/src/stories/CFormSectionHeading.stories.js +34 -34
  148. package/src/stories/CGroupedSelect.stories.js +71 -71
  149. package/src/stories/CIcon.stories.js +28 -28
  150. package/src/stories/CIconDropdown.stories.js +45 -45
  151. package/src/stories/CInput.stories.js +36 -36
  152. package/src/stories/CInputAddon.stories.js +37 -37
  153. package/src/stories/CInputEmail.stories.js +27 -27
  154. package/src/stories/CInsetTabs.stories.js +38 -38
  155. package/src/stories/CModalHeading.stories.js +25 -25
  156. package/src/stories/CModuleHelpLinks.stories.js +25 -25
  157. package/src/stories/CMultiselect.stories.js +167 -167
  158. package/src/stories/CMultiselectr.stories.js +23 -23
  159. package/src/stories/CPageHeading.stories.js +32 -32
  160. package/src/stories/CPagination.stories.js +30 -30
  161. package/src/stories/CPhoneNumber.stories.js +29 -29
  162. package/src/stories/CProgress.stories.js +23 -23
  163. package/src/stories/CRadio.stories.js +36 -36
  164. package/src/stories/CRangeSlider.stories.js +23 -23
  165. package/src/stories/CReorderableStackedList.stories.js +23 -23
  166. package/src/stories/CSelect.stories.js +109 -109
  167. package/src/stories/CSmallTimeline.stories.js +26 -26
  168. package/src/stories/CStackedList.stories.js +37 -37
  169. package/src/stories/CStats.stories.js +33 -33
  170. package/src/stories/CSwitch.stories.js +28 -28
  171. package/src/stories/CTabLazy.stories.js +26 -26
  172. package/src/stories/CTable.stories.js +169 -169
  173. package/src/stories/CTabs.stories.js +36 -36
  174. package/src/stories/CTag.stories.js +34 -34
  175. package/src/stories/CTextarea.stories.js +32 -32
  176. package/src/stories/CTimeline.stories.js +26 -26
  177. package/src/stories/CUpload.stories.js +36 -36
  178. package/src/stories/Introduction.stories.mdx +207 -207
  179. package/src/stories/Page.vue +88 -88
  180. package/src/stories/assets/code-brackets.svg +0 -0
  181. package/src/stories/assets/colors.svg +0 -0
  182. package/src/stories/assets/comments.svg +0 -0
  183. package/src/stories/assets/direction.svg +0 -0
  184. package/src/stories/assets/flow.svg +0 -0
  185. package/src/stories/assets/plugin.svg +0 -0
  186. package/src/stories/assets/repo.svg +0 -0
  187. package/src/stories/assets/stackalt.svg +0 -0
  188. package/src/stories/header.css +26 -26
  189. package/src/stories/page.css +69 -69
  190. package/src/stories/utils.css +17 -17
@@ -1,193 +1,193 @@
1
- <template>
2
- <div>
3
- <div class="flex">
4
- <button
5
- type="button"
6
- aria-haspopup="listbox"
7
- aria-expanded="true"
8
- aria-labelledby="listbox-label"
9
- @click="toggleFirstDropdown = !toggleFirstDropdown"
10
- @blur="close()"
11
- class="relative inline-flex items-center pl-3 pr-10 py-2 text-left rounded-l-md border border-gray-300 bg-white text-sm font-medium text-gray-900 hover:bg-gray-50 focus:z-10 focus:outline-none focus:ring-1 focus:ring-indigo-500 focus:border-indigo-500 shadow-sm disabled:opacity-50"
12
- :disabled="isDisabled"
13
- >
14
- <span class="block truncate">
15
- {{ firstDropdownSelectedValue ? firstDropdownSelectedValue : "Select a option" }}
16
- </span>
17
- <span class="absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none">
18
- <c-icon name="chevron-down" type="solid" class="h-5 w-5"></c-icon>
19
- </span>
20
- </button>
21
- <button
22
- type="button"
23
- aria-haspopup="listbox"
24
- aria-expanded="true"
25
- aria-labelledby="listbox-label"
26
- @click="toggleSecondDropdown = !toggleSecondDropdown"
27
- @blur="close()"
28
- class="relative items-center -ml-px pl-3 pr-10 py-2 text-left rounded-r-md border border-gray-300 bg-white text-sm font-medium text-gray-900 hover:bg-gray-50 focus:z-10 focus:outline-none focus:ring-1 focus:ring-indigo-500 focus:border-indigo-500 shadow-sm disabled:opacity-50"
29
- :disabled="isDisabled"
30
- >
31
- <span class="block truncate">
32
- {{ secondDropdownSelectedValue ? secondDropdownSelectedValue : "Select a option" }}
33
- </span>
34
- <span class="absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none">
35
- <c-icon name="chevron-down" type="solid" class="h-5 w-5"></c-icon>
36
- </span>
37
- </button>
38
- </div>
39
- <transition
40
- enter-active-class="transition ease-out duration-100"
41
- enter-class="transform opacity-0 scale-95"
42
- enter-to-class="transform opacity-100 scale-100"
43
- leave-active-class="transition ease-in duration-75"
44
- leave-class="transform opacity-100 scale-100"
45
- leave-to-class="transform opacity-0 scale-95"
46
- >
47
- <div
48
- v-if="toggleFirstDropdown && !isDisabled"
49
- class="origin-top-right absolute mt-2 -mr-1 w-56 rounded-md shadow-lg bg-white ring-1 ring-gray-900 ring-opacity-5 z-10"
50
- >
51
- <ul
52
- tabindex="-1"
53
- role="listbox"
54
- aria-labelledby="listbox-label"
55
- class="max-h-60 rounded-md py-1 text-base ring-1 ring-black ring-opacity-5 overflow-auto focus:outline-none sm:text-sm"
56
- >
57
- <li
58
- v-for="item in firstDropdownOptions"
59
- v-bind:key="item.items"
60
- role="menuitem"
61
- class="text-gray-900 select-none relative py-2 pl-3 pr-9 cursor-pointer"
62
- @mousedown="handleFirstClick(item)"
63
- >
64
- <span class="font-normal block truncate list-options">
65
- {{ item.text }}
66
- </span>
67
- </li>
68
- </ul>
69
- </div>
70
- </transition>
71
- <transition
72
- enter-active-class="transition ease-out duration-100"
73
- enter-class="transform opacity-0 scale-95"
74
- enter-to-class="transform opacity-100 scale-100"
75
- leave-active-class="transition ease-in duration-75"
76
- leave-class="transform opacity-100 scale-100"
77
- leave-to-class="transform opacity-0 scale-95"
78
- >
79
- <div
80
- v-if="toggleSecondDropdown && !isDisabled"
81
- class="origin-top-right absolute mt-2 -mr-1 w-56 rounded-md shadow-lg bg-white ring-1 ring-gray-900 ring-opacity-5 z-10"
82
- >
83
- <ul
84
- tabindex="-1"
85
- role="listbox"
86
- aria-labelledby="listbox-label"
87
- class="max-h-60 rounded-md py-1 text-base ring-1 ring-black ring-opacity-5 overflow-auto focus:outline-none sm:text-sm"
88
- >
89
- <li
90
- v-for="item in secondDropdownOptions"
91
- v-bind:key="item.items"
92
- role="menuitem"
93
- class="text-gray-900 select-none relative py-2 pl-3 pr-9 cursor-pointer"
94
- @mousedown="handleSecondClick(item)"
95
- >
96
- <span class="font-normal block truncate list-options">
97
- {{ item.text }}
98
- </span>
99
- </li>
100
- </ul>
101
- </div>
102
- </transition>
103
- <!-- validation error message -->
104
- <p v-if="!isValidate" class="mt-2 text-sm text-red-600">
105
- {{ errorMessage }}
106
- </p>
107
- </div>
108
- </template>
109
-
110
- <script>
111
- import CIcon from "../CIcon/CIcon.vue";
112
- export default {
113
- name: "CDualSelect",
114
- components: { CIcon },
115
- props: {
116
- // validation is passed or not
117
- isValidate: { type: Boolean },
118
- // validation error message
119
- errorMessage: {
120
- type: String,
121
- },
122
- label: {
123
- type: String,
124
- required: true,
125
- },
126
- firstDropdownValue: {
127
- type: String,
128
- },
129
- secondDropdownValue: {
130
- type: String,
131
- },
132
- firstDropdownOptions: {
133
- type: Array,
134
- required: true,
135
- },
136
- secondDropdownOptions: {
137
- type: Array,
138
- },
139
- onChangeFirstOptions: {
140
- type: Function,
141
- },
142
- onChangeSecondOptions: {
143
- type: Function,
144
- },
145
- isDisabled: {
146
- type: Boolean,
147
- },
148
- },
149
- data() {
150
- return {
151
- toggleFirstDropdown: false,
152
- toggleSecondDropdown: false,
153
- firstDropdownSelectedValue: this.firstDropdownValue ? this.firstDropdownValue : "",
154
- secondDropdownSelectedValue: this.secondDropdownValue ? this.secondDropdownValue : "",
155
- };
156
- },
157
- methods: {
158
- close() {
159
- this.toggleFirstDropdown = false;
160
- this.toggleSecondDropdown = false;
161
- },
162
- handleFirstClick(item) {
163
- this.firstDropdownSelectedValue = item.text;
164
- this.$emit("onChangeFirstOptions", item);
165
- },
166
- handleSecondClick(item) {
167
- this.secondDropdownSelectedValue = item.text;
168
- this.$emit("onChangeSecondOptions", item);
169
- },
170
- },
171
- computed: {
172
- classes() {
173
- return {
174
- "text-gray-700 border-gray-300 hover:bg-gray-50 focus:ring-indigo-600":
175
- this.type == "secondary",
176
- "text-white hover:bg-indigo-800 bg-indigo-700 focus:ring-indigo-600":
177
- this.type == "primary",
178
- "text-white hover:bg-red-800 bg-red-700 focus:ring-red-600": this.type == "danger",
179
- "text-white hover:bg-green-800 bg-green-700 focus:ring-green-600": this.type == "success",
180
- "cursor-default pointer-events-none": this.isLoading,
181
- };
182
- },
183
- },
184
- watch: {
185
- firstDropdownValue() {
186
- this.firstDropdownSelectedValue = this.firstDropdownValue;
187
- this.secondDropdownSelectedValue = this.secondDropdownValue;
188
- },
189
- },
190
- };
191
- </script>
192
-
193
- <style></style>
1
+ <template>
2
+ <div>
3
+ <div class="flex">
4
+ <button
5
+ type="button"
6
+ aria-haspopup="listbox"
7
+ aria-expanded="true"
8
+ aria-labelledby="listbox-label"
9
+ @click="toggleFirstDropdown = !toggleFirstDropdown"
10
+ @blur="close()"
11
+ class="relative inline-flex items-center pl-3 pr-10 py-2 text-left rounded-l-md border border-gray-300 bg-white text-sm font-medium text-gray-900 hover:bg-gray-50 focus:z-10 focus:outline-none focus:ring-1 focus:ring-indigo-500 focus:border-indigo-500 shadow-sm disabled:opacity-50"
12
+ :disabled="isDisabled"
13
+ >
14
+ <span class="block truncate">
15
+ {{ firstDropdownSelectedValue ? firstDropdownSelectedValue : "Select a option" }}
16
+ </span>
17
+ <span class="absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none">
18
+ <c-icon name="chevron-down" type="solid" class="h-5 w-5"></c-icon>
19
+ </span>
20
+ </button>
21
+ <button
22
+ type="button"
23
+ aria-haspopup="listbox"
24
+ aria-expanded="true"
25
+ aria-labelledby="listbox-label"
26
+ @click="toggleSecondDropdown = !toggleSecondDropdown"
27
+ @blur="close()"
28
+ class="relative items-center -ml-px pl-3 pr-10 py-2 text-left rounded-r-md border border-gray-300 bg-white text-sm font-medium text-gray-900 hover:bg-gray-50 focus:z-10 focus:outline-none focus:ring-1 focus:ring-indigo-500 focus:border-indigo-500 shadow-sm disabled:opacity-50"
29
+ :disabled="isDisabled"
30
+ >
31
+ <span class="block truncate">
32
+ {{ secondDropdownSelectedValue ? secondDropdownSelectedValue : "Select a option" }}
33
+ </span>
34
+ <span class="absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none">
35
+ <c-icon name="chevron-down" type="solid" class="h-5 w-5"></c-icon>
36
+ </span>
37
+ </button>
38
+ </div>
39
+ <transition
40
+ enter-active-class="transition ease-out duration-100"
41
+ enter-class="transform opacity-0 scale-95"
42
+ enter-to-class="transform opacity-100 scale-100"
43
+ leave-active-class="transition ease-in duration-75"
44
+ leave-class="transform opacity-100 scale-100"
45
+ leave-to-class="transform opacity-0 scale-95"
46
+ >
47
+ <div
48
+ v-if="toggleFirstDropdown && !isDisabled"
49
+ class="origin-top-right absolute mt-2 -mr-1 w-56 rounded-md shadow-lg bg-white ring-1 ring-gray-900 ring-opacity-5 z-10"
50
+ >
51
+ <ul
52
+ tabindex="-1"
53
+ role="listbox"
54
+ aria-labelledby="listbox-label"
55
+ class="max-h-60 rounded-md py-1 text-base ring-1 ring-black ring-opacity-5 overflow-auto focus:outline-none sm:text-sm"
56
+ >
57
+ <li
58
+ v-for="item in firstDropdownOptions"
59
+ v-bind:key="item.items"
60
+ role="menuitem"
61
+ class="text-gray-900 select-none relative py-2 pl-3 pr-9 cursor-pointer"
62
+ @mousedown="handleFirstClick(item)"
63
+ >
64
+ <span class="font-normal block truncate list-options">
65
+ {{ item.text }}
66
+ </span>
67
+ </li>
68
+ </ul>
69
+ </div>
70
+ </transition>
71
+ <transition
72
+ enter-active-class="transition ease-out duration-100"
73
+ enter-class="transform opacity-0 scale-95"
74
+ enter-to-class="transform opacity-100 scale-100"
75
+ leave-active-class="transition ease-in duration-75"
76
+ leave-class="transform opacity-100 scale-100"
77
+ leave-to-class="transform opacity-0 scale-95"
78
+ >
79
+ <div
80
+ v-if="toggleSecondDropdown && !isDisabled"
81
+ class="origin-top-right absolute mt-2 -mr-1 w-56 rounded-md shadow-lg bg-white ring-1 ring-gray-900 ring-opacity-5 z-10"
82
+ >
83
+ <ul
84
+ tabindex="-1"
85
+ role="listbox"
86
+ aria-labelledby="listbox-label"
87
+ class="max-h-60 rounded-md py-1 text-base ring-1 ring-black ring-opacity-5 overflow-auto focus:outline-none sm:text-sm"
88
+ >
89
+ <li
90
+ v-for="item in secondDropdownOptions"
91
+ v-bind:key="item.items"
92
+ role="menuitem"
93
+ class="text-gray-900 select-none relative py-2 pl-3 pr-9 cursor-pointer"
94
+ @mousedown="handleSecondClick(item)"
95
+ >
96
+ <span class="font-normal block truncate list-options">
97
+ {{ item.text }}
98
+ </span>
99
+ </li>
100
+ </ul>
101
+ </div>
102
+ </transition>
103
+ <!-- validation error message -->
104
+ <p v-if="!isValidate" class="mt-2 text-sm text-red-600">
105
+ {{ errorMessage }}
106
+ </p>
107
+ </div>
108
+ </template>
109
+
110
+ <script>
111
+ import CIcon from "../CIcon/CIcon.vue";
112
+ export default {
113
+ name: "CDualSelect",
114
+ components: { CIcon },
115
+ props: {
116
+ // validation is passed or not
117
+ isValidate: { type: Boolean },
118
+ // validation error message
119
+ errorMessage: {
120
+ type: String,
121
+ },
122
+ label: {
123
+ type: String,
124
+ required: true,
125
+ },
126
+ firstDropdownValue: {
127
+ type: String,
128
+ },
129
+ secondDropdownValue: {
130
+ type: String,
131
+ },
132
+ firstDropdownOptions: {
133
+ type: Array,
134
+ required: true,
135
+ },
136
+ secondDropdownOptions: {
137
+ type: Array,
138
+ },
139
+ onChangeFirstOptions: {
140
+ type: Function,
141
+ },
142
+ onChangeSecondOptions: {
143
+ type: Function,
144
+ },
145
+ isDisabled: {
146
+ type: Boolean,
147
+ },
148
+ },
149
+ data() {
150
+ return {
151
+ toggleFirstDropdown: false,
152
+ toggleSecondDropdown: false,
153
+ firstDropdownSelectedValue: this.firstDropdownValue ? this.firstDropdownValue : "",
154
+ secondDropdownSelectedValue: this.secondDropdownValue ? this.secondDropdownValue : "",
155
+ };
156
+ },
157
+ methods: {
158
+ close() {
159
+ this.toggleFirstDropdown = false;
160
+ this.toggleSecondDropdown = false;
161
+ },
162
+ handleFirstClick(item) {
163
+ this.firstDropdownSelectedValue = item.text;
164
+ this.$emit("onChangeFirstOptions", item);
165
+ },
166
+ handleSecondClick(item) {
167
+ this.secondDropdownSelectedValue = item.text;
168
+ this.$emit("onChangeSecondOptions", item);
169
+ },
170
+ },
171
+ computed: {
172
+ classes() {
173
+ return {
174
+ "text-gray-700 border-gray-300 hover:bg-gray-50 focus:ring-indigo-600":
175
+ this.type == "secondary",
176
+ "text-white hover:bg-indigo-800 bg-indigo-700 focus:ring-indigo-600":
177
+ this.type == "primary",
178
+ "text-white hover:bg-red-800 bg-red-700 focus:ring-red-600": this.type == "danger",
179
+ "text-white hover:bg-green-800 bg-green-700 focus:ring-green-600": this.type == "success",
180
+ "cursor-default pointer-events-none": this.isLoading,
181
+ };
182
+ },
183
+ },
184
+ watch: {
185
+ firstDropdownValue() {
186
+ this.firstDropdownSelectedValue = this.firstDropdownValue;
187
+ this.secondDropdownSelectedValue = this.secondDropdownValue;
188
+ },
189
+ },
190
+ };
191
+ </script>
192
+
193
+ <style></style>
@@ -1,3 +1,3 @@
1
- import CDualSelect from './CDualSelect.vue'
2
-
1
+ import CDualSelect from './CDualSelect.vue'
2
+
3
3
  export default CDualSelect
@@ -1,98 +1,98 @@
1
- <template>
2
- <div>
3
- <div class="flex justify-between">
4
- <p class="text-sm font-medium text-gray-900">{{ label }}</p>
5
- <p class="text-sm text-gray-500" v-if="hint">{{ hint }}</p>
6
- </div>
7
- <quill-editor
8
- :class="`mt-1 rounded-md bg-white ${
9
- disabled ? 'opacity-50' : ''
10
- } text-sm shadow-sm`"
11
- :value="content"
12
- :options="editorOption"
13
- @change="onChange($event)"
14
- @ready="onReady($event)"
15
- :disabled="disabled"
16
- ></quill-editor>
17
- <p v-if="helpText" class="mt-2 text-sm text-gray-500">
18
- {{ helpText }}
19
- </p>
20
- </div>
21
- </template>
22
- <script>
23
- import "quill/dist/quill.core.css";
24
- import "quill/dist/quill.snow.css";
25
- import "quill/dist/quill.bubble.css";
26
- import { quillEditor } from "vue-quill-editor";
27
- export default {
28
- name: "CEditor",
29
- components: { quillEditor },
30
- props: {
31
- content: {
32
- type: String,
33
- },
34
- label: {
35
- type: String,
36
- },
37
- hint: {
38
- type: String,
39
- },
40
- helpText: {
41
- type: String,
42
- },
43
- toolbarOptions: {
44
- type: Array,
45
- },
46
- onEditorChange: {
47
- type: Function,
48
- },
49
- placeholder: {
50
- type: String,
51
- },
52
- disabled: {
53
- type: Boolean,
54
- default: false,
55
- },
56
- },
57
- methods: {
58
- onChange(params) {
59
- this.$emit("onEditorChange", params);
60
- },
61
- onReady(params) {
62
- this.$emit("onEditorReady", params);
63
- },
64
- },
65
- computed: {
66
- editorOption() {
67
- return {
68
- modules: {
69
- toolbar: {
70
- container: this.toolbarOptions,
71
- },
72
- },
73
- placeholder: this.placeholder,
74
- };
75
- },
76
- },
77
- };
78
- </script>
79
- <style>
80
- .ql-toolbar.ql-snow {
81
- border-top-left-radius: 0.375rem;
82
- border-top-right-radius: 0.375rem;
83
- }
84
-
85
- .ql-container.ql-snow {
86
- border-bottom-left-radius: 0.375rem;
87
- border-bottom-right-radius: 0.375rem;
88
- min-height: 5rem;
89
- }
90
-
91
- .ql-editor {
92
- @apply text-sm text-gray-900;
93
- max-height: 150px;
94
- }
95
- .ql-editor.ql-blank::before {
96
- @apply not-italic text-gray-500;
97
- }
98
- </style>
1
+ <template>
2
+ <div>
3
+ <div class="flex justify-between">
4
+ <p class="text-sm font-medium text-gray-900">{{ label }}</p>
5
+ <p class="text-sm text-gray-500" v-if="hint">{{ hint }}</p>
6
+ </div>
7
+ <quill-editor
8
+ :class="`mt-1 rounded-md bg-white ${
9
+ disabled ? 'opacity-50' : ''
10
+ } text-sm shadow-sm`"
11
+ :value="content"
12
+ :options="editorOption"
13
+ @change="onChange($event)"
14
+ @ready="onReady($event)"
15
+ :disabled="disabled"
16
+ ></quill-editor>
17
+ <p v-if="helpText" class="mt-2 text-sm text-gray-500">
18
+ {{ helpText }}
19
+ </p>
20
+ </div>
21
+ </template>
22
+ <script>
23
+ import "quill/dist/quill.core.css";
24
+ import "quill/dist/quill.snow.css";
25
+ import "quill/dist/quill.bubble.css";
26
+ import { quillEditor } from "vue-quill-editor";
27
+ export default {
28
+ name: "CEditor",
29
+ components: { quillEditor },
30
+ props: {
31
+ content: {
32
+ type: String,
33
+ },
34
+ label: {
35
+ type: String,
36
+ },
37
+ hint: {
38
+ type: String,
39
+ },
40
+ helpText: {
41
+ type: String,
42
+ },
43
+ toolbarOptions: {
44
+ type: Array,
45
+ },
46
+ onEditorChange: {
47
+ type: Function,
48
+ },
49
+ placeholder: {
50
+ type: String,
51
+ },
52
+ disabled: {
53
+ type: Boolean,
54
+ default: false,
55
+ },
56
+ },
57
+ methods: {
58
+ onChange(params) {
59
+ this.$emit("onEditorChange", params);
60
+ },
61
+ onReady(params) {
62
+ this.$emit("onEditorReady", params);
63
+ },
64
+ },
65
+ computed: {
66
+ editorOption() {
67
+ return {
68
+ modules: {
69
+ toolbar: {
70
+ container: this.toolbarOptions,
71
+ },
72
+ },
73
+ placeholder: this.placeholder,
74
+ };
75
+ },
76
+ },
77
+ };
78
+ </script>
79
+ <style>
80
+ .ql-toolbar.ql-snow {
81
+ border-top-left-radius: 0.375rem;
82
+ border-top-right-radius: 0.375rem;
83
+ }
84
+
85
+ .ql-container.ql-snow {
86
+ border-bottom-left-radius: 0.375rem;
87
+ border-bottom-right-radius: 0.375rem;
88
+ min-height: 5rem;
89
+ }
90
+
91
+ .ql-editor {
92
+ @apply text-sm text-gray-900;
93
+ max-height: 150px;
94
+ }
95
+ .ql-editor.ql-blank::before {
96
+ @apply not-italic text-gray-500;
97
+ }
98
+ </style>
@@ -1,3 +1,3 @@
1
- import CEditor from './CEditor.vue'
2
-
1
+ import CEditor from './CEditor.vue'
2
+
3
3
  export default CEditor