classcard-ui 0.2.666 → 0.2.671

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 (174) hide show
  1. package/dist/classcard-ui.common.js +69 -81
  2. package/dist/classcard-ui.common.js.map +1 -1
  3. package/dist/classcard-ui.umd.js +69 -81
  4. package/dist/classcard-ui.umd.js.map +1 -1
  5. package/dist/classcard-ui.umd.min.js +1 -1
  6. package/dist/classcard-ui.umd.min.js.map +1 -1
  7. package/package.json +6 -7
  8. package/src/App.vue +0 -16
  9. package/src/components/CAlerts/CAlerts.vue +0 -70
  10. package/src/components/CAlerts/index.js +0 -3
  11. package/src/components/CAnchorTabs/CAnchorTabs.vue +0 -96
  12. package/src/components/CAnchorTabs/index.js +0 -3
  13. package/src/components/CAnchorTag/CAnchorTag.vue +0 -62
  14. package/src/components/CAnchorTag/index.js +0 -3
  15. package/src/components/CAvatar/CAvatar.vue +0 -112
  16. package/src/components/CAvatar/index.js +0 -3
  17. package/src/components/CAvatarGroup/CAvatarGroup.vue +0 -145
  18. package/src/components/CAvatarGroup/index.js +0 -3
  19. package/src/components/CBasicTable/CBasicTable.vue +0 -184
  20. package/src/components/CBasicTable/index.js +0 -3
  21. package/src/components/CBreadcrumbs/CBreadcrumbs.vue +0 -38
  22. package/src/components/CBreadcrumbs/index.js +0 -3
  23. package/src/components/CButton/CButton.vue +0 -147
  24. package/src/components/CButton/index.js +0 -3
  25. package/src/components/CButtonGroup/CButtonGroup.vue +0 -116
  26. package/src/components/CButtonGroup/index.js +0 -3
  27. package/src/components/CButtonIcon/CButtonIcon.vue +0 -91
  28. package/src/components/CButtonIcon/index.js +0 -3
  29. package/src/components/CButtonLink/CButtonLink.vue +0 -39
  30. package/src/components/CButtonLink/index.js +0 -3
  31. package/src/components/CButtonSelect/CButtonSelect.vue +0 -103
  32. package/src/components/CButtonSelect/index.js +0 -3
  33. package/src/components/CButtonWithDropdown/CButtonWithDropdown.vue +0 -168
  34. package/src/components/CButtonWithDropdown/index.js +0 -3
  35. package/src/components/CCalendar/CCalendar.vue +0 -401
  36. package/src/components/CCalendar/index.js +0 -3
  37. package/src/components/CCard/CCard.vue +0 -49
  38. package/src/components/CCard/index.js +0 -3
  39. package/src/components/CCheckbox/CCheckbox.vue +0 -70
  40. package/src/components/CCheckbox/index.js +0 -3
  41. package/src/components/CCollapsibleSection/CCollapsibleSection.vue +0 -99
  42. package/src/components/CCollapsibleSection/index.js +0 -3
  43. package/src/components/CColorDots/CColorDots.vue +0 -35
  44. package/src/components/CColorDots/index.js +0 -3
  45. package/src/components/CConfirmActionModal/CConfirmActionModal.vue +0 -120
  46. package/src/components/CConfirmActionModal/index.js +0 -3
  47. package/src/components/CDatepicker/CDatepicker.vue +0 -139
  48. package/src/components/CDatepicker/index.js +0 -3
  49. package/src/components/CDualSelect/CDualSelect.vue +0 -193
  50. package/src/components/CDualSelect/index.js +0 -3
  51. package/src/components/CEditor/CEditor.vue +0 -96
  52. package/src/components/CEditor/index.js +0 -3
  53. package/src/components/CFormSectionHeading/CFormSectionHeading.vue +0 -53
  54. package/src/components/CFormSectionHeading/index.js +0 -3
  55. package/src/components/CGroupedSelect/CGroupedSelect.vue +0 -217
  56. package/src/components/CGroupedSelect/index.js +0 -3
  57. package/src/components/CIcon/CIcon.vue +0 -77
  58. package/src/components/CIcon/index.js +0 -3
  59. package/src/components/CIconDropdown/CIconDropdown.vue +0 -111
  60. package/src/components/CIconDropdown/index.js +0 -3
  61. package/src/components/CInput/CInput.vue +0 -120
  62. package/src/components/CInput/index.js +0 -3
  63. package/src/components/CInputAddon/CInputAddon.vue +0 -202
  64. package/src/components/CInputAddon/index.js +0 -3
  65. package/src/components/CInputEmail/CInputEmail.vue +0 -93
  66. package/src/components/CInputEmail/index.js +0 -3
  67. package/src/components/CModalHeading/CModalHeading.vue +0 -22
  68. package/src/components/CModalHeading/index.js +0 -3
  69. package/src/components/CModuleHelpLinks/CModuleHelpLinks.vue +0 -39
  70. package/src/components/CModuleHelpLinks/index.js +0 -3
  71. package/src/components/CMultiselect/CMultiselect.vue +0 -333
  72. package/src/components/CMultiselect/index.js +0 -3
  73. package/src/components/CMultiselectr/CMultiselectr.vue +0 -44
  74. package/src/components/CMultiselectr/index.js +0 -3
  75. package/src/components/CPageHeading/CPageHeading.vue +0 -56
  76. package/src/components/CPageHeading/index.js +0 -3
  77. package/src/components/CPagination/CPagination.vue +0 -202
  78. package/src/components/CPagination/index.js +0 -3
  79. package/src/components/CPhoneNumber/CPhoneNumber.vue +0 -81
  80. package/src/components/CPhoneNumber/index.js +0 -3
  81. package/src/components/CRadio/CRadio.vue +0 -106
  82. package/src/components/CRadio/index.js +0 -3
  83. package/src/components/CRangeSlider/CRangeSlider.vue +0 -55
  84. package/src/components/CRangeSlider/index.js +0 -3
  85. package/src/components/CReorderableStackedList/CReorderableStackedList.vue +0 -94
  86. package/src/components/CReorderableStackedList/index.js +0 -3
  87. package/src/components/CSelect/CSelect.vue +0 -343
  88. package/src/components/CSelect/index.js +0 -3
  89. package/src/components/CSmallTimeline/CSmallTimeline.vue +0 -40
  90. package/src/components/CSmallTimeline/index.js +0 -3
  91. package/src/components/CStackedList/CStackedList.vue +0 -132
  92. package/src/components/CStackedList/index.js +0 -3
  93. package/src/components/CStats/CStats.vue +0 -111
  94. package/src/components/CStats/index.js +0 -3
  95. package/src/components/CSwitch/CSwitch.vue +0 -140
  96. package/src/components/CSwitch/index.js +0 -3
  97. package/src/components/CTable/CTable.vue +0 -536
  98. package/src/components/CTable/index.js +0 -3
  99. package/src/components/CTabs/CTabs.vue +0 -111
  100. package/src/components/CTabs/index.js +0 -3
  101. package/src/components/CTag/CTag.vue +0 -36
  102. package/src/components/CTag/index.js +0 -3
  103. package/src/components/CTextarea/CTextarea.vue +0 -95
  104. package/src/components/CTextarea/index.js +0 -3
  105. package/src/components/CTimeline/CTimeline.vue +0 -237
  106. package/src/components/CTimeline/index.js +0 -3
  107. package/src/components/CUpload/CUpload.vue +0 -231
  108. package/src/components/CUpload/index.js +0 -3
  109. package/src/components/index.js +0 -48
  110. package/src/icons.js +0 -275
  111. package/src/main.js +0 -22
  112. package/src/stories/CAlerts.stories.js +0 -37
  113. package/src/stories/CAnchorTabs.stories.js +0 -29
  114. package/src/stories/CAnchorTag.stories.js +0 -36
  115. package/src/stories/CAvatar.stories.js +0 -38
  116. package/src/stories/CAvatarGroup.stories.js +0 -100
  117. package/src/stories/CBasicTable.stories.js +0 -316
  118. package/src/stories/CBreadcrumbs.stories.js +0 -24
  119. package/src/stories/CButton.stories.js +0 -46
  120. package/src/stories/CButtonGroup.stories.js +0 -33
  121. package/src/stories/CButtonIcon.stories.js +0 -27
  122. package/src/stories/CButtonLink.stories.js +0 -24
  123. package/src/stories/CButtonSelect.stories.js +0 -32
  124. package/src/stories/CButtonWithDropdown.stories.js +0 -41
  125. package/src/stories/CCalendar.stories.js +0 -16
  126. package/src/stories/CCard.stories.js +0 -30
  127. package/src/stories/CCheckbox.stories.js +0 -29
  128. package/src/stories/CCollapsibleSection.stories.js +0 -28
  129. package/src/stories/CColorDots.stories.js +0 -28
  130. package/src/stories/CConfirmActionModal.stories.js +0 -59
  131. package/src/stories/CDatepicker.stories.js +0 -30
  132. package/src/stories/CDualSelect.stories.js +0 -29
  133. package/src/stories/CEditor.stories.js +0 -30
  134. package/src/stories/CFormSectionHeading.stories.js +0 -34
  135. package/src/stories/CGroupedSelect.stories.js +0 -69
  136. package/src/stories/CIcon.stories.js +0 -26
  137. package/src/stories/CIconDropdown.stories.js +0 -40
  138. package/src/stories/CInput.stories.js +0 -36
  139. package/src/stories/CInputAddon.stories.js +0 -37
  140. package/src/stories/CInputEmail.stories.js +0 -27
  141. package/src/stories/CModalHeading.stories.js +0 -25
  142. package/src/stories/CModuleHelpLinks.stories.js +0 -25
  143. package/src/stories/CMultiselect.stories.js +0 -97
  144. package/src/stories/CMultiselectr.stories.js +0 -23
  145. package/src/stories/CPageHeading.stories.js +0 -32
  146. package/src/stories/CPagination.stories.js +0 -30
  147. package/src/stories/CPhoneNumber.stories.js +0 -29
  148. package/src/stories/CRadio.stories.js +0 -36
  149. package/src/stories/CRangeSlider.stories.js +0 -23
  150. package/src/stories/CReorderableStackedList.stories.js +0 -23
  151. package/src/stories/CSelect.stories.js +0 -50
  152. package/src/stories/CSmallTimeline.stories.js +0 -26
  153. package/src/stories/CStackedList.stories.js +0 -37
  154. package/src/stories/CStats.stories.js +0 -33
  155. package/src/stories/CSwitch.stories.js +0 -28
  156. package/src/stories/CTable.stories.js +0 -77
  157. package/src/stories/CTabs.stories.js +0 -33
  158. package/src/stories/CTag.stories.js +0 -23
  159. package/src/stories/CTextarea.stories.js +0 -32
  160. package/src/stories/CTimeline.stories.js +0 -26
  161. package/src/stories/CUpload.stories.js +0 -36
  162. package/src/stories/Introduction.stories.mdx +0 -207
  163. package/src/stories/Page.vue +0 -88
  164. package/src/stories/assets/code-brackets.svg +0 -1
  165. package/src/stories/assets/colors.svg +0 -1
  166. package/src/stories/assets/comments.svg +0 -1
  167. package/src/stories/assets/direction.svg +0 -1
  168. package/src/stories/assets/flow.svg +0 -1
  169. package/src/stories/assets/plugin.svg +0 -1
  170. package/src/stories/assets/repo.svg +0 -1
  171. package/src/stories/assets/stackalt.svg +0 -1
  172. package/src/stories/header.css +0 -26
  173. package/src/stories/page.css +0 -69
  174. package/src/stories/utils.css +0 -18
@@ -1,193 +0,0 @@
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 +0,0 @@
1
- import CDualSelect from './CDualSelect.vue'
2
-
3
- export default CDualSelect
@@ -1,96 +0,0 @@
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 text-sm shadow-sm"
9
- :value="content"
10
- :options="editorOption"
11
- @change="onChange($event)"
12
- @ready="onReady($event)"
13
- :disabled="disabled"
14
- ></quill-editor>
15
- <p v-if="helpText" class="mt-2 text-sm text-gray-500">
16
- {{ helpText }}
17
- </p>
18
- </div>
19
- </template>
20
- <script>
21
- import "quill/dist/quill.core.css";
22
- import "quill/dist/quill.snow.css";
23
- import "quill/dist/quill.bubble.css";
24
- import { quillEditor } from "vue-quill-editor";
25
- export default {
26
- name: "CEditor",
27
- components: { quillEditor },
28
- props: {
29
- content: {
30
- type: String,
31
- },
32
- label: {
33
- type: String,
34
- },
35
- hint: {
36
- type: String,
37
- },
38
- helpText: {
39
- type: String,
40
- },
41
- toolbarOptions: {
42
- type: Array,
43
- },
44
- onEditorChange: {
45
- type: Function,
46
- },
47
- placeholder: {
48
- type: String,
49
- },
50
- disabled: {
51
- type: Boolean,
52
- default: false,
53
- },
54
- },
55
- methods: {
56
- onChange(params) {
57
- this.$emit("onEditorChange", params);
58
- },
59
- onReady(params) {
60
- this.$emit("onEditorReady", params);
61
- },
62
- },
63
- computed: {
64
- editorOption() {
65
- return {
66
- modules: {
67
- toolbar: {
68
- container: this.toolbarOptions,
69
- },
70
- },
71
- placeholder: this.placeholder,
72
- };
73
- },
74
- },
75
- };
76
- </script>
77
- <style>
78
- .ql-toolbar.ql-snow {
79
- border-top-left-radius: 0.375rem;
80
- border-top-right-radius: 0.375rem;
81
- }
82
-
83
- .ql-container.ql-snow {
84
- border-bottom-left-radius: 0.375rem;
85
- border-bottom-right-radius: 0.375rem;
86
- min-height: 5rem;
87
- }
88
-
89
- .ql-editor {
90
- @apply text-sm text-gray-900;
91
- max-height: 150px;
92
- }
93
- .ql-editor.ql-blank::before {
94
- @apply not-italic text-gray-500;
95
- }
96
- </style>
@@ -1,3 +0,0 @@
1
- import CEditor from './CEditor.vue'
2
-
3
- export default CEditor
@@ -1,53 +0,0 @@
1
- <template>
2
- <div>
3
- <div :class="classes" class="border-gray-200">
4
- <div class="flex items-center justify-between">
5
- <div>
6
- <h3 class="text-base font-semibold text-gray-900">
7
- {{ heading }}
8
- </h3>
9
- <p v-if="description" class="max-w-4xl text-sm text-gray-500">
10
- {{ description }}
11
- </p>
12
- </div>
13
- <c-button
14
- v-if="tabAction"
15
- :type="tabAction.type"
16
- :label="tabAction.label"
17
- :icon="tabAction.icon"
18
- @action="emitTabAction"
19
- ></c-button>
20
- <c-anchor-tag v-if="tabLink" :label="tabLink.label" :action="emitTabLink"></c-anchor-tag>
21
- </div>
22
- </div>
23
- </div>
24
- </template>
25
- <script>
26
- import CAnchorTag from "../CAnchorTag/CAnchorTag.vue";
27
- import CButton from "../CButton/CButton.vue";
28
- export default {
29
- name: "CFormSectionHeading",
30
- components: { CButton, CAnchorTag },
31
- props: {
32
- heading: { type: String, required: true },
33
- description: { type: String },
34
- divider: { type: Boolean },
35
- tabAction: { type: Object },
36
- tabLink: { type: Object },
37
- actionEvent: {
38
- type: Function,
39
- },
40
- classes: {
41
- type: String,
42
- },
43
- },
44
- methods: {
45
- emitTabAction() {
46
- this.$emit("actionEvent");
47
- },
48
- emitTabLink() {
49
- this.$emit("actionEvent");
50
- },
51
- },
52
- };
53
- </script>
@@ -1,3 +0,0 @@
1
- import CFormSectionHeading from './CFormSectionHeading.vue'
2
-
3
- export default CFormSectionHeading
@@ -1,217 +0,0 @@
1
- <template>
2
- <div>
3
- <div
4
- v-if="showDropDown && options.length > 0"
5
- class="fixed inset-0"
6
- @click="closeDropDown()"
7
- aria-hidden="true"
8
- ></div>
9
- <label v-if="label" class="block text-sm font-medium text-gray-700">
10
- {{ label }}
11
- </label>
12
- <div class="relative mt-1">
13
- <div class="relative">
14
- <input
15
- type="text"
16
- class="relative w-full cursor-default rounded-md border border-gray-300 bg-white py-2 pl-3 pr-10 text-left shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500 disabled:pointer-events-none disabled:opacity-50 sm:text-sm"
17
- aria-haspopup="listbox"
18
- aria-expanded="true"
19
- aria-labelledby="listbox-label"
20
- :value="inputValue"
21
- :placeholder="placeholder"
22
- @focus="openDropDown()"
23
- @input="onInput"
24
- :disabled="disabled"
25
- />
26
- <span
27
- class="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2"
28
- >
29
- <svg
30
- class="h-5 w-5 animate-spin text-gray-400"
31
- xmlns="http://www.w3.org/2000/svg"
32
- fill="none"
33
- viewBox="0 0 24 24"
34
- v-if="isSearching"
35
- >
36
- <circle
37
- class="opacity-25"
38
- cx="12"
39
- cy="12"
40
- r="10"
41
- stroke="currentColor"
42
- stroke-width="4"
43
- ></circle>
44
- <path
45
- class="opacity-75"
46
- fill="currentColor"
47
- d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
48
- ></path>
49
- </svg>
50
- <!-- Heroicon name: solid/selector -->
51
- <svg
52
- class="h-5 w-5 text-gray-400"
53
- xmlns="http://www.w3.org/2000/svg"
54
- viewBox="0 0 20 20"
55
- fill="currentColor"
56
- aria-hidden="true"
57
- v-if="!isSearching"
58
- >
59
- <path
60
- fill-rule="evenodd"
61
- d="M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z"
62
- clip-rule="evenodd"
63
- />
64
- </svg>
65
- </span>
66
- </div>
67
- <!--
68
- Select popover, show/hide based on select state.
69
-
70
- Entering: ""
71
- From: ""
72
- To: ""
73
- Leaving: "transition ease-in duration-100"
74
- From: "opacity-100"
75
- To: "opacity-0"
76
- -->
77
- <ul
78
- class="absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm"
79
- tabindex="-1"
80
- role="listbox"
81
- aria-labelledby="listbox-label"
82
- aria-activedescendant="listbox-option-3"
83
- v-if="showDropDown && options.length > 0"
84
- >
85
- <!--
86
- Select option, manage highlight styles based on mouseenter/mouseleave and keyboard navigation.
87
-
88
- Highlighted: "text-white bg-indigo-600", Not Highlighted: "text-gray-900"
89
- -->
90
-
91
- <span v-for="option in options" :key="option.id">
92
- <li
93
- class="relative cursor-default select-none bg-gray-100 py-2 pl-3 pr-9 text-left text-xs font-semibold text-gray-900"
94
- role="option"
95
- >
96
- <span class="block truncate">
97
- {{ option.label }}
98
- </span>
99
- </li>
100
- <li
101
- class="group relative cursor-default select-none py-2 pl-3 pr-9 text-left text-gray-900 hover:bg-indigo-600 hover:text-white"
102
- v-for="subOption in option.options"
103
- :key="subOption.id"
104
- role="option"
105
- @click="handleOptionClick(subOption)"
106
- >
107
- <!-- Selected: "font-semibold", Not Selected: "font-normal" -->
108
- <span
109
- :class="[
110
- subOption[keyField] === value[keyField]
111
- ? 'font-semibold'
112
- : 'font-normal',
113
- ' block break-words',
114
- ]"
115
- >
116
- {{ subOption.label }}
117
- </span>
118
-
119
- <!--
120
- Checkmark, only display for selected option.
121
-
122
- Highlighted: "text-white", Not Highlighted: "text-indigo-600"
123
- -->
124
- <span
125
- class="absolute inset-y-0 right-0 flex items-center pr-4 text-indigo-600 group-hover:text-white"
126
- v-if="subOption[keyField] === value[keyField]"
127
- >
128
- <!-- Heroicon name: solid/check -->
129
- <svg
130
- class="h-5 w-5"
131
- xmlns="http://www.w3.org/2000/svg"
132
- viewBox="0 0 20 20"
133
- fill="currentColor"
134
- aria-hidden="true"
135
- >
136
- <path
137
- fill-rule="evenodd"
138
- d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z"
139
- clip-rule="evenodd"
140
- />
141
- </svg>
142
- </span>
143
- </li>
144
- </span>
145
-
146
- <!-- More items... -->
147
- </ul>
148
- </div>
149
- <p v-if="isError" class="mt-2 text-left text-sm text-red-600">
150
- {{ errorMessage }}
151
- </p>
152
- </div>
153
- </template>
154
-
155
- <script>
156
- import { debounce } from "lodash-es";
157
-
158
- export default {
159
- name: "CGroupedSelect",
160
- props: {
161
- label: String,
162
- options: Array,
163
- value: Object,
164
- placeholder: String,
165
- isSearching: Boolean,
166
- disabled: { type: Boolean, default: false },
167
- isError: { type: Boolean, default: false },
168
- errorMessage: {
169
- type: String,
170
- default: "This field cannot be empty",
171
- },
172
- keyField: { type: String, default: "label" },
173
- },
174
- data() {
175
- return {
176
- showDropDown: false,
177
- inputValue: "",
178
- };
179
- },
180
- methods: {
181
- onInput(e) {
182
- this.inputValue = e.target.value;
183
- this.emitSearch(e.target.value);
184
- },
185
- emitSearch: debounce(function (value) {
186
- if (value !== this.value.label) {
187
- this.$emit("search", value);
188
- } else {
189
- this.$emit("search", "");
190
- }
191
- }, 500),
192
- handleOptionClick(option) {
193
- this.inputValue = option.label;
194
- this.closeDropDown();
195
- this.$emit("input", option);
196
- },
197
- closeDropDown() {
198
- this.inputValue = this.value.label;
199
- this.showDropDown = false;
200
- },
201
- openDropDown() {
202
- this.showDropDown = true;
203
- this.emitSearch("");
204
- },
205
- },
206
- watch: {
207
- value(newValue) {
208
- this.inputValue = newValue.label;
209
- },
210
- },
211
- mounted() {
212
- this.inputValue = this.value.label;
213
- },
214
- };
215
- </script>
216
-
217
- <style></style>
@@ -1,3 +0,0 @@
1
- import CGroupedSelect from "./CGroupedSelect.vue";
2
-
3
- export default CGroupedSelect;
@@ -1,77 +0,0 @@
1
- <template>
2
- <div>
3
- <svg
4
- v-if="name == 'loader'"
5
- :class="classes"
6
- class="animate-spin"
7
- xmlns="http://www.w3.org/2000/svg"
8
- fill="none"
9
- viewBox="0 0 24 24"
10
- >
11
- <circle
12
- class="opacity-25"
13
- cx="12"
14
- cy="12"
15
- r="10"
16
- stroke="currentColor"
17
- stroke-width="4"
18
- ></circle>
19
- <path class="opacity-75" fill="currentColor" :d="path"></path>
20
- </svg>
21
- <svg
22
- v-if="name !== 'loader' && type == 'solid'"
23
- :class="(classes ? classes : '') + (cursorType ? cursorType : '')"
24
- :viewBox="viewBox"
25
- fill="currentColor"
26
- fill-rule="evenodd"
27
- >
28
- <path :d="path" />
29
- </svg>
30
- <svg
31
- v-if="name !== 'loader' && type == 'outline'"
32
- :class="(classes ? classes : '') + (cursorType ? cursorType : '')"
33
- viewBox="0 0 24 24"
34
- fill="none"
35
- stroke="currentColor"
36
- >
37
- <path
38
- stroke-linecap="round"
39
- stroke-linejoin="round"
40
- stroke-width="2"
41
- :d="path"
42
- />
43
- </svg>
44
- </div>
45
- </template>
46
-
47
- <script>
48
- import icons from "../../icons.js";
49
- export default {
50
- name: "CIcon",
51
- props: {
52
- name: {
53
- type: String,
54
- required: true,
55
- },
56
- classes: {
57
- type: String,
58
- },
59
- type: {
60
- type: String,
61
- },
62
- viewBox: {
63
- type: String,
64
- default: "0 0 20 20",
65
- },
66
- cursorType: {
67
- type: String,
68
- default: "cursor-default",
69
- },
70
- },
71
- computed: {
72
- path() {
73
- return icons[this.name];
74
- },
75
- },
76
- };
77
- </script>
@@ -1,3 +0,0 @@
1
- import CIcon from './CIcon.vue'
2
-
3
- export default CIcon