classcard-ui 0.2.742 → 0.2.744

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 +79 -66
  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 +79 -66
  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 +118 -121
  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 +410 -410
  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 +131 -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 +218 -218
  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 +118 -118
  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 +352 -352
  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 +204 -204
  80. package/src/components/CPagination/index.js +2 -2
  81. package/src/components/CPhoneNumber/CPhoneNumber.vue +89 -81
  82. package/src/components/CPhoneNumber/index.js +2 -2
  83. package/src/components/CRadio/CRadio.vue +106 -106
  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 +291 -291
  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 +45 -45
  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,3 +1,3 @@
1
- import CMultiselect from './CMultiselect.vue'
2
-
1
+ import CMultiselect from './CMultiselect.vue'
2
+
3
3
  export default CMultiselect
@@ -1,44 +1,44 @@
1
- <template>
2
- <div>
3
- <!-- <label class="text-sm text-gray-900">{{label}}</label>
4
- <multiselect class="mt-1" v-model="value" :options="options" :multiple="true">
5
- </multiselect> -->
6
- </div>
7
- </template>
8
- <script>
9
-
10
- export default {
11
- // name: "CMultiselect",
12
- // components: { Multiselect },
13
- // props: {
14
- // options: {
15
- // type: Array,
16
- // required: true,
17
- // },
18
- // label:String
19
- // },
20
- // computed: {},
21
- // data() {
22
- // return {
23
- // value: [],
24
- // };
25
- // },
26
- };
27
- </script>
28
- <style src="vue-multiselect/dist/vue-multiselect.min.css"></style>
29
- <style>
30
- .multiselect__tags {
31
- border: 1px solid #d1d5db;
32
- }
33
- .multiselect__placeholder {
34
- color: #111827;
35
- }
36
- .multiselect__tag,
37
- .multiselect__tag-icon:after,
38
- .multiselect__tag-icon:hover,
39
- .multiselect__option--highlight,
40
- .multiselect__option--highlight::after {
41
- background: #0369A1;
42
- color: #fff;
43
- }
44
- </style>
1
+ <template>
2
+ <div>
3
+ <!-- <label class="text-sm text-gray-900">{{label}}</label>
4
+ <multiselect class="mt-1" v-model="value" :options="options" :multiple="true">
5
+ </multiselect> -->
6
+ </div>
7
+ </template>
8
+ <script>
9
+
10
+ export default {
11
+ // name: "CMultiselect",
12
+ // components: { Multiselect },
13
+ // props: {
14
+ // options: {
15
+ // type: Array,
16
+ // required: true,
17
+ // },
18
+ // label:String
19
+ // },
20
+ // computed: {},
21
+ // data() {
22
+ // return {
23
+ // value: [],
24
+ // };
25
+ // },
26
+ };
27
+ </script>
28
+ <style src="vue-multiselect/dist/vue-multiselect.min.css"></style>
29
+ <style>
30
+ .multiselect__tags {
31
+ border: 1px solid #d1d5db;
32
+ }
33
+ .multiselect__placeholder {
34
+ color: #111827;
35
+ }
36
+ .multiselect__tag,
37
+ .multiselect__tag-icon:after,
38
+ .multiselect__tag-icon:hover,
39
+ .multiselect__option--highlight,
40
+ .multiselect__option--highlight::after {
41
+ background: #0369A1;
42
+ color: #fff;
43
+ }
44
+ </style>
@@ -1,3 +1,3 @@
1
- import CMultiselect from './CMultiselect.vue'
2
-
1
+ import CMultiselect from './CMultiselect.vue'
2
+
3
3
  export default CMultiselect
@@ -1,56 +1,56 @@
1
- <template>
2
- <div class="sticky top-0 z-10 -mx-16 bg-transparent px-16 backdrop-blur-xl">
3
- <div
4
- class="flex flex-col items-start justify-between pt-4 pb-2 sm:max-w-full sm:flex-row sm:items-center sm:pb-1"
5
- >
6
- <div>
7
- <h2
8
- class="mt-1 text-xl font-bold leading-7 text-gray-900 sm:mt-0 sm:truncate sm:text-xl"
9
- >
10
- {{ title }}
11
- </h2>
12
- </div>
13
- <div class="justify-self-end">
14
- <slot></slot>
15
- <div v-if="buttonType" class="mt-5 flex sm:mt-0 lg:mt-0 lg:ml-4">
16
- <span class="sm:ml-3">
17
- <c-button
18
- :label="buttonType.label"
19
- :icon="buttonType.icon"
20
- :type="buttonType.type"
21
- @action="emitAction"
22
- ></c-button>
23
- </span>
24
- </div>
25
- </div>
26
- </div>
27
- </div>
28
- </template>
29
-
30
- <script>
31
- import CButton from "../CButton/CButton.vue";
32
- export default {
33
- name: "CPageHeading",
34
- components: { CButton },
35
- props: {
36
- title: {
37
- type: String,
38
- required: true,
39
- },
40
- description: { type: String },
41
- helpVideo: {
42
- type: String,
43
- },
44
- helpArticle: { type: String },
45
- buttonType: { type: Object },
46
- callAction: {
47
- type: Function,
48
- },
49
- },
50
- methods: {
51
- emitAction() {
52
- this.$emit("callAction");
53
- },
54
- },
55
- };
56
- </script>
1
+ <template>
2
+ <div class="sticky top-0 z-10 -mx-16 bg-transparent px-16 backdrop-blur-xl">
3
+ <div
4
+ class="flex flex-col items-start justify-between pt-4 pb-2 sm:max-w-full sm:flex-row sm:items-center sm:pb-1"
5
+ >
6
+ <div>
7
+ <h2
8
+ class="mt-1 text-xl font-bold leading-7 text-gray-900 sm:mt-0 sm:truncate sm:text-xl"
9
+ >
10
+ {{ title }}
11
+ </h2>
12
+ </div>
13
+ <div class="justify-self-end">
14
+ <slot></slot>
15
+ <div v-if="buttonType" class="mt-5 flex sm:mt-0 lg:mt-0 lg:ml-4">
16
+ <span class="sm:ml-3">
17
+ <c-button
18
+ :label="buttonType.label"
19
+ :icon="buttonType.icon"
20
+ :type="buttonType.type"
21
+ @action="emitAction"
22
+ ></c-button>
23
+ </span>
24
+ </div>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </template>
29
+
30
+ <script>
31
+ import CButton from "../CButton/CButton.vue";
32
+ export default {
33
+ name: "CPageHeading",
34
+ components: { CButton },
35
+ props: {
36
+ title: {
37
+ type: String,
38
+ required: true,
39
+ },
40
+ description: { type: String },
41
+ helpVideo: {
42
+ type: String,
43
+ },
44
+ helpArticle: { type: String },
45
+ buttonType: { type: Object },
46
+ callAction: {
47
+ type: Function,
48
+ },
49
+ },
50
+ methods: {
51
+ emitAction() {
52
+ this.$emit("callAction");
53
+ },
54
+ },
55
+ };
56
+ </script>
@@ -1,3 +1,3 @@
1
- import CPageHeading from './CPageHeading.vue'
2
-
1
+ import CPageHeading from './CPageHeading.vue'
2
+
3
3
  export default CPageHeading
@@ -1,204 +1,204 @@
1
- <template>
2
- <div
3
- class="flex items-center justify-between border-gray-200 bg-white px-4 py-3 sm:px-6"
4
- >
5
- <div class="flex flex-1 justify-between sm:hidden">
6
- <div
7
- href="#"
8
- class="relative inline-flex items-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50"
9
- @click="currentPageNumber == '1' ? '' : goToPreviousPage()"
10
- >
11
- Previous
12
- </div>
13
- <div
14
- href="#"
15
- class="relative ml-3 inline-flex items-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50"
16
- @click="currentPageNumber == lastPageNumber ? '' : goToNextPage()"
17
- >
18
- Next
19
- </div>
20
- </div>
21
- <div class="hidden sm:flex sm:flex-1 sm:items-center sm:justify-between">
22
- <div>
23
- <p class="text-sm text-gray-700">
24
- Showing
25
- <span class="font-medium">{{ setPaginationRecords.from }}</span>
26
- to
27
- <span class="font-medium">{{ setPaginationRecords.to }}</span>
28
- of
29
- <span class="font-medium">{{
30
- setPaginationRecords.totalRecords
31
- }}</span>
32
- results
33
- </p>
34
- </div>
35
- <div>
36
- <nav
37
- class="relative z-0 inline-flex -space-x-px rounded-md shadow-sm"
38
- aria-label="Pagination"
39
- >
40
- <div class="hidden md:-mt-px md:flex">
41
- <div
42
- href="#"
43
- @click="currentPageNumber == '1' ? '' : goToPreviousPage()"
44
- class="relative inline-flex items-center rounded-l-md border border-r-0 border-gray-300 bg-white px-2 py-2 text-sm font-medium text-gray-500 hover:bg-gray-50"
45
- :class="
46
- currentPageNumber == '1'
47
- ? 'pointer-events-none text-gray-400'
48
- : 'group cursor-pointer text-gray-500 hover:text-gray-700'
49
- "
50
- >
51
- <span class="sr-only">Previous</span>
52
- <!-- Heroicon name: solid/chevron-left -->
53
- <svg
54
- class="h-5 w-5"
55
- xmlns="http://www.w3.org/2000/svg"
56
- viewBox="0 0 20 20"
57
- fill="currentColor"
58
- aria-hidden="true"
59
- >
60
- <path
61
- fill-rule="evenodd"
62
- 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"
63
- clip-rule="evenodd"
64
- />
65
- </svg>
66
- </div>
67
- <div
68
- v-for="page in pageRange"
69
- :key="page"
70
- class="cursor-pointer"
71
- :class="[
72
- page == currentPageNumber
73
- ? 'relative z-10 inline-flex items-center border border-indigo-500 bg-indigo-50 px-4 py-2 text-sm font-medium text-indigo-600'
74
- : '',
75
- page === '...'
76
- ? 'relative inline-flex items-center border border-r-0 border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-500 hover:bg-gray-50'
77
- : '',
78
- page !== currentPageNumber && page !== '...'
79
- ? 'relative inline-flex items-center border border-r-0 border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-500 hover:bg-gray-50'
80
- : '',
81
- page == currentPageNumber + 1 ? 'border-l-0' : '',
82
- ]"
83
- @click="changePage(page)"
84
- >
85
- <div v-if="page === '...'">...</div>
86
- <div v-else>
87
- {{ page }}
88
- </div>
89
- </div>
90
- <div
91
- href="#"
92
- class="relative inline-flex items-center rounded-r-md border border-gray-300 bg-white px-2 py-2 text-sm font-medium text-gray-500 hover:bg-gray-50"
93
- @click="currentPageNumber == lastPageNumber ? '' : goToNextPage()"
94
- :class="
95
- currentPageNumber == lastPageNumber
96
- ? 'pointer-events-none text-gray-400'
97
- : 'group cursor-pointer text-gray-500 hover:text-gray-700'
98
- "
99
- >
100
- <span class="sr-only">Next</span>
101
- <!-- Heroicon name: solid/chevron-right -->
102
- <svg
103
- class="h-5 w-5"
104
- xmlns="http://www.w3.org/2000/svg"
105
- viewBox="0 0 20 20"
106
- fill="currentColor"
107
- aria-hidden="true"
108
- >
109
- <path
110
- fill-rule="evenodd"
111
- 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"
112
- clip-rule="evenodd"
113
- />
114
- </svg>
115
- </div>
116
- </div>
117
- </nav>
118
- </div>
119
- </div>
120
- </div>
121
- </template>
122
- <script>
123
- import { isEqual } from "lodash-es";
124
-
125
- export default {
126
- name: "CPagination",
127
- props: {
128
- setPaginationRecords: {
129
- type: Object,
130
- },
131
- setCurrentPage: {
132
- type: Function,
133
- },
134
- setPreviousPage: {
135
- type: Function,
136
- },
137
- setNextPage: {
138
- type: Function,
139
- },
140
- },
141
- components: {},
142
- data() {
143
- return {
144
- currentPageNumber: this.setPaginationRecords.currentPage,
145
- lastPageNumber: this.setPaginationRecords.lastPage,
146
- };
147
- },
148
- computed: {
149
- pageRange() {
150
- var current = this.setPaginationRecords.currentPage,
151
- last = this.setPaginationRecords.lastPage,
152
- delta = 2,
153
- left = current - delta,
154
- right = current + delta + 1,
155
- range = [],
156
- rangeWithDots = [],
157
- l;
158
- for (let i = 1; i <= last; i++) {
159
- if (i == 1 || i == last || (i >= left && i < right)) {
160
- range.push(i);
161
- }
162
- }
163
- for (let i of range) {
164
- if (l) {
165
- if (i - l === 2) {
166
- rangeWithDots.push(l + 1);
167
- } else if (i - l !== 1) {
168
- rangeWithDots.push("...");
169
- }
170
- }
171
- rangeWithDots.push(i);
172
- l = i;
173
- }
174
- return rangeWithDots;
175
- },
176
- },
177
- methods: {
178
- changePage(page) {
179
- if (page !== "...") {
180
- this.$emit("setCurrentPage", page);
181
- this.currentPageNumber = page;
182
- }
183
- },
184
- goToPreviousPage() {
185
- var previousPage = this.currentPageNumber - 1;
186
- this.currentPageNumber = previousPage;
187
- this.$emit("setPreviousPage", previousPage);
188
- },
189
- goToNextPage() {
190
- var nextPage = this.currentPageNumber + 1;
191
- this.currentPageNumber = nextPage;
192
- this.$emit("setNextPage", nextPage);
193
- },
194
- },
195
- watch: {
196
- setPaginationRecords(newVal, oldVal) {
197
- if (!isEqual(newVal, oldVal)) {
198
- this.currentPageNumber = newVal.currentPage;
199
- this.lastPageNumber = newVal.lastPage;
200
- }
201
- },
202
- },
203
- };
204
- </script>
1
+ <template>
2
+ <div
3
+ class="flex items-center justify-between border-gray-200 bg-white px-4 py-3 sm:px-6"
4
+ >
5
+ <div class="flex flex-1 justify-between sm:hidden">
6
+ <div
7
+ href="#"
8
+ class="relative inline-flex items-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50"
9
+ @click="currentPageNumber == '1' ? '' : goToPreviousPage()"
10
+ >
11
+ Previous
12
+ </div>
13
+ <div
14
+ href="#"
15
+ class="relative ml-3 inline-flex items-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50"
16
+ @click="currentPageNumber == lastPageNumber ? '' : goToNextPage()"
17
+ >
18
+ Next
19
+ </div>
20
+ </div>
21
+ <div class="hidden sm:flex sm:flex-1 sm:items-center sm:justify-between">
22
+ <div>
23
+ <p class="text-sm text-gray-700">
24
+ Showing
25
+ <span class="font-medium">{{ setPaginationRecords.from }}</span>
26
+ to
27
+ <span class="font-medium">{{ setPaginationRecords.to }}</span>
28
+ of
29
+ <span class="font-medium">{{
30
+ setPaginationRecords.totalRecords
31
+ }}</span>
32
+ results
33
+ </p>
34
+ </div>
35
+ <div>
36
+ <nav
37
+ class="relative z-0 inline-flex -space-x-px rounded-md shadow-sm"
38
+ aria-label="Pagination"
39
+ >
40
+ <div class="hidden md:-mt-px md:flex">
41
+ <div
42
+ href="#"
43
+ @click="currentPageNumber == '1' ? '' : goToPreviousPage()"
44
+ class="relative inline-flex items-center rounded-l-md border border-r-0 border-gray-300 bg-white px-2 py-2 text-sm font-medium text-gray-500 hover:bg-gray-50"
45
+ :class="
46
+ currentPageNumber == '1'
47
+ ? 'pointer-events-none text-gray-400'
48
+ : 'group cursor-pointer text-gray-500 hover:text-gray-700'
49
+ "
50
+ >
51
+ <span class="sr-only">Previous</span>
52
+ <!-- Heroicon name: solid/chevron-left -->
53
+ <svg
54
+ class="h-5 w-5"
55
+ xmlns="http://www.w3.org/2000/svg"
56
+ viewBox="0 0 20 20"
57
+ fill="currentColor"
58
+ aria-hidden="true"
59
+ >
60
+ <path
61
+ fill-rule="evenodd"
62
+ 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"
63
+ clip-rule="evenodd"
64
+ />
65
+ </svg>
66
+ </div>
67
+ <div
68
+ v-for="page in pageRange"
69
+ :key="page"
70
+ class="cursor-pointer"
71
+ :class="[
72
+ page == currentPageNumber
73
+ ? 'relative z-10 inline-flex items-center border border-indigo-500 bg-indigo-50 px-4 py-2 text-sm font-medium text-indigo-600'
74
+ : '',
75
+ page === '...'
76
+ ? 'relative inline-flex items-center border border-r-0 border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-500 hover:bg-gray-50'
77
+ : '',
78
+ page !== currentPageNumber && page !== '...'
79
+ ? 'relative inline-flex items-center border border-r-0 border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-500 hover:bg-gray-50'
80
+ : '',
81
+ page == currentPageNumber + 1 ? 'border-l-0' : '',
82
+ ]"
83
+ @click="changePage(page)"
84
+ >
85
+ <div v-if="page === '...'">...</div>
86
+ <div v-else>
87
+ {{ page }}
88
+ </div>
89
+ </div>
90
+ <div
91
+ href="#"
92
+ class="relative inline-flex items-center rounded-r-md border border-gray-300 bg-white px-2 py-2 text-sm font-medium text-gray-500 hover:bg-gray-50"
93
+ @click="currentPageNumber == lastPageNumber ? '' : goToNextPage()"
94
+ :class="
95
+ currentPageNumber == lastPageNumber
96
+ ? 'pointer-events-none text-gray-400'
97
+ : 'group cursor-pointer text-gray-500 hover:text-gray-700'
98
+ "
99
+ >
100
+ <span class="sr-only">Next</span>
101
+ <!-- Heroicon name: solid/chevron-right -->
102
+ <svg
103
+ class="h-5 w-5"
104
+ xmlns="http://www.w3.org/2000/svg"
105
+ viewBox="0 0 20 20"
106
+ fill="currentColor"
107
+ aria-hidden="true"
108
+ >
109
+ <path
110
+ fill-rule="evenodd"
111
+ 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"
112
+ clip-rule="evenodd"
113
+ />
114
+ </svg>
115
+ </div>
116
+ </div>
117
+ </nav>
118
+ </div>
119
+ </div>
120
+ </div>
121
+ </template>
122
+ <script>
123
+ import { isEqual } from "lodash-es";
124
+
125
+ export default {
126
+ name: "CPagination",
127
+ props: {
128
+ setPaginationRecords: {
129
+ type: Object,
130
+ },
131
+ setCurrentPage: {
132
+ type: Function,
133
+ },
134
+ setPreviousPage: {
135
+ type: Function,
136
+ },
137
+ setNextPage: {
138
+ type: Function,
139
+ },
140
+ },
141
+ components: {},
142
+ data() {
143
+ return {
144
+ currentPageNumber: this.setPaginationRecords.currentPage,
145
+ lastPageNumber: this.setPaginationRecords.lastPage,
146
+ };
147
+ },
148
+ computed: {
149
+ pageRange() {
150
+ var current = this.setPaginationRecords.currentPage,
151
+ last = this.setPaginationRecords.lastPage,
152
+ delta = 2,
153
+ left = current - delta,
154
+ right = current + delta + 1,
155
+ range = [],
156
+ rangeWithDots = [],
157
+ l;
158
+ for (let i = 1; i <= last; i++) {
159
+ if (i == 1 || i == last || (i >= left && i < right)) {
160
+ range.push(i);
161
+ }
162
+ }
163
+ for (let i of range) {
164
+ if (l) {
165
+ if (i - l === 2) {
166
+ rangeWithDots.push(l + 1);
167
+ } else if (i - l !== 1) {
168
+ rangeWithDots.push("...");
169
+ }
170
+ }
171
+ rangeWithDots.push(i);
172
+ l = i;
173
+ }
174
+ return rangeWithDots;
175
+ },
176
+ },
177
+ methods: {
178
+ changePage(page) {
179
+ if (page !== "...") {
180
+ this.$emit("setCurrentPage", page);
181
+ this.currentPageNumber = page;
182
+ }
183
+ },
184
+ goToPreviousPage() {
185
+ var previousPage = this.currentPageNumber - 1;
186
+ this.currentPageNumber = previousPage;
187
+ this.$emit("setPreviousPage", previousPage);
188
+ },
189
+ goToNextPage() {
190
+ var nextPage = this.currentPageNumber + 1;
191
+ this.currentPageNumber = nextPage;
192
+ this.$emit("setNextPage", nextPage);
193
+ },
194
+ },
195
+ watch: {
196
+ setPaginationRecords(newVal, oldVal) {
197
+ if (!isEqual(newVal, oldVal)) {
198
+ this.currentPageNumber = newVal.currentPage;
199
+ this.lastPageNumber = newVal.lastPage;
200
+ }
201
+ },
202
+ },
203
+ };
204
+ </script>
@@ -1,3 +1,3 @@
1
- import CPagination from './CPagination.vue'
2
-
1
+ import CPagination from './CPagination.vue'
2
+
3
3
  export default CPagination