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,103 +0,0 @@
1
- <template>
2
- <div>
3
- <slot></slot>
4
- <div class="relative inline-block text-left">
5
- <button
6
- :type="type"
7
- @click="toggleDropdown = !toggleDropdown"
8
- @blur="close()"
9
- :class="classes"
10
- class="inline-flex justify-center w-full rounded-md border border-transparent shadow-sm px-4 py-2 text-sm font-medium focus:outline-none"
11
- aria-haspopup="listbox"
12
- aria-expanded="true"
13
- aria-labelledby="listbox-label"
14
- >
15
- <c-icon v-if="isLoading" class="mr-2 h-5 w-5" name="loader"></c-icon>
16
- {{ label }}
17
- <c-icon name="chevron-down" type="solid" class="ml-2 h-5 w-5"></c-icon>
18
- </button>
19
-
20
- <div
21
- v-if="toggleDropdown"
22
- :class="dropdownPositionClass"
23
- class="z-10 absolute mt-2 -mr-1 w-56 rounded-md shadow-lg bg-white ring-1 ring-gray-900 ring-opacity-5"
24
- >
25
- <ul class="py-1" tabindex="-1" role="listbox" aria-labelledby="listbox-label">
26
- <li
27
- v-for="(item) in items"
28
- :key="item.text"
29
- class="flex px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900 cursor-pointer"
30
- @mousedown="emitOptionAction(item.action)"
31
- >
32
- <c-icon
33
- v-if="item.icon"
34
- :type="item.iconType"
35
- class="mr-2 h-5 w-5 text-gray-500"
36
- :name="item.icon"
37
- ></c-icon>
38
- <slot name="customIcon" v-if="item.customIcon"></slot>
39
- {{ item.text }}
40
- </li>
41
- </ul>
42
- </div>
43
- </div>
44
- </div>
45
- </template>
46
-
47
- <script>
48
- import CIcon from "../CIcon/CIcon.vue";
49
- export default {
50
- name: "CButtonSelect",
51
- components: { CIcon },
52
- props: {
53
- label: {
54
- type: String,
55
- required: true,
56
- },
57
- type: {
58
- type: String,
59
- default: "primary",
60
- },
61
- items: {
62
- type: Array,
63
- required: true,
64
- },
65
- isLoading: {
66
- type: Boolean,
67
- default: false,
68
- },
69
- dropdownPositionClass: {
70
- type: String,
71
- },
72
- },
73
- data() {
74
- return {
75
- toggleDropdown: false,
76
- };
77
- },
78
-
79
- computed: {
80
- classes() {
81
- return {
82
- "text-gray-700 border-gray-300 hover:bg-gray-50 focus:ring-indigo-600":
83
- this.type == "secondary",
84
- "text-white hover:bg-indigo-800 bg-indigo-700 focus:ring-indigo-600":
85
- this.type == "primary",
86
- "text-white hover:bg-red-800 bg-red-700 focus:ring-red-600": this.type == "danger",
87
- "text-white hover:bg-green-800 bg-green-700 focus:ring-green-600": this.type == "success",
88
- "cursor-default pointer-events-none": this.isLoading,
89
- };
90
- },
91
- },
92
- methods: {
93
- emitOptionAction(action) {
94
- this.$emit("buttonActions", action);
95
- },
96
- close() {
97
- this.toggleDropdown = false;
98
- },
99
- },
100
- };
101
- </script>
102
-
103
- <style></style>
@@ -1,3 +0,0 @@
1
- import CButtonSelect from './CButtonSelect.vue'
2
-
3
- export default CButtonSelect
@@ -1,168 +0,0 @@
1
- <template>
2
- <div>
3
- <span class="relative inline-flex shadow-sm rounded-md">
4
- <button
5
- :class="classes"
6
- :type="type"
7
- @click="handleButtonClick"
8
- class="
9
- relative
10
- inline-flex
11
- items-center
12
- px-4
13
- py-2
14
- rounded-l-md
15
- text-sm
16
- font-medium
17
- focus:z-10
18
- focus:outline-none
19
- focus:ring-1
20
- "
21
- >
22
- {{ selectedValue ? selectedValue : label }}
23
- </button>
24
- <span class="-ml-px relative block">
25
- <button
26
- @click="toggleDropdown = !toggleDropdown"
27
- @blur="close()"
28
- :type="type"
29
- :class="classes"
30
- class="
31
- relative
32
- inline-flex
33
- items-center
34
- px-2
35
- py-2
36
- rounded-r-md
37
- text-sm
38
- font-medium
39
- t
40
- focus:z-10
41
- focus:outline-none
42
- focus:ring-1
43
- "
44
- >
45
- <span class="sr-only">Open options</span>
46
- <c-icon name="chevron-down" type="solid" class="h-5 w-5"></c-icon>
47
- </button>
48
- <div
49
- v-if="toggleDropdown"
50
- :class="dropdownPositionClass"
51
- class="
52
- origin-top-right
53
- absolute
54
- right-0
55
- z-10
56
- mt-2
57
- w-56
58
- rounded-md
59
- shadow-lg
60
- bg-white
61
- ring-1 ring-gray-900 ring-opacity-5
62
- "
63
- >
64
- <div
65
- class="py-1"
66
- role="menu"
67
- aria-orientation="vertical"
68
- aria-labelledby="option-menu"
69
- >
70
- <li
71
- v-for="item in items"
72
- v-bind:key="item.items"
73
- @mousedown="selectOption($event, item.value)"
74
- class="
75
- block
76
- px-4
77
- py-2
78
- text-sm text-left text-gray-700
79
- hover:bg-gray-100
80
- hover:text-gray-900
81
- cursor-pointer
82
- "
83
- role="menuitem"
84
- >
85
- {{ item.text }}
86
- </li>
87
- </div>
88
- </div>
89
- </span>
90
- </span>
91
- </div>
92
- </template>
93
-
94
- <script>
95
- import CIcon from "../CIcon/CIcon.vue";
96
- export default {
97
- name: "CButtonWithDropdown",
98
- components: { CIcon },
99
- props: {
100
- label: {
101
- type: String,
102
- required: true,
103
- },
104
- type: {
105
- type: String,
106
- default: "secondary",
107
- },
108
- value: {
109
- type: String,
110
- },
111
- items: {
112
- type: Array,
113
- required: true,
114
- },
115
- dropdownPositionClass: {
116
- type: String,
117
- },
118
- },
119
- data() {
120
- return {
121
- toggleDropdown: false,
122
- isSelected: false,
123
- selectedValue: this.value,
124
- };
125
- },
126
-
127
- computed: {
128
- classes() {
129
- return {
130
- "border text-white hover:bg-indigo-800 bg-indigo-700 focus:ring-indigo-600":
131
- this.type == "primary",
132
- "border text-gray-700 border-gray-300 hover:bg-gray-50 focus:ring-indigo-600":
133
- this.type == "secondary",
134
- "border text-white hover:bg-green-800 bg-green-700 focus:ring-green-600":
135
- this.type == "success",
136
- "border text-white hover:bg-red-800 bg-red-700 focus:ring-red-600":
137
- this.type == "danger",
138
- "border border-green-800 bg-green-100 text-green-800 hover:bg-green-200 focus:ring-green-200":
139
- this.type == "light-green",
140
- "border border-red-800 bg-red-100 text-red-800 hover:bg-red-200 focus:ring-red-200":
141
- this.type == "light-red",
142
- "cursor-default pointer-events-none": this.isLoading,
143
- };
144
- },
145
- },
146
- methods: {
147
- selectOption(event, value) {
148
- this.selectedValue = event.target.innerText;
149
- this.$emit("onSelectOption", value);
150
- this.toggleDropdown = false;
151
- this.isSelected = true;
152
- },
153
- close() {
154
- this.toggleDropdown = false;
155
- },
156
- handleButtonClick() {
157
- this.$emit("action", this.selectedValue);
158
- },
159
- },
160
- watch: {
161
- value() {
162
- this.selectedValue = this.value;
163
- },
164
- },
165
- };
166
- </script>
167
-
168
- <style></style>
@@ -1,3 +0,0 @@
1
- import CButtonWithDropdown from './CButtonWithDropdown.vue'
2
-
3
- export default CButtonWithDropdown
@@ -1,401 +0,0 @@
1
- <template>
2
- <!-- This example requires Tailwind CSS v2.0+ -->
3
- <div>
4
- <div class="grid grid-cols-1 md:grid-cols-2 md:gap-8">
5
- <div :class="`sticky top-0 md:block ${calendarClasses}`">
6
- <div
7
- class="relative z-20 flex items-center justify-between border-b border-gray-200 py-4 px-4 sm:px-0"
8
- >
9
- <h2 class="flex-auto font-semibold text-gray-900">
10
- {{ currentMonthAndYear }}
11
- </h2>
12
- <div class="flex items-center">
13
- <div class="flex items-center rounded-md shadow-sm">
14
- <button
15
- @click="handlePreviousMonthClick"
16
- type="button"
17
- class="flex items-center justify-center rounded-l-md border border-r-0 border-gray-300 bg-white py-2 pl-3 pr-4 text-gray-400 hover:text-gray-500 focus:relative"
18
- >
19
- <span class="sr-only">Previous month</span>
20
- <!-- Heroicon name: solid/chevron-left -->
21
- <svg
22
- class="h-5 w-5"
23
- xmlns="http://www.w3.org/2000/svg"
24
- viewBox="0 0 20 20"
25
- fill="currentColor"
26
- aria-hidden="true"
27
- >
28
- <path
29
- fill-rule="evenodd"
30
- d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z"
31
- clip-rule="evenodd"
32
- />
33
- </svg>
34
- </button>
35
- <span class="relative -mx-px h-5 w-px bg-gray-300"></span>
36
- <button
37
- @click="handleNextMonthClick"
38
- type="button"
39
- class="flex items-center justify-center rounded-r-md border border-l-0 border-gray-300 bg-white py-2 pl-4 pr-3 text-gray-400 hover:text-gray-500 focus:relative"
40
- >
41
- <span class="sr-only">Next month</span>
42
- <!-- Heroicon name: solid/chevron-right -->
43
- <svg
44
- class="h-5 w-5"
45
- xmlns="http://www.w3.org/2000/svg"
46
- viewBox="0 0 20 20"
47
- fill="currentColor"
48
- aria-hidden="true"
49
- >
50
- <path
51
- fill-rule="evenodd"
52
- d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
53
- clip-rule="evenodd"
54
- />
55
- </svg>
56
- </button>
57
- </div>
58
- </div>
59
- </div>
60
-
61
- <div
62
- class="col-span-1 overflow-hidden rounded shadow ring-1 ring-gray-200"
63
- >
64
- <div
65
- class="grid grid-cols-7 gap-px border-b border-gray-300 bg-gray-200 text-center text-xs font-semibold leading-6 text-gray-700"
66
- >
67
- <div class="bg-white py-2">Mo<span class="sr-only">on</span></div>
68
- <div class="bg-white py-2">Tu<span class="sr-only">ue</span></div>
69
- <div class="bg-white py-2">We<span class="sr-only">ed</span></div>
70
- <div class="bg-white py-2">Th<span class="sr-only">hu</span></div>
71
- <div class="bg-white py-2">Fr<span class="sr-only">ri</span></div>
72
- <div class="bg-white py-2">Sa<span class="sr-only">at</span></div>
73
- <div class="bg-white py-2">Su<span class="sr-only">un</span></div>
74
- </div>
75
- <div class="flex bg-gray-200 text-xs leading-6 text-gray-700">
76
- <div class="isolate grid w-full grid-cols-7 grid-rows-6 gap-px">
77
- <button
78
- v-for="date in daysArray"
79
- :key="getDateKey(date)"
80
- type="button"
81
- :class="{
82
- 'flex h-14 flex-col py-2 px-3 hover:bg-gray-100 focus:z-10': true,
83
- 'bg-white': isCurrentMonth(date),
84
- 'bg-gray-50': !isCurrentMonth(date),
85
- 'font-semibold': isSelected(date) || isToday(date),
86
- 'text-white': isSelected(date),
87
- 'text-indigo-600': !isSelected(date) && isToday(date),
88
- 'text-gray-900':
89
- !isSelected(date) && isCurrentMonth(date) && !isToday(date),
90
- 'text-gray-500':
91
- !isSelected(date) &&
92
- !isCurrentMonth(date) &&
93
- !isToday(date),
94
- }"
95
- @click="handleDateClick(date)"
96
- >
97
- <time
98
- :datetime="formatForDateTime(date)"
99
- :class="{
100
- 'ml-auto': true,
101
- 'flex h-6 w-6 items-center justify-center rounded-full':
102
- isSelected(date),
103
- 'bg-indigo-600': isSelected(date) && isToday(date),
104
- 'bg-gray-900': isSelected(date) && !isToday(date),
105
- }"
106
- >{{ getDayFromDate(date) }}</time
107
- >
108
- <span v-if="eventsCount" class="sr-only"
109
- >{{ getEventsCountForDate(date) }} events</span
110
- >
111
- <span
112
- v-if="eventsCount && getEventsCountForDate(date) > 0"
113
- class="-mx-0.5 mt-auto flex flex-wrap-reverse"
114
- >
115
- <span
116
- class="mx-0.5 mb-1 h-1.5 w-1.5 rounded-full bg-gray-400"
117
- ></span>
118
- </span>
119
- </button>
120
- </div>
121
- </div>
122
- </div>
123
- </div>
124
- <section
125
- v-if="eventsData && validSelectedDate"
126
- class="col-span-1 my-10 mx-4 md:mx-0 md:my-0"
127
- >
128
- <h2
129
- v-if="showSelectedDate"
130
- class="hidden py-4 font-semibold text-gray-900 md:block"
131
- >
132
- Schedule for
133
- <time :datetime="selectedDateForDateTime">{{
134
- formattedSelectedDate
135
- }}</time>
136
- </h2>
137
- <p
138
- v-if="getEventsForDate(value).length === 0"
139
- class="mt-3 text-center text-sm text-gray-400"
140
- >
141
- Sorry, no events found for this date.
142
- </p>
143
- <ol
144
- v-if="getEventsForDate(value).length !== 0"
145
- class="mt-3 divide-y divide-gray-100 overflow-hidden rounded-lg bg-white text-sm shadow ring-1 ring-indigo-700 ring-opacity-5"
146
- >
147
- <li
148
- class="cursor-pointer p-4 focus-within:bg-gray-50 hover:bg-gray-50"
149
- v-for="event in getEventsForDate(value)"
150
- :key="event.id"
151
- @click="handleEventClick(event)"
152
- >
153
- <div class="text-sm text-gray-900">
154
- {{ formatTimeFromDate(event.start) }} -
155
- {{ formatTimeFromDate(event.end) }}
156
- </div>
157
- <div
158
- class="mt-1 text-sm font-semibold"
159
- :style="{ color: event.color }"
160
- :class="event.status === 3 ? 'line-through' : ''"
161
- >
162
- {{ event.title }} ({{ event.booked }}/{{ event.seats }})
163
- </div>
164
- <div class="-mx-1 -my-0.5 flex flex-wrap items-center">
165
- <div class="mx-1 my-0.5 flex items-center space-x-0.5">
166
- <svg
167
- xmlns="http://www.w3.org/2000/svg"
168
- class="h-4 w-4 flex-none text-gray-400"
169
- fill="none"
170
- viewBox="0 0 24 24"
171
- stroke="currentColor"
172
- stroke-width="2"
173
- >
174
- <path
175
- stroke-linecap="round"
176
- stroke-linejoin="round"
177
- d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
178
- />
179
- </svg>
180
- <span class="min-w-0 flex-1 text-sm text-gray-500"
181
- >{{ event.duration }} mins</span
182
- >
183
- </div>
184
- <div
185
- v-if="event.subject && event.subject.length"
186
- class="mx-1 my-0.5 flex items-center space-x-0.5"
187
- >
188
- <svg
189
- xmlns="http://www.w3.org/2000/svg"
190
- class="h-4 w-4 flex-none text-gray-400"
191
- fill="none"
192
- viewBox="0 0 24 24"
193
- stroke="currentColor"
194
- stroke-width="2"
195
- >
196
- <path
197
- stroke-linecap="round"
198
- stroke-linejoin="round"
199
- d="M5 5a2 2 0 012-2h10a2 2 0 012 2v16l-7-3.5L5 21V5z"
200
- />
201
- </svg>
202
- <span class="min-w-0 flex-1 text-sm text-gray-500">{{
203
- event.subject
204
- }}</span>
205
- </div>
206
- <div
207
- v-if="event.location && event.location.length"
208
- class="mx-1 my-0.5 flex items-center space-x-0.5"
209
- >
210
- <svg
211
- xmlns="http://www.w3.org/2000/svg"
212
- class="h-4 w-4 flex-none text-gray-400"
213
- fill="none"
214
- viewBox="0 0 24 24"
215
- stroke="currentColor"
216
- stroke-width="2"
217
- >
218
- <path
219
- stroke-linecap="round"
220
- stroke-linejoin="round"
221
- d="M9 20l-5.447-2.724A1 1 0 013 16.382V5.618a1 1 0 011.447-.894L9 7m0 13l6-3m-6 3V7m6 10l4.553 2.276A1 1 0 0021 18.382V7.618a1 1 0 00-.553-.894L15 4m0 13V4m0 0L9 7"
222
- />
223
- </svg>
224
- <span class="min-w-0 flex-1 text-sm text-gray-500">{{
225
- event.location
226
- }}</span>
227
- </div>
228
- <div
229
- v-if="event.staff && event.staff.length"
230
- class="mx-1 my-0.5 flex items-center space-x-0.5"
231
- >
232
- <svg
233
- xmlns="http://www.w3.org/2000/svg"
234
- class="h-4 w-4 flex-none text-gray-400"
235
- fill="none"
236
- viewBox="0 0 24 24"
237
- stroke="currentColor"
238
- stroke-width="2"
239
- >
240
- <path
241
- stroke-linecap="round"
242
- stroke-linejoin="round"
243
- d="M21 13.255A23.931 23.931 0 0112 15c-3.183 0-6.22-.62-9-1.745M16 6V4a2 2 0 00-2-2h-4a2 2 0 00-2 2v2m4 6h.01M5 20h14a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"
244
- />
245
- </svg>
246
- <span class="min-w-0 flex-1 text-sm text-gray-500">{{
247
- event.staff
248
- }}</span>
249
- </div>
250
- </div>
251
- </li>
252
- </ol>
253
- </section>
254
- </div>
255
- </div>
256
- </template>
257
-
258
- <script>
259
- import * as dayjs from "dayjs";
260
-
261
- export default {
262
- name: "CCalendar",
263
- props: {
264
- value: {
265
- type: [String, Date, Object],
266
- default: () => dayjs(),
267
- },
268
- eventsCount: {
269
- type: Array,
270
- default: () => null,
271
- },
272
- eventsData: {
273
- type: Array,
274
- default: () => null,
275
- },
276
- calendarClasses: {
277
- type: String,
278
- default: "",
279
- },
280
- showSelectedDate: {
281
- type: Boolean,
282
- default: true,
283
- },
284
- },
285
- data() {
286
- return {
287
- activeDate: dayjs(),
288
- };
289
- },
290
- methods: {
291
- handlePreviousMonthClick() {
292
- this.activeDate = this.activeDate.subtract(1, "month");
293
- this.$emit("prev-month", this.getActiveStartAndEndDates());
294
- },
295
- handleNextMonthClick() {
296
- this.activeDate = this.activeDate.add(1, "month");
297
- this.$emit("next-month", this.getActiveStartAndEndDates());
298
- },
299
- handleDateClick(date) {
300
- this.$emit("input", date);
301
- },
302
- getDayFromDate(date) {
303
- return dayjs(date).format("D");
304
- },
305
- isSelected(date) {
306
- return dayjs(date).isSame(this.value, "day");
307
- },
308
- isToday(date) {
309
- return dayjs(date).isSame(dayjs(), "day");
310
- },
311
- isCurrentMonth(date) {
312
- return dayjs(date).isSame(this.activeDate, "month");
313
- },
314
- getDateKey(date) {
315
- return dayjs(date).format();
316
- },
317
- formatForDateTime(date) {
318
- return dayjs(date).format("YYYY-MM-DD");
319
- },
320
- formatTimeFromDate(date) {
321
- return dayjs(date).format("hh:mma");
322
- },
323
- getEventsCountForDate(date) {
324
- let eventsCountObj = this.eventsCount.find((event) =>
325
- dayjs(date).isSame(dayjs(event.date), "day")
326
- );
327
- if (eventsCountObj) {
328
- return eventsCountObj.eventsCount;
329
- } else {
330
- return 0;
331
- }
332
- },
333
- getActiveStartAndEndDates() {
334
- return {
335
- startDate: this.daysArray[0],
336
- endDate: this.daysArray[this.daysArray.length - 1],
337
- };
338
- },
339
- getEventsForDate(date) {
340
- return this.eventsData.filter((event) =>
341
- dayjs(date).isSame(dayjs(event.start), "day")
342
- );
343
- },
344
- handleEventClick(event) {
345
- this.$emit("event-click", event);
346
- },
347
- },
348
- computed: {
349
- currentMonthAndYear() {
350
- return dayjs(this.activeDate).format("MMMM YYYY");
351
- },
352
- daysArray() {
353
- let dates = [];
354
- let firstDayOfmonth = dayjs(this.activeDate).startOf("month");
355
- let lastDayOfmonth = dayjs(this.activeDate).endOf("month");
356
- let firstDayOfMonthInWeek = firstDayOfmonth.day();
357
- let lastDayOfMonthInWeek = lastDayOfmonth.day();
358
- if (firstDayOfMonthInWeek === 0) {
359
- firstDayOfMonthInWeek = 7;
360
- }
361
- if (lastDayOfMonthInWeek === 0) {
362
- lastDayOfMonthInWeek = 7;
363
- }
364
- for (let i = 0; i < firstDayOfMonthInWeek - 1; i++) {
365
- dates.unshift(firstDayOfmonth.subtract(i + 1, "day"));
366
- }
367
- for (let i = 0; i < dayjs(this.activeDate).daysInMonth(); i++) {
368
- dates.push(firstDayOfmonth.add(i, "day"));
369
- }
370
- let cursor = 1;
371
- for (let i = lastDayOfMonthInWeek; i < 7; i++) {
372
- dates.push(lastDayOfmonth.add(cursor, "day"));
373
- cursor++;
374
- }
375
- if (dates.length !== 42) {
376
- let lastDayOfDates = dates[dates.length - 1];
377
- for (let i = 1; i <= 7; i++) {
378
- dates.push(lastDayOfDates.add(i, "day"));
379
- }
380
- }
381
- return dates;
382
- },
383
- formattedSelectedDate() {
384
- return dayjs(this.value ?? dayjs()).format("MMMM D, YYYY");
385
- },
386
- selectedDateForDateTime() {
387
- return dayjs(this.value ?? dayjs()).format("YYYY-MM-DD");
388
- },
389
- validSelectedDate() {
390
- return this.value && dayjs(this.value).isValid();
391
- },
392
- },
393
- mounted() {
394
- if (this.value) {
395
- this.activeDate = dayjs(this.value);
396
- }
397
- },
398
- };
399
- </script>
400
-
401
- <style></style>
@@ -1,3 +0,0 @@
1
- import CCalendar from "./CCalendar.vue";
2
-
3
- export default CCalendar;