@coreui/react-pro 4.9.0-next.0 → 4.9.0-next.1

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 (133) hide show
  1. package/README.md +1 -1
  2. package/dist/components/alert/CAlert.d.ts +1 -1
  3. package/dist/components/avatar/CAvatar.d.ts +1 -1
  4. package/dist/components/badge/CBadge.d.ts +1 -1
  5. package/dist/components/button/CButton.d.ts +1 -1
  6. package/dist/components/calendar/utils.d.ts +0 -1
  7. package/dist/components/callout/CCallout.d.ts +1 -1
  8. package/dist/components/card/CCard.d.ts +1 -1
  9. package/dist/components/date-range-picker/CDateRangePicker.d.ts +1 -1
  10. package/dist/components/date-range-picker/utils.d.ts +1 -0
  11. package/dist/components/dropdown/CDropdown.d.ts +1 -1
  12. package/dist/components/dropdown/CDropdownToggle.d.ts +1 -1
  13. package/dist/components/form/CFormCheck.d.ts +1 -1
  14. package/dist/components/list-group/CListGroupItem.d.ts +4 -5
  15. package/dist/components/multi-select/CMultiSelect.d.ts +1 -13
  16. package/dist/components/multi-select/CMultiSelectNativeSelect.d.ts +1 -1
  17. package/dist/components/multi-select/CMultiSelectOptions.d.ts +1 -1
  18. package/dist/components/multi-select/CMultiSelectSelection.d.ts +1 -1
  19. package/dist/components/multi-select/types.d.ts +14 -0
  20. package/dist/components/multi-select/utils.d.ts +6 -0
  21. package/dist/components/navbar/CNavbar.d.ts +1 -1
  22. package/dist/components/picker/CPicker.d.ts +1 -1
  23. package/dist/components/placeholder/CPlaceholder.d.ts +1 -1
  24. package/dist/components/popover/CPopover.d.ts +1 -1
  25. package/dist/components/progress/CProgressBar.d.ts +1 -1
  26. package/dist/components/smart-table/CSmartTableHead.d.ts +1 -1
  27. package/dist/components/smart-table/CSmartTableInterface.d.ts +8 -0
  28. package/dist/components/smart-table/types.d.ts +1 -1
  29. package/dist/components/spinner/CSpinner.d.ts +1 -1
  30. package/dist/components/table/CTable.d.ts +2 -18
  31. package/dist/components/table/CTableBody.d.ts +1 -1
  32. package/dist/components/table/CTableDataCell.d.ts +1 -1
  33. package/dist/components/table/CTableFoot.d.ts +1 -1
  34. package/dist/components/table/CTableHead.d.ts +1 -1
  35. package/dist/components/table/CTableHeaderCell.d.ts +1 -1
  36. package/dist/components/table/CTableRow.d.ts +1 -1
  37. package/dist/components/table/types.d.ts +17 -0
  38. package/dist/components/table/utils.d.ts +5 -0
  39. package/dist/components/toast/CToast.d.ts +1 -1
  40. package/dist/components/toast/CToastClose.d.ts +1 -1
  41. package/dist/components/tooltip/CTooltip.d.ts +1 -1
  42. package/dist/components/virtual-scroller/CVirtualScroller.d.ts +0 -8
  43. package/dist/components/widgets/CWidgetStatsA.d.ts +1 -1
  44. package/dist/components/widgets/CWidgetStatsB.d.ts +1 -1
  45. package/dist/components/widgets/CWidgetStatsC.d.ts +1 -1
  46. package/dist/components/widgets/CWidgetStatsD.d.ts +1 -1
  47. package/dist/components/widgets/CWidgetStatsF.d.ts +1 -1
  48. package/dist/index.es.js +216 -225
  49. package/dist/index.es.js.map +1 -1
  50. package/dist/index.js +216 -225
  51. package/dist/index.js.map +1 -1
  52. package/dist/props.d.ts +8 -0
  53. package/dist/types.d.ts +7 -0
  54. package/dist/utils/index.d.ts +1 -3
  55. package/package.json +1 -1
  56. package/src/components/accordion/CAccordionBody.tsx +1 -0
  57. package/src/components/accordion/CAccordionCollapse.tsx +1 -0
  58. package/src/components/alert/CAlert.tsx +2 -1
  59. package/src/components/avatar/CAvatar.tsx +2 -8
  60. package/src/components/backdrop/CBackdrop.tsx +1 -1
  61. package/src/components/badge/CBadge.tsx +2 -10
  62. package/src/components/button/CButton.tsx +3 -1
  63. package/src/components/calendar/utils.ts +0 -46
  64. package/src/components/callout/CCallout.tsx +2 -1
  65. package/src/components/card/CCard.tsx +2 -1
  66. package/src/components/date-range-picker/CDateRangePicker.tsx +2 -2
  67. package/src/components/date-range-picker/utils.ts +49 -0
  68. package/src/components/dropdown/CDropdown.tsx +2 -1
  69. package/src/components/dropdown/CDropdownItem.tsx +1 -2
  70. package/src/components/dropdown/CDropdownMenu.tsx +2 -1
  71. package/src/components/dropdown/CDropdownToggle.tsx +5 -4
  72. package/src/components/form/CFormCheck.tsx +3 -3
  73. package/src/components/form/CFormControlValidation.tsx +0 -1
  74. package/src/components/form/CFormControlWrapper.tsx +0 -1
  75. package/src/components/form/CFormInput.tsx +8 -4
  76. package/src/components/form/CFormRange.tsx +1 -2
  77. package/src/components/form/CFormSelect.tsx +1 -2
  78. package/src/components/form/CFormTextarea.tsx +1 -2
  79. package/src/components/list-group/CListGroupItem.tsx +8 -8
  80. package/src/components/list-group/CListGroupItem.tsx~HEAD +3 -1
  81. package/src/components/modal/CModal.tsx +2 -2
  82. package/src/components/modal/CModalHeader.tsx +3 -2
  83. package/src/components/multi-select/CMultiSelect.tsx +15 -74
  84. package/src/components/multi-select/CMultiSelectNativeSelect.tsx +1 -1
  85. package/src/components/multi-select/CMultiSelectOptions.tsx +2 -2
  86. package/src/components/multi-select/CMultiSelectSelection.tsx +1 -1
  87. package/src/components/multi-select/types.ts +15 -0
  88. package/src/components/multi-select/utils.ts +92 -0
  89. package/src/components/nav/CNavItem.tsx +1 -0
  90. package/src/components/nav/CNavLink.tsx +3 -3
  91. package/src/components/navbar/CNavbar.tsx +2 -1
  92. package/src/components/offcanvas/COffcanvas.tsx +4 -3
  93. package/src/components/picker/CPicker.tsx +1 -1
  94. package/src/components/placeholder/CPlaceholder.tsx +2 -1
  95. package/src/components/popover/CPopover.tsx +2 -1
  96. package/src/components/progress/CProgress.tsx +1 -0
  97. package/src/components/progress/CProgressBar.tsx +2 -1
  98. package/src/components/sidebar/CSidebar.tsx +2 -1
  99. package/src/components/smart-table/CSmartTable.tsx +1 -1
  100. package/src/components/smart-table/CSmartTableBody.tsx +82 -81
  101. package/src/components/smart-table/CSmartTableHead.tsx +5 -2
  102. package/src/components/smart-table/CSmartTableInterface.tsx +8 -0
  103. package/src/components/smart-table/{utils.tsx → utils.ts} +1 -1
  104. package/src/components/spinner/CSpinner.tsx +2 -1
  105. package/src/components/table/CTable.tsx +25 -59
  106. package/src/components/table/CTableBody.tsx +2 -1
  107. package/src/components/table/CTableDataCell.tsx +2 -1
  108. package/src/components/table/CTableFoot.tsx +2 -1
  109. package/src/components/table/CTableHead.tsx +2 -1
  110. package/src/components/table/CTableHeaderCell.tsx +2 -1
  111. package/src/components/table/CTableRow.tsx +2 -1
  112. package/src/components/table/types.ts +20 -0
  113. package/src/components/table/utils.ts +29 -0
  114. package/src/components/tabs/CTabPane.tsx +1 -0
  115. package/src/components/time-picker/CTimePicker.tsx +2 -4
  116. package/src/components/toast/CToast.tsx +3 -3
  117. package/src/components/toast/CToastClose.tsx +2 -2
  118. package/src/components/toast/CToaster.tsx +2 -1
  119. package/src/components/tooltip/CTooltip.tsx +3 -2
  120. package/src/components/virtual-scroller/CVirtualScroller.tsx +31 -54
  121. package/src/components/widgets/CWidgetStatsA.tsx +3 -3
  122. package/src/components/widgets/CWidgetStatsB.tsx +4 -4
  123. package/src/components/widgets/CWidgetStatsC.tsx +4 -4
  124. package/src/components/widgets/CWidgetStatsD.tsx +4 -5
  125. package/src/components/widgets/CWidgetStatsE.tsx +1 -2
  126. package/src/components/widgets/CWidgetStatsF.tsx +3 -4
  127. package/src/{components/Types.tsx → props.ts} +1 -68
  128. package/src/types.ts +68 -0
  129. package/src/utils/index.ts +1 -3
  130. package/src/components/multi-select/CMultiSelectCleaner.tsx +0 -18
  131. package/src/utils/getNextSibling.ts +0 -18
  132. package/src/utils/getPreviousSibling.ts +0 -18
  133. package/src/components/smart-table/{types.tsx → types.ts} +1 -1
@@ -2,7 +2,8 @@ import React, { forwardRef, TdHTMLAttributes, ThHTMLAttributes } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
- import { Colors, colorPropType } from '../Types'
5
+ import { colorPropType } from '../../props'
6
+ import type { Colors } from '../../types'
6
7
 
7
8
  export interface CTableDataCellProps
8
9
  extends Omit<TdHTMLAttributes<HTMLTableCellElement>, 'align'>,
@@ -2,7 +2,8 @@ import PropTypes from 'prop-types'
2
2
  import React, { forwardRef, HTMLAttributes } from 'react'
3
3
  import classNames from 'classnames'
4
4
 
5
- import { Colors, colorPropType } from '../Types'
5
+ import { colorPropType } from '../../props'
6
+ import type { Colors } from '../../types'
6
7
 
7
8
  export interface CTableFootProps extends HTMLAttributes<HTMLTableSectionElement> {
8
9
  /**
@@ -2,7 +2,8 @@ import React, { forwardRef, HTMLAttributes } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
- import { Colors, colorPropType } from '../Types'
5
+ import { colorPropType } from '../../props'
6
+ import type { Colors } from '../../types'
6
7
 
7
8
  export interface CTableHeadProps extends HTMLAttributes<HTMLTableSectionElement> {
8
9
  /**
@@ -2,7 +2,8 @@ import React, { forwardRef, ThHTMLAttributes } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
- import { Colors, colorPropType } from '../Types'
5
+ import { colorPropType } from '../../props'
6
+ import type { Colors } from '../../types'
6
7
 
7
8
  export interface CTableHeaderCellProps extends ThHTMLAttributes<HTMLTableCellElement> {
8
9
  /**
@@ -2,7 +2,8 @@ import React, { forwardRef, HTMLAttributes } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
- import { Colors, colorPropType } from '../Types'
5
+ import { colorPropType } from '../../props'
6
+ import type { Colors } from '../../types'
6
7
 
7
8
  export interface CTableRowProps extends HTMLAttributes<HTMLTableRowElement> {
8
9
  /**
@@ -0,0 +1,20 @@
1
+ import { CTableDataCellProps } from '../table/CTableDataCell'
2
+ import { CTableHeaderCellProps } from '../table/CTableHeaderCell'
3
+ import { CTableRowProps } from '../table/CTableRow'
4
+
5
+ export type Column = {
6
+ label?: string
7
+ key: string
8
+ _style?: any
9
+ _props?: CTableHeaderCellProps
10
+ }
11
+
12
+ export type FooterItem = {
13
+ label?: string
14
+ _props?: CTableDataCellProps
15
+ }
16
+
17
+ export type Item = {
18
+ [key: string]: number | string | any
19
+ _props?: CTableRowProps
20
+ }
@@ -0,0 +1,29 @@
1
+ import type { Column, Item } from './types'
2
+
3
+ export const pretifyName = (name: string) => {
4
+ return name
5
+ .replace(/[-_.]/g, ' ')
6
+ .replace(/ +/g, ' ')
7
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
8
+ .split(' ')
9
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
10
+ .join(' ')
11
+ }
12
+
13
+ export const getColumnLabel = (column: Column | string) =>
14
+ typeof column === 'object'
15
+ ? column.label !== undefined
16
+ ? column.label
17
+ : pretifyName(column.key)
18
+ : pretifyName(column)
19
+
20
+ export const getColumnNames = (columns: (string | Column)[] | undefined, items?: Item[]) =>
21
+ columns
22
+ ? columns.map((column: Column | string) => {
23
+ if (typeof column === 'object') return column.key
24
+ else return column
25
+ })
26
+ : items && getColumnNamesFromItems(items)
27
+
28
+ export const getColumnNamesFromItems = (items: Item[]) =>
29
+ Object.keys(items[0] || {}).filter((el) => el.charAt(0) !== '_')
@@ -4,6 +4,7 @@ import classNames from 'classnames'
4
4
  import { Transition } from 'react-transition-group'
5
5
 
6
6
  import { useForkedRef } from '../../hooks'
7
+
7
8
  export interface CTabPaneProps extends HTMLAttributes<HTMLDivElement> {
8
9
  /**
9
10
  * A string of all className you want applied to the base component.
@@ -127,15 +127,13 @@ export const CTimePicker = forwardRef<HTMLDivElement | HTMLLIElement, CTimePicke
127
127
  hour12: false,
128
128
  })
129
129
 
130
- useEffect(() => {
131
- setLocalizedTimePartials(getLocalizedTimePartials(locale, ampm))
132
- }, [date])
133
-
134
130
  useEffect(() => {
135
131
  setDate(convertTimeToDate(time))
136
132
  }, [time])
137
133
 
138
134
  useEffect(() => {
135
+ setLocalizedTimePartials(getLocalizedTimePartials(locale, ampm))
136
+
139
137
  if (inputRef.current) {
140
138
  inputRef.current.value = date
141
139
  ? date.toLocaleTimeString(locale, {
@@ -6,13 +6,13 @@ import React, {
6
6
  useRef,
7
7
  useState,
8
8
  } from 'react'
9
- import { Transition } from 'react-transition-group'
10
9
  import PropTypes from 'prop-types'
11
10
  import classNames from 'classnames'
12
-
13
- import { Colors, colorPropType } from '../Types'
11
+ import { Transition } from 'react-transition-group'
14
12
 
15
13
  import { useForkedRef } from '../../hooks'
14
+ import { colorPropType } from '../../props'
15
+ import type { Colors } from '../../types'
16
16
 
17
17
  export interface CToastProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
18
18
  /**
@@ -1,9 +1,9 @@
1
1
  import React, { ElementType, forwardRef, useContext } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import { CToastContext } from './CToast'
4
- import { CCloseButton, CCloseButtonProps } from '../close-button/CCloseButton'
5
4
 
6
- import type { CButtonProps } from '../button/CButton'
5
+ import { CButtonProps } from '../button/CButton'
6
+ import { CCloseButton, CCloseButtonProps } from '../close-button/CCloseButton'
7
7
 
8
8
  type CombineButtonProps = CCloseButtonProps & CButtonProps
9
9
  export interface CToastCloseProps extends CombineButtonProps {
@@ -1,7 +1,8 @@
1
1
  import React, { forwardRef, HTMLAttributes, useEffect, useState, useRef, ReactElement } from 'react'
2
- import PropTypes from 'prop-types'
3
2
  import { createPortal } from 'react-dom'
3
+ import PropTypes from 'prop-types'
4
4
  import classNames from 'classnames'
5
+
5
6
  export interface CToasterProps extends HTMLAttributes<HTMLDivElement> {
6
7
  /**
7
8
  * A string of all className you want applied to the base component.
@@ -1,11 +1,12 @@
1
1
  import React, { FC, HTMLAttributes, ReactNode, useEffect, useRef, useState } from 'react'
2
2
  import { createPortal } from 'react-dom'
3
- import classNames from 'classnames'
4
3
  import PropTypes from 'prop-types'
4
+ import classNames from 'classnames'
5
5
  import { usePopper } from 'react-popper'
6
6
  import { Transition } from 'react-transition-group'
7
7
 
8
- import { Triggers, triggerPropType } from '../Types'
8
+ import { triggerPropType } from '../../props'
9
+ import type { Triggers } from '../../types'
9
10
 
10
11
  export interface CTooltipProps extends HTMLAttributes<HTMLDivElement> {
11
12
  /**
@@ -9,14 +9,6 @@ export interface CVirtualScrollerProps extends Omit<HTMLAttributes<HTMLDivElemen
9
9
  * A string of all className you want applied to the base component.
10
10
  */
11
11
  className?: string
12
- /**
13
- * Single item height.
14
- */
15
- itemHeight?: number | 'auto'
16
- /**
17
- * Number of items.
18
- */
19
- itemsNumber?: number
20
12
  /**
21
13
  * Event fires when the component has been scrolled.
22
14
  */
@@ -28,23 +20,20 @@ export interface CVirtualScrollerProps extends Omit<HTMLAttributes<HTMLDivElemen
28
20
  }
29
21
 
30
22
  export const CVirtualScroller = forwardRef<HTMLDivElement, CVirtualScrollerProps>(
31
- ({ children, className, itemHeight = 'auto', visibleItems, itemsNumber, onScroll }, ref) => {
23
+ ({ children, className, visibleItems, onScroll }, ref) => {
32
24
  const virtualScrollRef = useRef<HTMLDivElement>(null)
33
25
  const virtualScrollContentRef = useRef<HTMLDivElement>(null)
34
26
  const forkedRef = useForkedRef(ref, virtualScrollRef)
35
27
 
36
- const [currentItemIndex, setCurrentItemIndex] = useState(0)
37
- const [_itemHeight, setItemHeight] = useState<number>(itemHeight === 'auto' ? 0 : itemHeight)
38
- const [_itemsNumber, setItemsNumber] = useState(itemsNumber || React.Children.count(children))
28
+ const [buffer, setBuffer] = useState(Math.floor(visibleItems / 2))
29
+ const [currentItemIndex, setCurrentItemIndex] = useState(1)
30
+ const [itemHeight, setItemHeight] = useState(0)
31
+ const [itemsNumber, setItemsNumber] = useState(React.Children.count(children))
39
32
  const [viewportPadding, setViewportPadding] = useState(0)
40
33
  const [viewportHeight, setViewportHeight] = useState(
41
- visibleItems * _itemHeight + 2 * viewportPadding,
34
+ visibleItems * itemHeight + 2 * viewportPadding,
42
35
  )
43
- const [maxHeight, setMaxHeight] = useState(_itemsNumber * _itemHeight + 2 * viewportPadding)
44
- const [topPadding, setTopPadding] = useState(0)
45
- const [bottomPadding, setBottomPadding] = useState(0)
46
-
47
- const [contentHeight, setContentHeight] = useState(0)
36
+ const [maxHeight, setMaxHeight] = useState(itemsNumber * itemHeight + 2 * viewportPadding)
48
37
 
49
38
  useEffect(() => {
50
39
  virtualScrollRef.current && virtualScrollRef.current.scrollTop
@@ -58,33 +47,20 @@ export const CVirtualScroller = forwardRef<HTMLDivElement, CVirtualScrollerProps
58
47
  }, [children, itemsNumber])
59
48
 
60
49
  useEffect(() => {
61
- setViewportHeight(visibleItems * _itemHeight + 2 * viewportPadding)
62
- }, [viewportPadding, visibleItems, _itemHeight])
50
+ setViewportHeight(visibleItems * itemHeight + 2 * viewportPadding)
51
+ }, [viewportPadding, visibleItems, itemHeight])
63
52
 
64
53
  useEffect(() => {
65
- setMaxHeight(_itemsNumber * _itemHeight + 2 * viewportPadding)
54
+ setMaxHeight(itemsNumber * itemHeight + 2 * viewportPadding)
66
55
  virtualScrollRef.current && virtualScrollRef.current.scrollTop
67
- setTopPadding(0)
68
- }, [_itemsNumber, _itemHeight])
56
+ }, [itemsNumber, itemHeight])
69
57
 
70
- const handleScroll = (scrollTop: number) => {
71
- const _currentItemIndex = Math.min(
72
- Math.max(
73
- 1 +
74
- Math.max(Math.floor(scrollTop / _itemHeight), 0) -
75
- Math.min(
76
- Math.floor(visibleItems / 2) - (Math.floor(visibleItems / 2) - currentItemIndex) - 1,
77
- Math.floor(visibleItems / 2),
78
- ),
79
- 1,
80
- ),
81
- _itemsNumber - visibleItems + 1,
82
- )
58
+ useEffect(() => {
59
+ setBuffer(Math.floor(visibleItems / 2))
60
+ }, [visibleItems])
83
61
 
84
- virtualScrollContentRef.current &&
85
- setContentHeight(virtualScrollContentRef.current.offsetHeight)
86
- setTopPadding(Math.max(_currentItemIndex * _itemHeight - _itemHeight, 0))
87
- setBottomPadding(Math.max(maxHeight - topPadding - contentHeight, 0))
62
+ const handleScroll = (scrollTop: number) => {
63
+ const _currentItemIndex = itemHeight && Math.max(Math.ceil(scrollTop / itemHeight), 1)
88
64
  setCurrentItemIndex(_currentItemIndex)
89
65
  onScroll && onScroll(_currentItemIndex)
90
66
  }
@@ -103,23 +79,31 @@ export const CVirtualScroller = forwardRef<HTMLDivElement, CVirtualScrollerProps
103
79
  overflowY: 'auto',
104
80
  }}
105
81
  >
106
- <div style={{ height: topPadding }} />
107
- <div className="virtual-scroller-content" ref={virtualScrollContentRef}>
82
+ <div
83
+ className="virtual-scroller-content"
84
+ style={{
85
+ height: maxHeight,
86
+ }}
87
+ ref={virtualScrollContentRef}
88
+ >
108
89
  {React.Children.map(children, (child, index) => {
109
- const _index = index + 1
110
90
  if (
111
91
  React.isValidElement(child) &&
112
- _index >= Math.max(currentItemIndex - Math.floor(visibleItems / 2), 0) &&
113
- _index <= currentItemIndex + visibleItems + Math.floor(visibleItems / 2)
92
+ index + 1 > Math.max(currentItemIndex - buffer, 0) &&
93
+ index + 1 <= currentItemIndex + visibleItems + buffer
114
94
  ) {
115
95
  return React.cloneElement(child as React.ReactElement<any>, {
116
96
  className: classNames(child.props.className, {
117
97
  'virtual-scroller-item-preload':
118
- _index > currentItemIndex + visibleItems || _index < currentItemIndex,
98
+ index + 1 > currentItemIndex + visibleItems || index + 1 < currentItemIndex,
119
99
  }),
120
100
  key: index,
101
+ style: {
102
+ ...(currentItemIndex > buffer && {
103
+ transform: `translateY(${(currentItemIndex - buffer) * itemHeight}px)`,
104
+ }),
105
+ },
121
106
  ref: (node: HTMLElement) =>
122
- itemHeight === 'auto' &&
123
107
  node &&
124
108
  node.offsetHeight &&
125
109
  setItemHeight(
@@ -132,19 +116,12 @@ export const CVirtualScroller = forwardRef<HTMLDivElement, CVirtualScrollerProps
132
116
  return
133
117
  })}
134
118
  </div>
135
- <div
136
- style={{
137
- height: bottomPadding,
138
- }}
139
- />
140
119
  </div>
141
120
  )
142
121
  },
143
122
  )
144
123
 
145
124
  CVirtualScroller.propTypes = {
146
- itemHeight: PropTypes.number,
147
- itemsNumber: PropTypes.number,
148
125
  onScroll: PropTypes.func,
149
126
  visibleItems: PropTypes.number.isRequired,
150
127
  }
@@ -2,10 +2,10 @@ import React, { forwardRef, HTMLAttributes, ReactNode } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
- import { Colors, colorPropType } from '../Types'
5
+ import { CCard, CCardBody } from '../card'
6
6
 
7
- import { CCard } from '../card/CCard'
8
- import { CCardBody } from '../card/CCardBody'
7
+ import { colorPropType } from '../../props'
8
+ import type { Colors } from '../../types'
9
9
 
10
10
  export interface CWidgetStatsAProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
11
11
  /**
@@ -1,12 +1,12 @@
1
1
  import React, { forwardRef, HTMLAttributes, ReactNode } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
- import { Colors, colorPropType } from '../Types'
5
-
6
- import { CCard } from '../card/CCard'
7
- import { CCardBody } from '../card/CCardBody'
4
+ import { CCard, CCardBody } from '../card'
8
5
  import { CProgress, CProgressProps } from '../progress/CProgress'
9
6
 
7
+ import { colorPropType } from '../../props'
8
+ import type { Colors } from '../../types'
9
+
10
10
  export interface CWidgetStatsBProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
11
11
  /**
12
12
  * A string of all className you want applied to the base component.
@@ -1,12 +1,12 @@
1
1
  import React, { forwardRef, HTMLAttributes, ReactNode } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
- import { Colors, colorPropType } from '../Types'
5
-
6
- import { CCard } from '../card/CCard'
7
- import { CCardBody } from '../card/CCardBody'
4
+ import { CCard, CCardBody } from '../card'
8
5
  import { CProgress, CProgressProps } from '../progress/CProgress'
9
6
 
7
+ import { colorPropType } from '../../props'
8
+ import type { Colors } from '../../types'
9
+
10
10
  export interface CWidgetStatsCProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
11
11
  /**
12
12
  * A string of all className you want applied to the base component.
@@ -2,13 +2,12 @@ import React, { forwardRef, HTMLAttributes, ReactNode } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
- import { Colors, colorPropType } from '../Types'
6
-
7
- import { CCard } from '../card/CCard'
8
- import { CCardBody } from '../card/CCardBody'
9
- import { CCardHeader } from '../card/CCardHeader'
5
+ import { CCard, CCardBody, CCardHeader } from '../card'
10
6
  import { CCol } from '../grid/CCol'
11
7
 
8
+ import { colorPropType } from '../../props'
9
+ import type { Colors } from '../../types'
10
+
12
11
  type Value = {
13
12
  title?: string | ReactNode
14
13
  value?: number | string | ReactNode
@@ -2,8 +2,7 @@ import React, { forwardRef, HTMLAttributes, ReactNode } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
- import { CCard } from '../card/CCard'
6
- import { CCardBody } from '../card/CCardBody'
5
+ import { CCard, CCardBody } from '../card'
7
6
 
8
7
  export interface CWidgetStatsEProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
9
8
  /**
@@ -2,11 +2,10 @@ import React, { forwardRef, HTMLAttributes, ReactNode } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
- import { Colors, colorPropType } from '../Types'
5
+ import { CCard, CCardBody, CCardFooter } from '../card'
6
6
 
7
- import { CCard } from '../card/CCard'
8
- import { CCardBody } from '../card/CCardBody'
9
- import { CCardFooter } from '../card/CCardFooter'
7
+ import { colorPropType } from '../../props'
8
+ import type { Colors } from '../../types'
10
9
 
11
10
  export interface CWidgetStatsFProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
12
11
  /**
@@ -1,17 +1,6 @@
1
1
  import PropTypes from 'prop-types'
2
2
 
3
- export type Breakpoints = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl'
4
-
5
- export type Colors =
6
- | 'primary'
7
- | 'secondary'
8
- | 'success'
9
- | 'danger'
10
- | 'warning'
11
- | 'info'
12
- | 'dark'
13
- | 'light'
14
- | string
3
+ import type { Placements, Triggers } from './types'
15
4
 
16
5
  export const colorPropType = PropTypes.oneOfType([
17
6
  PropTypes.oneOf([
@@ -27,16 +16,6 @@ export const colorPropType = PropTypes.oneOfType([
27
16
  PropTypes.string,
28
17
  ])
29
18
 
30
- export type Gradients =
31
- | 'primary-gradient'
32
- | 'secondary-gradient'
33
- | 'success-gradient'
34
- | 'danger-gradient'
35
- | 'warning-gradient'
36
- | 'info-gradient'
37
- | 'dark-gradient'
38
- | 'light-gradient'
39
-
40
19
  export const gradientsPropType = PropTypes.oneOf([
41
20
  'primary-gradient',
42
21
  'secondary-gradient',
@@ -48,24 +27,6 @@ export const gradientsPropType = PropTypes.oneOf([
48
27
  'light-gradient',
49
28
  ])
50
29
 
51
- export type Placements =
52
- | 'auto'
53
- | 'auto-start'
54
- | 'auto-end'
55
- | 'top-end'
56
- | 'top'
57
- | 'top-start'
58
- | 'bottom-end'
59
- | 'bottom'
60
- | 'bottom-start'
61
- | 'right-start'
62
- | 'right'
63
- | 'right-end'
64
- | 'left-start'
65
- | 'left'
66
- | 'left-end'
67
- | undefined
68
-
69
30
  export const placementPropType = PropTypes.oneOf<Placements>([
70
31
  'auto',
71
32
  'auto-start',
@@ -84,20 +45,6 @@ export const placementPropType = PropTypes.oneOf<Placements>([
84
45
  'left-end',
85
46
  ])
86
47
 
87
- export type Shapes =
88
- | 'rounded'
89
- | 'rounded-top'
90
- | 'rounded-end'
91
- | 'rounded-bottom'
92
- | 'rounded-start'
93
- | 'rounded-circle'
94
- | 'rounded-pill'
95
- | 'rounded-0'
96
- | 'rounded-1'
97
- | 'rounded-2'
98
- | 'rounded-3'
99
- | string
100
-
101
48
  export const shapePropType = PropTypes.oneOfType([
102
49
  PropTypes.oneOf([
103
50
  'rounded',
@@ -115,24 +62,10 @@ export const shapePropType = PropTypes.oneOfType([
115
62
  PropTypes.string,
116
63
  ])
117
64
 
118
- export type TextColors =
119
- | Colors
120
- | 'white'
121
- | 'muted'
122
- | 'high-emphasis'
123
- | 'medium-emphasis'
124
- | 'disabled'
125
- | 'high-emphasis-inverse'
126
- | 'medium-emphasis-inverse'
127
- | 'disabled-inverse'
128
- | string
129
-
130
65
  export const textColorsPropType = PropTypes.oneOfType([
131
66
  colorPropType,
132
67
  PropTypes.oneOf(['white', 'muted']),
133
68
  PropTypes.string,
134
69
  ])
135
70
 
136
- export type Triggers = 'hover' | 'focus' | 'click'
137
-
138
71
  export const triggerPropType = PropTypes.oneOf<Triggers>(['hover', 'focus', 'click'])
package/src/types.ts ADDED
@@ -0,0 +1,68 @@
1
+ export type Breakpoints = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl'
2
+
3
+ export type Colors =
4
+ | 'primary'
5
+ | 'secondary'
6
+ | 'success'
7
+ | 'danger'
8
+ | 'warning'
9
+ | 'info'
10
+ | 'dark'
11
+ | 'light'
12
+ | string
13
+
14
+ export type Gradients =
15
+ | 'primary-gradient'
16
+ | 'secondary-gradient'
17
+ | 'success-gradient'
18
+ | 'danger-gradient'
19
+ | 'warning-gradient'
20
+ | 'info-gradient'
21
+ | 'dark-gradient'
22
+ | 'light-gradient'
23
+
24
+ export type Placements =
25
+ | 'auto'
26
+ | 'auto-start'
27
+ | 'auto-end'
28
+ | 'top-end'
29
+ | 'top'
30
+ | 'top-start'
31
+ | 'bottom-end'
32
+ | 'bottom'
33
+ | 'bottom-start'
34
+ | 'right-start'
35
+ | 'right'
36
+ | 'right-end'
37
+ | 'left-start'
38
+ | 'left'
39
+ | 'left-end'
40
+ | undefined
41
+
42
+ export type Shapes =
43
+ | 'rounded'
44
+ | 'rounded-top'
45
+ | 'rounded-end'
46
+ | 'rounded-bottom'
47
+ | 'rounded-start'
48
+ | 'rounded-circle'
49
+ | 'rounded-pill'
50
+ | 'rounded-0'
51
+ | 'rounded-1'
52
+ | 'rounded-2'
53
+ | 'rounded-3'
54
+ | string
55
+
56
+ export type TextColors =
57
+ | Colors
58
+ | 'white'
59
+ | 'muted'
60
+ | 'high-emphasis'
61
+ | 'medium-emphasis'
62
+ | 'disabled'
63
+ | 'high-emphasis-inverse'
64
+ | 'medium-emphasis-inverse'
65
+ | 'disabled-inverse'
66
+ | string
67
+
68
+ export type Triggers = 'hover' | 'focus' | 'click'
@@ -1,6 +1,4 @@
1
- import getNextSibling from './getNextSibling'
2
- import getPreviousSibling from './getPreviousSibling'
3
1
  import isInViewport from './isInViewport'
4
2
  import isObjectInArray from './isObjectInArray'
5
3
 
6
- export { getNextSibling, getPreviousSibling, isInViewport, isObjectInArray }
4
+ export { isInViewport, isObjectInArray }
@@ -1,18 +0,0 @@
1
- // TODO: check if component property is necessary.
2
-
3
- import React, { forwardRef, HTMLAttributes } from 'react'
4
-
5
- export const CMultiSelectCleaner = forwardRef<HTMLButtonElement, HTMLAttributes<HTMLButtonElement>>(
6
- (props, ref) => {
7
- return (
8
- <button
9
- type="button"
10
- className="form-multi-select-selection-cleaner"
11
- {...props}
12
- ref={ref}
13
- ></button>
14
- )
15
- },
16
- )
17
-
18
- CMultiSelectCleaner.displayName = 'CMultiSelectCleaner'
@@ -1,18 +0,0 @@
1
- const getNextSibling = (elem: HTMLElement, selector?: string) => {
2
- // Get the next sibling element
3
- let sibling = elem.nextElementSibling
4
-
5
- // If there's no selector, return the first sibling
6
- if (!selector) return sibling
7
-
8
- // If the sibling matches our selector, use it
9
- // If not, jump to the next sibling and continue the loop
10
- while (sibling) {
11
- if (sibling.matches(selector)) return sibling
12
- sibling = sibling.nextElementSibling
13
- }
14
-
15
- return
16
- }
17
-
18
- export default getNextSibling