@coreui/vue-pro 5.9.0 → 5.11.0

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 (198) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/accordion/CAccordionBody.js +2 -1
  3. package/dist/cjs/components/accordion/CAccordionBody.js.map +1 -1
  4. package/dist/cjs/components/accordion/CAccordionButton.js +3 -1
  5. package/dist/cjs/components/accordion/CAccordionButton.js.map +1 -1
  6. package/dist/cjs/components/accordion/CAccordionItem.d.ts +8 -0
  7. package/dist/cjs/components/accordion/CAccordionItem.js +10 -2
  8. package/dist/cjs/components/accordion/CAccordionItem.js.map +1 -1
  9. package/dist/cjs/components/button/CButton.js +1 -1
  10. package/dist/cjs/components/button/CButton.js.map +1 -1
  11. package/dist/cjs/components/calendar/CCalendar.d.ts +6 -6
  12. package/dist/cjs/components/calendar/CCalendar.js +44 -39
  13. package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
  14. package/dist/cjs/components/calendar/types.d.ts +3 -0
  15. package/dist/cjs/components/calendar/utils.d.ts +183 -18
  16. package/dist/cjs/components/calendar/utils.js +327 -43
  17. package/dist/cjs/components/calendar/utils.js.map +1 -1
  18. package/dist/cjs/components/date-picker/CDatePicker.d.ts +1 -1
  19. package/dist/cjs/components/date-range-picker/CDateRangePicker.d.ts +1 -1
  20. package/dist/cjs/components/form/CFormControlWrapper.d.ts +2 -0
  21. package/dist/cjs/components/form/CFormControlWrapper.js +9 -1
  22. package/dist/cjs/components/form/CFormControlWrapper.js.map +1 -1
  23. package/dist/cjs/components/index.d.ts +2 -0
  24. package/dist/cjs/components/index.js +44 -36
  25. package/dist/cjs/components/index.js.map +1 -1
  26. package/dist/cjs/components/link/CLink.js.map +1 -1
  27. package/dist/cjs/components/loading-button/CLoadingButton.d.ts +2 -2
  28. package/dist/cjs/components/multi-select/CMultiSelect.d.ts +12 -0
  29. package/dist/cjs/components/multi-select/CMultiSelect.js +28 -2
  30. package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
  31. package/dist/cjs/components/nav/CNav.d.ts +2 -2
  32. package/dist/cjs/components/nav/CNav.js +3 -2
  33. package/dist/cjs/components/nav/CNav.js.map +1 -1
  34. package/dist/cjs/components/nav/CNavGroup.js +6 -2
  35. package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
  36. package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
  37. package/dist/cjs/components/password-input/CPasswordInput.d.ts +190 -0
  38. package/dist/cjs/components/password-input/CPasswordInput.js +178 -0
  39. package/dist/cjs/components/password-input/CPasswordInput.js.map +1 -0
  40. package/dist/cjs/components/password-input/index.d.ts +6 -0
  41. package/dist/cjs/components/password-input/index.js +13 -0
  42. package/dist/cjs/components/password-input/index.js.map +1 -0
  43. package/dist/cjs/components/popover/CPopover.d.ts +1 -1
  44. package/dist/cjs/components/range-slider/CRangeSlider.js +6 -2
  45. package/dist/cjs/components/range-slider/CRangeSlider.js.map +1 -1
  46. package/dist/cjs/components/rating/CRating.d.ts +1 -1
  47. package/dist/cjs/components/smart-table/CSmartTable.js +2 -2
  48. package/dist/cjs/components/smart-table/CSmartTable.js.map +1 -1
  49. package/dist/cjs/components/smart-table/utils.js.map +1 -1
  50. package/dist/cjs/components/stepper/CStepper.d.ts +168 -0
  51. package/dist/cjs/components/stepper/CStepper.js +305 -0
  52. package/dist/cjs/components/stepper/CStepper.js.map +1 -0
  53. package/dist/cjs/components/stepper/index.d.ts +6 -0
  54. package/dist/cjs/components/stepper/index.js +13 -0
  55. package/dist/cjs/components/stepper/index.js.map +1 -0
  56. package/dist/cjs/components/stepper/types.d.ts +15 -0
  57. package/dist/cjs/components/tabs/CTab.js.map +1 -1
  58. package/dist/cjs/components/tabs/CTabList.d.ts +2 -2
  59. package/dist/cjs/components/tabs/CTabList.js +3 -2
  60. package/dist/cjs/components/tabs/CTabList.js.map +1 -1
  61. package/dist/cjs/components/time-picker/utils.d.ts +10 -0
  62. package/dist/cjs/components/time-picker/utils.js +25 -9
  63. package/dist/cjs/components/time-picker/utils.js.map +1 -1
  64. package/dist/cjs/components/tooltip/CTooltip.d.ts +1 -1
  65. package/dist/cjs/components/widgets/CWidgetStatsB.js +2 -2
  66. package/dist/cjs/components/widgets/CWidgetStatsB.js.map +1 -1
  67. package/dist/cjs/components/widgets/CWidgetStatsC.js +2 -2
  68. package/dist/cjs/components/widgets/CWidgetStatsC.js.map +1 -1
  69. package/dist/cjs/index.js +50 -42
  70. package/dist/cjs/index.js.map +1 -1
  71. package/dist/cjs/node_modules/vue-types/dist/index.js +567 -0
  72. package/dist/cjs/node_modules/vue-types/dist/index.js.map +1 -0
  73. package/dist/cjs/node_modules/vue-types/dist/shared/vue-types.8139b772.js +29 -0
  74. package/dist/cjs/node_modules/vue-types/dist/shared/vue-types.8139b772.js.map +1 -0
  75. package/dist/cjs/utils/getNextActiveElement.js.map +1 -1
  76. package/dist/cjs/utils/index.d.ts +2 -1
  77. package/dist/cjs/utils/isEqual.d.ts +2 -0
  78. package/dist/cjs/utils/isEqual.js +78 -0
  79. package/dist/cjs/utils/isEqual.js.map +1 -0
  80. package/dist/esm/components/accordion/CAccordionBody.js +2 -1
  81. package/dist/esm/components/accordion/CAccordionBody.js.map +1 -1
  82. package/dist/esm/components/accordion/CAccordionButton.js +3 -1
  83. package/dist/esm/components/accordion/CAccordionButton.js.map +1 -1
  84. package/dist/esm/components/accordion/CAccordionItem.d.ts +8 -0
  85. package/dist/esm/components/accordion/CAccordionItem.js +11 -3
  86. package/dist/esm/components/accordion/CAccordionItem.js.map +1 -1
  87. package/dist/esm/components/avatar/CAvatar.js +1 -1
  88. package/dist/esm/components/badge/CBadge.js +1 -1
  89. package/dist/esm/components/button/CButton.js +2 -2
  90. package/dist/esm/components/button/CButton.js.map +1 -1
  91. package/dist/esm/components/calendar/CCalendar.d.ts +6 -6
  92. package/dist/esm/components/calendar/CCalendar.js +46 -41
  93. package/dist/esm/components/calendar/CCalendar.js.map +1 -1
  94. package/dist/esm/components/calendar/types.d.ts +3 -0
  95. package/dist/esm/components/calendar/utils.d.ts +183 -18
  96. package/dist/esm/components/calendar/utils.js +320 -44
  97. package/dist/esm/components/calendar/utils.js.map +1 -1
  98. package/dist/esm/components/card/CCard.js +1 -1
  99. package/dist/esm/components/date-picker/CDatePicker.d.ts +1 -1
  100. package/dist/esm/components/date-range-picker/CDateRangePicker.d.ts +1 -1
  101. package/dist/esm/components/dropdown/CDropdownToggle.js +2 -2
  102. package/dist/esm/components/form/CFormControlWrapper.d.ts +2 -0
  103. package/dist/esm/components/form/CFormControlWrapper.js +9 -1
  104. package/dist/esm/components/form/CFormControlWrapper.js.map +1 -1
  105. package/dist/esm/components/index.d.ts +2 -0
  106. package/dist/esm/components/index.js +4 -0
  107. package/dist/esm/components/index.js.map +1 -1
  108. package/dist/esm/components/link/CLink.js.map +1 -1
  109. package/dist/esm/components/loading-button/CLoadingButton.d.ts +2 -2
  110. package/dist/esm/components/multi-select/CMultiSelect.d.ts +12 -0
  111. package/dist/esm/components/multi-select/CMultiSelect.js +29 -3
  112. package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
  113. package/dist/esm/components/nav/CNav.d.ts +2 -2
  114. package/dist/esm/components/nav/CNav.js +3 -2
  115. package/dist/esm/components/nav/CNav.js.map +1 -1
  116. package/dist/esm/components/nav/CNavGroup.js +6 -2
  117. package/dist/esm/components/nav/CNavGroup.js.map +1 -1
  118. package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
  119. package/dist/esm/components/password-input/CPasswordInput.d.ts +190 -0
  120. package/dist/esm/components/password-input/CPasswordInput.js +176 -0
  121. package/dist/esm/components/password-input/CPasswordInput.js.map +1 -0
  122. package/dist/esm/components/password-input/index.d.ts +6 -0
  123. package/dist/esm/components/password-input/index.js +10 -0
  124. package/dist/esm/components/password-input/index.js.map +1 -0
  125. package/dist/esm/components/popover/CPopover.d.ts +1 -1
  126. package/dist/esm/components/range-slider/CRangeSlider.js +6 -2
  127. package/dist/esm/components/range-slider/CRangeSlider.js.map +1 -1
  128. package/dist/esm/components/rating/CRating.d.ts +1 -1
  129. package/dist/esm/components/smart-table/CSmartTable.js +2 -2
  130. package/dist/esm/components/smart-table/CSmartTable.js.map +1 -1
  131. package/dist/esm/components/smart-table/CSmartTableBody.js +1 -1
  132. package/dist/esm/components/smart-table/utils.js.map +1 -1
  133. package/dist/esm/components/stepper/CStepper.d.ts +168 -0
  134. package/dist/esm/components/stepper/CStepper.js +303 -0
  135. package/dist/esm/components/stepper/CStepper.js.map +1 -0
  136. package/dist/esm/components/stepper/index.d.ts +6 -0
  137. package/dist/esm/components/stepper/index.js +10 -0
  138. package/dist/esm/components/stepper/index.js.map +1 -0
  139. package/dist/esm/components/stepper/types.d.ts +15 -0
  140. package/dist/esm/components/tabs/CTab.js.map +1 -1
  141. package/dist/esm/components/tabs/CTabList.d.ts +2 -2
  142. package/dist/esm/components/tabs/CTabList.js +3 -2
  143. package/dist/esm/components/tabs/CTabList.js.map +1 -1
  144. package/dist/esm/components/time-picker/utils.d.ts +10 -0
  145. package/dist/esm/components/time-picker/utils.js +25 -10
  146. package/dist/esm/components/time-picker/utils.js.map +1 -1
  147. package/dist/esm/components/tooltip/CTooltip.d.ts +1 -1
  148. package/dist/esm/components/widgets/CWidgetStatsB.js +2 -2
  149. package/dist/esm/components/widgets/CWidgetStatsB.js.map +1 -1
  150. package/dist/esm/components/widgets/CWidgetStatsC.js +2 -2
  151. package/dist/esm/components/widgets/CWidgetStatsC.js.map +1 -1
  152. package/dist/esm/index.js +4 -0
  153. package/dist/esm/index.js.map +1 -1
  154. package/dist/esm/node_modules/vue-types/dist/index.js +541 -0
  155. package/dist/esm/node_modules/vue-types/dist/index.js.map +1 -0
  156. package/dist/esm/node_modules/vue-types/dist/shared/vue-types.8139b772.js +25 -0
  157. package/dist/esm/node_modules/vue-types/dist/shared/vue-types.8139b772.js.map +1 -0
  158. package/dist/esm/utils/getNextActiveElement.js.map +1 -1
  159. package/dist/esm/utils/index.d.ts +2 -1
  160. package/dist/esm/utils/isEqual.d.ts +2 -0
  161. package/dist/esm/utils/isEqual.js +74 -0
  162. package/dist/esm/utils/isEqual.js.map +1 -0
  163. package/package.json +10 -10
  164. package/src/components/accordion/CAccordionBody.ts +2 -1
  165. package/src/components/accordion/CAccordionButton.ts +3 -1
  166. package/src/components/accordion/CAccordionItem.ts +11 -3
  167. package/src/components/button/CButton.ts +1 -1
  168. package/src/components/calendar/CCalendar.ts +108 -95
  169. package/src/components/calendar/types.ts +5 -0
  170. package/src/components/calendar/utils.ts +439 -111
  171. package/src/components/date-picker/CDatePicker.ts +1 -1
  172. package/src/components/date-range-picker/CDateRangePicker.ts +1 -1
  173. package/src/components/form/CFormControlWrapper.ts +35 -21
  174. package/src/components/index.ts +2 -0
  175. package/src/components/multi-select/CMultiSelect.ts +57 -26
  176. package/src/components/nav/CNav.ts +3 -2
  177. package/src/components/nav/CNavGroup.ts +7 -2
  178. package/src/components/password-input/CPasswordInput.ts +214 -0
  179. package/src/components/password-input/index.ts +10 -0
  180. package/src/components/range-slider/CRangeSlider.ts +7 -2
  181. package/src/components/stepper/CStepper.ts +384 -0
  182. package/src/components/stepper/__tests__/CStepper.spec.ts +175 -0
  183. package/src/components/stepper/index.ts +10 -0
  184. package/src/components/stepper/types.ts +18 -0
  185. package/src/components/tabs/CTabList.ts +3 -2
  186. package/src/components/time-picker/CTimePicker.ts +22 -22
  187. package/src/components/time-picker/CTimePickerRollCol.ts +3 -3
  188. package/src/components/time-picker/utils.ts +30 -13
  189. package/src/utils/index.ts +10 -1
  190. package/src/utils/isEqual.ts +75 -0
  191. package/dist/cjs/node_modules/is-plain-object/dist/is-plain-object.js +0 -37
  192. package/dist/cjs/node_modules/is-plain-object/dist/is-plain-object.js.map +0 -1
  193. package/dist/cjs/node_modules/vue-types/dist/vue-types.modern.js +0 -33
  194. package/dist/cjs/node_modules/vue-types/dist/vue-types.modern.js.map +0 -1
  195. package/dist/esm/node_modules/is-plain-object/dist/is-plain-object.js +0 -35
  196. package/dist/esm/node_modules/is-plain-object/dist/is-plain-object.js.map +0 -1
  197. package/dist/esm/node_modules/vue-types/dist/vue-types.modern.js +0 -6
  198. package/dist/esm/node_modules/vue-types/dist/vue-types.modern.js.map +0 -1
@@ -0,0 +1,74 @@
1
+ const isEqual = (a, b) => {
2
+ if (a === b)
3
+ return true;
4
+ // Handle cases where either a or b is null or not an object
5
+ if (a === null || b === null || typeof a !== 'object' || typeof b !== 'object') {
6
+ // Handle NaN case
7
+ return a !== a && b !== b;
8
+ }
9
+ // Different constructors mean objects are not equal
10
+ if (a.constructor !== b.constructor)
11
+ return false;
12
+ // Handle Arrays
13
+ if (Array.isArray(a) && Array.isArray(b)) {
14
+ if (a.length !== b.length)
15
+ return false;
16
+ for (const [i, element] of a.entries()) {
17
+ const element2 = typeof b[i] === 'object' ? { ...b[i] } : b[i];
18
+ if (!isEqual(element, element2))
19
+ return false;
20
+ }
21
+ return true;
22
+ }
23
+ // Handle Maps
24
+ if (a instanceof Map && b instanceof Map) {
25
+ if (a.size !== b.size)
26
+ return false;
27
+ for (const [key, value] of a) {
28
+ if (!b.has(key) || !isEqual(value, b.get(key)))
29
+ return false;
30
+ }
31
+ return true;
32
+ }
33
+ // Handle Sets
34
+ if (a instanceof Set && b instanceof Set) {
35
+ if (a.size !== b.size)
36
+ return false;
37
+ for (const value of a) {
38
+ if (!b.has(value))
39
+ return false;
40
+ }
41
+ return true;
42
+ }
43
+ // Handle RegExp
44
+ if (a instanceof RegExp && b instanceof RegExp) {
45
+ return a.source === b.source && a.flags === b.flags;
46
+ }
47
+ // Handle objects with custom valueOf or toString
48
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
+ if (a.valueOf !== Object.prototype.valueOf && a.valueOf() !== b.valueOf())
50
+ return false;
51
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
+ if (a.toString !== Object.prototype.toString && a.toString() !== b.toString())
53
+ return false;
54
+ // Compare object keys
55
+ const aKeys = Object.keys(a);
56
+ const bKeys = Object.keys(b);
57
+ if (aKeys.length !== bKeys.length)
58
+ return false;
59
+ // Ensure all keys in a are present in b
60
+ for (const key of aKeys) {
61
+ if (!Object.prototype.hasOwnProperty.call(b, key))
62
+ return false;
63
+ }
64
+ // Deep compare each property
65
+ for (const key of aKeys) {
66
+ if (!isEqual(a[key], b[key])) {
67
+ return false;
68
+ }
69
+ }
70
+ return true;
71
+ };
72
+
73
+ export { isEqual as default };
74
+ //# sourceMappingURL=isEqual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isEqual.js","sources":["../../../src/utils/isEqual.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coreui/vue-pro",
3
- "version": "5.9.0",
3
+ "version": "5.11.0",
4
4
  "description": "UI Components Library for Vue.js",
5
5
  "keywords": [
6
6
  "vue",
@@ -41,25 +41,25 @@
41
41
  "test:update": "jest --coverage --updateSnapshot"
42
42
  },
43
43
  "dependencies": {
44
- "@coreui/coreui-pro": "^5.8.0",
44
+ "@coreui/coreui-pro": "^5.14.0",
45
45
  "@popperjs/core": "^2.11.8"
46
46
  },
47
47
  "devDependencies": {
48
- "@rollup/plugin-commonjs": "^28.0.1",
49
- "@rollup/plugin-node-resolve": "^15.3.0",
50
- "@rollup/plugin-typescript": "^12.1.1",
48
+ "@rollup/plugin-commonjs": "^28.0.3",
49
+ "@rollup/plugin-node-resolve": "^16.0.1",
50
+ "@rollup/plugin-typescript": "^12.1.2",
51
51
  "@types/jest": "^29.5.14",
52
52
  "@vue/test-utils": "^2.4.6",
53
53
  "@vue/vue3-jest": "29.2.6",
54
54
  "cross-env": "^7.0.3",
55
55
  "jest": "^29.7.0",
56
56
  "jest-environment-jsdom": "^29.7.0",
57
- "rollup": "^4.27.3",
57
+ "rollup": "^4.41.1",
58
58
  "rollup-plugin-vue": "^6.0.0",
59
- "ts-jest": "^29.2.5",
60
- "typescript": "^5.6.3",
61
- "vue": "^3.5.13",
62
- "vue-types": "^5.1.3"
59
+ "ts-jest": "^29.3.4",
60
+ "typescript": "^5.8.3",
61
+ "vue": "^3.5.16",
62
+ "vue-types": "^6.0.0"
63
63
  },
64
64
  "peerDependencies": {
65
65
  "vue": "^3.5.0"
@@ -4,11 +4,12 @@ import { CCollapse } from '../collapse/CCollapse'
4
4
  const CAccordionBody = defineComponent({
5
5
  name: 'CAccordionBody',
6
6
  setup(_, { slots }) {
7
+ const id = inject('id')
7
8
  const visible = inject('visible') as Ref<boolean>
8
9
  return () =>
9
10
  h(
10
11
  CCollapse,
11
- { class: 'accordion-collapse', visible: visible.value },
12
+ { class: 'accordion-collapse', id, visible: visible.value },
12
13
  {
13
14
  default: () => h('div', { class: ['accordion-body'] }, slots.default && slots.default()),
14
15
  },
@@ -3,6 +3,7 @@ import { defineComponent, h, inject, Ref } from 'vue'
3
3
  const CAccordionButton = defineComponent({
4
4
  name: 'CAccordionButton',
5
5
  setup(_, { slots }) {
6
+ const id = inject('id') as string
6
7
  const toggleVisibility = inject('toggleVisibility') as () => void
7
8
  const visible = inject('visible') as Ref<boolean>
8
9
 
@@ -11,7 +12,8 @@ const CAccordionButton = defineComponent({
11
12
  'button',
12
13
  {
13
14
  type: 'button',
14
- 'aria-expanded': !visible.value,
15
+ 'aria-control': id,
16
+ 'aria-expanded': visible.value,
15
17
  class: ['accordion-button', { ['collapsed']: !visible.value }],
16
18
  onClick: () => toggleVisibility(),
17
19
  },
@@ -1,8 +1,12 @@
1
- import { defineComponent, h, inject, provide, ref, watch, Ref } from 'vue'
1
+ import { defineComponent, h, inject, provide, ref, watch, Ref, useId } from 'vue'
2
2
 
3
3
  const CAccordionItem = defineComponent({
4
4
  name: 'CAccordionItem',
5
5
  props: {
6
+ /**
7
+ * The id global attribute defines an identifier (ID) that must be unique in the whole document.
8
+ */
9
+ id: String,
6
10
  /**
7
11
  * The item key.
8
12
  */
@@ -13,16 +17,20 @@ const CAccordionItem = defineComponent({
13
17
  const alwaysOpen = inject('alwaysOpen') as boolean
14
18
  const setActiveItemKey = inject('setActiveItemKey') as (key: number | string) => void
15
19
 
16
- const itemKey = ref(props.itemKey ?? Math.random().toString(36).slice(2, 11))
20
+ const id = props.id ?? useId()
21
+ const itemKey = ref(props.itemKey ?? id)
17
22
  const visible = ref(Boolean(activeItemKey.value === itemKey.value))
18
23
 
19
24
  watch(activeItemKey, () => (visible.value = Boolean(activeItemKey.value === itemKey.value)))
20
25
 
21
26
  const toggleVisibility = () => {
22
27
  visible.value = !visible.value
23
- !alwaysOpen && visible && setActiveItemKey(itemKey.value)
28
+ if (!alwaysOpen && visible) {
29
+ setActiveItemKey(itemKey.value)
30
+ }
24
31
  }
25
32
 
33
+ provide('id', id)
26
34
  provide('visible', visible)
27
35
  provide('toggleVisibility', toggleVisibility)
28
36
 
@@ -93,9 +93,9 @@ export const CButton = defineComponent({
93
93
  {
94
94
  class: [
95
95
  'btn',
96
+ props.variant && props.color ? `btn-${props.variant}-${props.color}` : `btn-${props.variant}`,
96
97
  {
97
98
  [`btn-${props.color}`]: props.color && !props.variant,
98
- [`btn-${props.variant}-${props.color}`]: props.color && props.variant,
99
99
  [`btn-${props.size}`]: props.size,
100
100
  active: props.active,
101
101
  disabled: props.disabled,