@coreui/react 5.0.0-alpha.1 → 5.0.0-alpha.3

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 (44) hide show
  1. package/README.md +1 -1
  2. package/dist/components/avatar/CAvatar.d.ts +1 -1
  3. package/dist/components/badge/CBadge.d.ts +1 -1
  4. package/dist/components/card/CCard.d.ts +1 -1
  5. package/dist/components/dropdown/CDropdown.d.ts +1 -0
  6. package/dist/components/dropdown/CDropdownToggle.d.ts +6 -0
  7. package/dist/index.es.js +45 -19
  8. package/dist/index.es.js.map +1 -1
  9. package/dist/index.js +45 -19
  10. package/dist/index.js.map +1 -1
  11. package/dist/types.d.ts +1 -1
  12. package/package.json +1 -1
  13. package/src/components/avatar/CAvatar.tsx +1 -1
  14. package/src/components/badge/CBadge.tsx +1 -1
  15. package/src/components/button/CButton.tsx +1 -1
  16. package/src/components/button/__tests__/__snapshots__/CButton.spec.tsx.snap +0 -1
  17. package/src/components/card/CCard.tsx +1 -1
  18. package/src/components/carousel/__tests__/__snapshots__/CCarousel.spec.tsx.snap +9 -5
  19. package/src/components/dropdown/CDropdown.tsx +43 -1
  20. package/src/components/dropdown/CDropdownToggle.tsx +12 -5
  21. package/src/components/nav/__tests__/__snapshots__/CNav.spec.tsx.snap +5 -4
  22. package/src/components/navbar/__tests__/CNavbar.spec.tsx +1 -1
  23. package/src/components/navbar/__tests__/__snapshots__/CNavbar.spec.tsx.snap +2 -1
  24. package/src/components/progress/__tests__/__snapshots__/CProgress.spec.tsx.snap +10 -5
  25. package/src/components/progress/__tests__/__snapshots__/CProgressBar.spec.tsx.snap +0 -8
  26. package/src/components/widgets/CWidgetStatsA.tsx +1 -1
  27. package/src/components/widgets/CWidgetStatsB.tsx +2 -2
  28. package/src/components/widgets/CWidgetStatsC.tsx +4 -12
  29. package/src/components/widgets/CWidgetStatsD.tsx +1 -1
  30. package/src/components/widgets/CWidgetStatsE.tsx +1 -1
  31. package/src/components/widgets/CWidgetStatsF.tsx +1 -1
  32. package/src/components/widgets/__tests__/CWidgetStatsA.spec.tsx +1 -1
  33. package/src/components/widgets/__tests__/CWidgetStatsB.spec.tsx +1 -1
  34. package/src/components/widgets/__tests__/CWidgetStatsC.spec.tsx +1 -1
  35. package/src/components/widgets/__tests__/CWidgetStatsD.spec.tsx +1 -1
  36. package/src/components/widgets/__tests__/CWidgetStatsE.spec.tsx +1 -1
  37. package/src/components/widgets/__tests__/CWidgetStatsF.spec.tsx +1 -1
  38. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsA.spec.tsx.snap +1 -1
  39. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsB.spec.tsx.snap +12 -7
  40. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsC.spec.tsx.snap +14 -9
  41. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsD.spec.tsx.snap +2 -2
  42. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsE.spec.tsx.snap +1 -1
  43. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsF.spec.tsx.snap +2 -2
  44. package/src/types.ts +14 -7
package/dist/types.d.ts CHANGED
@@ -2,5 +2,5 @@ export type Breakpoints = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
2
2
  export type Colors = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | string;
3
3
  export type Placements = 'auto' | 'auto-start' | 'auto-end' | 'top-end' | 'top' | 'top-start' | 'bottom-end' | 'bottom' | 'bottom-start' | 'right-start' | 'right' | 'right-end' | 'left-start' | 'left' | 'left-end' | undefined;
4
4
  export type Shapes = 'rounded' | 'rounded-top' | 'rounded-end' | 'rounded-bottom' | 'rounded-start' | 'rounded-circle' | 'rounded-pill' | 'rounded-0' | 'rounded-1' | 'rounded-2' | 'rounded-3' | string;
5
- export type TextColors = Colors | 'white' | 'muted' | 'high-emphasis' | 'medium-emphasis' | 'disabled' | 'high-emphasis-inverse' | 'medium-emphasis-inverse' | 'disabled-inverse' | string;
5
+ export type TextColors = Colors | 'primary-emphasis' | 'secondary-emphasis' | 'success-emphasis' | 'danger-emphasis' | 'warning-emphasis' | 'info-emphasis' | 'light-emphasis' | 'body' | 'body-emphasis' | 'body-secondary' | 'body-tertiary' | 'black' | 'black-50' | 'white' | 'white-50' | string;
6
6
  export type Triggers = 'hover' | 'focus' | 'click';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coreui/react",
3
- "version": "5.0.0-alpha.1",
3
+ "version": "5.0.0-alpha.3",
4
4
  "description": "UI Components Library for React.js",
5
5
  "keywords": [
6
6
  "react",
@@ -39,7 +39,7 @@ export interface CAvatarProps extends HTMLAttributes<HTMLDivElement> {
39
39
  /**
40
40
  * Sets the text color of the component to one of CoreUI’s themed colors.
41
41
  *
42
- * @type 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | 'white' | 'muted' | 'high-emphasis' | 'medium-emphasis' | 'disabled' | 'high-emphasis-inverse' | 'medium-emphasis-inverse' | 'disabled-inverse' | string
42
+ * @type 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | 'primary-emphasis' | 'secondary-emphasis' | 'success-emphasis' | 'danger-emphasis' | 'warning-emphasis' | 'info-emphasis' | 'light-emphasis' | 'body' | 'body-emphasis' | 'body-secondary' | 'body-tertiary' | 'black' | 'black-50' | 'white' | 'white-50' | string
43
43
  */
44
44
  textColor?: TextColors
45
45
  }
@@ -37,7 +37,7 @@ export interface CBadgeProps extends HTMLAttributes<HTMLDivElement | HTMLSpanEle
37
37
  /**
38
38
  * Sets the text color of the component to one of CoreUI’s themed colors.
39
39
  *
40
- * @type 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | 'white' | 'muted' | 'high-emphasis' | 'medium-emphasis' | 'disabled' | 'high-emphasis-inverse' | 'medium-emphasis-inverse' | 'disabled-inverse' | string
40
+ * @type 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | 'primary-emphasis' | 'secondary-emphasis' | 'success-emphasis' | 'danger-emphasis' | 'warning-emphasis' | 'info-emphasis' | 'light-emphasis' | 'body' | 'body-emphasis' | 'body-secondary' | 'body-tertiary' | 'black' | 'black-50' | 'white' | 'white-50' | string
41
41
  */
42
42
  textColor?: TextColors
43
43
  }
@@ -77,7 +77,7 @@ export const CButton = forwardRef<HTMLButtonElement | HTMLAnchorElement, CButton
77
77
  return (
78
78
  <CLink
79
79
  component={rest.href ? 'a' : component}
80
- type={type}
80
+ {...(!rest.href && { type: type })}
81
81
  className={classNames(
82
82
  'btn',
83
83
  variant ? `btn-${variant}-${color}` : `btn-${color}`,
@@ -19,7 +19,6 @@ exports[`CButton customize witch href 1`] = `
19
19
  <a
20
20
  class="btn btn-primary"
21
21
  href="/bazinga"
22
- type="button"
23
22
  >
24
23
  Test
25
24
  </a>
@@ -19,7 +19,7 @@ export interface CCardProps extends HTMLAttributes<HTMLDivElement> {
19
19
  /**
20
20
  * Sets the text color context of the component to one of CoreUI’s themed colors.
21
21
  *
22
- * @type 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | 'white' | 'muted' | 'high-emphasis' | 'medium-emphasis' | 'disabled' | 'high-emphasis-inverse' | 'medium-emphasis-inverse' | 'disabled-inverse' | string
22
+ * @type 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | 'primary-emphasis' | 'secondary-emphasis' | 'success-emphasis' | 'danger-emphasis' | 'warning-emphasis' | 'info-emphasis' | 'light-emphasis' | 'body' | 'body-emphasis' | 'body-secondary' | 'body-tertiary' | 'black' | 'black-50' | 'white' | 'white-50' | string
23
23
  */
24
24
  textColor?: string
25
25
  }
@@ -5,22 +5,26 @@ exports[`loads and displays CCarousel component 1`] = `
5
5
  <div
6
6
  class="carousel slide"
7
7
  >
8
- <ol
8
+ <div
9
9
  class="carousel-indicators"
10
10
  >
11
- <li
11
+ <button
12
+ aria-current="true"
13
+ aria-label="Slide 1"
12
14
  class="active"
13
15
  data-coreui-target=""
14
16
  />
15
- <li
17
+ <button
18
+ aria-label="Slide 2"
16
19
  class=""
17
20
  data-coreui-target=""
18
21
  />
19
- <li
22
+ <button
23
+ aria-label="Slide 3"
20
24
  class=""
21
25
  data-coreui-target=""
22
26
  />
23
- </ol>
27
+ </div>
24
28
  <div
25
29
  class="carousel-inner"
26
30
  >
@@ -107,6 +107,28 @@ interface ContextProps extends CDropdownProps {
107
107
  portal: boolean
108
108
  }
109
109
 
110
+ export const getNextActiveElement = (
111
+ list: HTMLElement[],
112
+ activeElement: HTMLElement,
113
+ shouldGetNext: boolean,
114
+ isCycleAllowed: boolean,
115
+ ) => {
116
+ const listLength = list.length
117
+ let index = list.indexOf(activeElement)
118
+
119
+ if (index === -1) {
120
+ return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]
121
+ }
122
+
123
+ index += shouldGetNext ? 1 : -1
124
+
125
+ if (isCycleAllowed) {
126
+ index = (index + listLength) % listLength
127
+ }
128
+
129
+ return list[Math.max(0, Math.min(index, listLength - 1))]
130
+ }
131
+
110
132
  const getPlacement = (
111
133
  placement: Placements,
112
134
  direction: CDropdownProps['direction'],
@@ -207,9 +229,12 @@ export const CDropdown = forwardRef<HTMLDivElement | HTMLLIElement, CDropdownPro
207
229
 
208
230
  useEffect(() => {
209
231
  if (_visible && dropdownToggleRef.current && dropdownMenuRef.current) {
232
+ dropdownToggleRef.current.focus()
210
233
  popper && initPopper(dropdownToggleRef.current, dropdownMenuRef.current, popperConfig)
211
234
  window.addEventListener('mouseup', handleMouseUp)
212
235
  window.addEventListener('keyup', handleKeyup)
236
+ dropdownToggleRef.current.addEventListener('keydown', handleKeydown)
237
+ dropdownMenuRef.current.addEventListener('keydown', handleKeydown)
213
238
  onShow && onShow()
214
239
  }
215
240
 
@@ -217,10 +242,28 @@ export const CDropdown = forwardRef<HTMLDivElement | HTMLLIElement, CDropdownPro
217
242
  popper && destroyPopper()
218
243
  window.removeEventListener('mouseup', handleMouseUp)
219
244
  window.removeEventListener('keyup', handleKeyup)
245
+ dropdownToggleRef.current &&
246
+ dropdownToggleRef.current.removeEventListener('keydown', handleKeydown)
247
+ dropdownMenuRef.current &&
248
+ dropdownMenuRef.current.removeEventListener('keydown', handleKeydown)
220
249
  onHide && onHide()
221
250
  }
222
251
  }, [_visible])
223
252
 
253
+ const handleKeydown = (event: KeyboardEvent) => {
254
+ if (_visible && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
255
+ const target = event.target as HTMLElement
256
+ event.preventDefault()
257
+ const items = [].concat(
258
+ ...Element.prototype.querySelectorAll.call(
259
+ dropdownMenuRef.current,
260
+ '.dropdown-item:not(.disabled):not(:disabled)',
261
+ ),
262
+ )
263
+ getNextActiveElement(items, target, event.key === 'ArrowDown', true).focus()
264
+ }
265
+ }
266
+
224
267
  const handleKeyup = (event: KeyboardEvent) => {
225
268
  if (autoClose === false) {
226
269
  return
@@ -263,7 +306,6 @@ export const CDropdown = forwardRef<HTMLDivElement | HTMLLIElement, CDropdownPro
263
306
  'dropup dropup-center': direction === 'dropup-center',
264
307
  [`${direction}`]:
265
308
  direction && direction !== 'center' && direction !== 'dropup-center',
266
- show: _visible,
267
309
  },
268
310
  className,
269
311
  )}
@@ -18,6 +18,12 @@ export interface CDropdownToggleProps extends Omit<CButtonProps, 'type'> {
18
18
  * Create a custom toggler which accepts any content.
19
19
  */
20
20
  custom?: boolean
21
+ /**
22
+ * If a dropdown `variant` is set to `nav-item` then render the toggler as a link instead of a button.
23
+ *
24
+ * @since v5.0.0-alpha.3
25
+ */
26
+ navLink?: boolean
21
27
  /**
22
28
  * Similarly, create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of `.dropdown-toggle-split` className for proper spacing around the dropdown caret.
23
29
  */
@@ -35,6 +41,7 @@ export const CDropdownToggle: FC<CDropdownToggleProps> = ({
35
41
  caret = true,
36
42
  custom,
37
43
  className,
44
+ navLink = true,
38
45
  split,
39
46
  trigger = 'click',
40
47
  ...rest
@@ -57,9 +64,10 @@ export const CDropdownToggle: FC<CDropdownToggleProps> = ({
57
64
  const togglerProps = {
58
65
  className: classNames(
59
66
  {
67
+ 'nav-link': variant === 'nav-item' && navLink,
60
68
  'dropdown-toggle': caret,
61
69
  'dropdown-toggle-split': split,
62
- 'nav-link': variant === 'nav-item',
70
+ show: visible,
63
71
  },
64
72
  className,
65
73
  ),
@@ -67,7 +75,6 @@ export const CDropdownToggle: FC<CDropdownToggleProps> = ({
67
75
  ...(!rest.disabled && { ...triggers }),
68
76
  }
69
77
 
70
- // We use any because Toggler can be `a` as well as `button`.
71
78
  const Toggler = () => {
72
79
  if (custom && React.isValidElement(children)) {
73
80
  return (
@@ -81,16 +88,16 @@ export const CDropdownToggle: FC<CDropdownToggleProps> = ({
81
88
  )
82
89
  }
83
90
 
84
- if (variant === 'nav-item') {
91
+ if (variant === 'nav-item' && navLink) {
85
92
  return (
86
- <a href="#" {...togglerProps} ref={dropdownToggleRef}>
93
+ <a href="#" {...togglerProps} role="button" ref={dropdownToggleRef}>
87
94
  {children}
88
95
  </a>
89
96
  )
90
97
  }
91
98
 
92
99
  return (
93
- <CButton type="button" {...togglerProps} tabIndex={0} {...rest} ref={dropdownToggleRef}>
100
+ <CButton {...togglerProps} tabIndex={0} {...rest} ref={dropdownToggleRef}>
94
101
  {children}
95
102
  {split && <span className="visually-hidden">Toggle Dropdown</span>}
96
103
  </CButton>
@@ -41,13 +41,14 @@ exports[`CNav example 1`] = `
41
41
  <li
42
42
  class="nav-item dropdown"
43
43
  >
44
- <a
44
+ <button
45
45
  aria-expanded="false"
46
- class="dropdown-toggle nav-link"
47
- href="#"
46
+ class="btn btn-primary dropdown-toggle"
47
+ tabindex="0"
48
+ type="button"
48
49
  >
49
50
  A
50
- </a>
51
+ </button>
51
52
  <ul
52
53
  aria-hidden="true"
53
54
  class="dropdown-menu"
@@ -26,9 +26,9 @@ test('CNavbar customize', async () => {
26
26
  expect(container.firstChild).toHaveClass('bazinga')
27
27
  expect(container.firstChild).toHaveClass('navbar')
28
28
  expect(container.firstChild).toHaveClass('bg-warning')
29
- expect(container.firstChild).toHaveClass('navbar-dark')
30
29
  expect(container.firstChild).toHaveClass('navbar-expand-lg')
31
30
  expect(container.firstChild).toHaveClass('fixed-bottom')
31
+ expect(container.firstChild).toHaveAttribute('data-coreui-theme', 'dark')
32
32
  const arrLength = container.getElementsByClassName('container-xl').length
33
33
  expect(arrLength).toBe(1)
34
34
  })
@@ -17,7 +17,8 @@ exports[`CNavbar customize - container and expand are boolean 1`] = `
17
17
  exports[`CNavbar customize 1`] = `
18
18
  <div>
19
19
  <h3
20
- class="navbar bg-warning navbar-dark navbar-expand-lg fixed-bottom bazinga"
20
+ class="navbar bg-warning navbar-expand-lg fixed-bottom bazinga"
21
+ data-coreui-theme="dark"
21
22
  >
22
23
  <div
23
24
  class="container-xl"
@@ -3,15 +3,15 @@
3
3
  exports[`CProgress customize 1`] = `
4
4
  <div>
5
5
  <div
6
+ aria-valuemax="100"
7
+ aria-valuemin="0"
8
+ aria-valuenow="50"
6
9
  class="progress bazinga"
10
+ role="progressbar"
7
11
  style="height: 100px;"
8
12
  >
9
13
  <div
10
- aria-valuemax="100"
11
- aria-valuemin="0"
12
- aria-valuenow="50"
13
14
  class="progress-bar bg-warning"
14
- role="progressbar"
15
15
  style="width: 50%;"
16
16
  >
17
17
  Test
@@ -25,7 +25,12 @@ exports[`loads and displays CProgress component 1`] = `
25
25
  <div
26
26
  class="progress"
27
27
  >
28
- Test
28
+ <div
29
+ class="progress-bar bg-warning"
30
+ style="width: 0%;"
31
+ >
32
+ Test
33
+ </div>
29
34
  </div>
30
35
  </div>
31
36
  `;
@@ -3,11 +3,7 @@
3
3
  exports[`CProgressBar customize 1`] = `
4
4
  <div>
5
5
  <div
6
- aria-valuemax="100"
7
- aria-valuemin="0"
8
- aria-valuenow="50"
9
6
  class="progress-bar bg-warning progress-bar-striped progress-bar-animated bazinga"
10
- role="progressbar"
11
7
  style="width: 50%;"
12
8
  >
13
9
  Test
@@ -18,11 +14,7 @@ exports[`CProgressBar customize 1`] = `
18
14
  exports[`loads and displays CProgressBar component 1`] = `
19
15
  <div>
20
16
  <div
21
- aria-valuemax="100"
22
- aria-valuemin="0"
23
- aria-valuenow="0"
24
17
  class="progress-bar bg-warning"
25
- role="progressbar"
26
18
  style="width: 0%;"
27
19
  >
28
20
  Test
@@ -41,7 +41,7 @@ export const CWidgetStatsA = forwardRef<HTMLDivElement, CWidgetStatsAProps>(
41
41
  return (
42
42
  <CCard
43
43
  className={classNames(
44
- { [`bg-${color}`]: color, 'text-high-emphasis-inverse': color },
44
+ { [`bg-${color}`]: color, 'text-white': color },
45
45
  className,
46
46
  )}
47
47
  {...rest}
@@ -48,7 +48,7 @@ export const CWidgetStatsB = forwardRef<HTMLDivElement, CWidgetStatsBProps>(
48
48
  <CCard
49
49
  className={className}
50
50
  color={color}
51
- {...(inverse && { textColor: 'high-emphasis-inverse' })}
51
+ {...(inverse && { textColor: 'white' })}
52
52
  {...rest}
53
53
  ref={ref}
54
54
  >
@@ -57,7 +57,7 @@ export const CWidgetStatsB = forwardRef<HTMLDivElement, CWidgetStatsBProps>(
57
57
  {title && <div>{title}</div>}
58
58
  <CProgress className="my-2" height={4} {...(inverse && { white: true })} {...progress} />
59
59
  {text && (
60
- <small className={inverse ? 'text-medium-emphasis-inverse' : 'text-medium-emphasis'}>
60
+ <small className={inverse ? 'text-white text-opacity-75' : 'text-body-secondary'}>
61
61
  {text}
62
62
  </small>
63
63
  )}
@@ -48,23 +48,15 @@ export const CWidgetStatsC = forwardRef<HTMLDivElement, CWidgetStatsCProps>(
48
48
  <CCard
49
49
  className={className}
50
50
  color={color}
51
- {...(inverse && { textColor: 'high-emphasis-inverse' })}
51
+ {...(inverse && { textColor: 'white' })}
52
52
  {...rest}
53
53
  ref={ref}
54
54
  >
55
55
  <CCardBody>
56
- {icon && (
57
- <div className={`text-medium-emphasis${inverse ? '-inverse' : ''} text-end mb-4`}>
58
- {icon}
59
- </div>
60
- )}
61
- {value && (
62
- <div className={`text-high-emphasis${inverse ? '-inverse' : ''} fs-4 fw-semibold`}>
63
- {value}
64
- </div>
65
- )}
56
+ {icon && <div className="text-end mb-4">{icon}</div>}
57
+ {value && <div className="fs-4 fw-semibold">{value}</div>}
66
58
  {title && (
67
- <div className={inverse ? 'text-medium-emphasis-inverse' : 'text-medium-emphasis'}>
59
+ <div className={inverse ? 'text-white text-opacity-75' : 'text-body-secondary'}>
68
60
  {title}
69
61
  </div>
70
62
  )}
@@ -61,7 +61,7 @@ export const CWidgetStatsD = forwardRef<HTMLDivElement, CWidgetStatsDProps>(
61
61
  {index % 2 !== 0 && <div className="vr"></div>}
62
62
  <CCol>
63
63
  <div className="fs-5 fw-semibold">{value.value}</div>
64
- <div className="text-uppercase text-medium-emphasis small">{value.title}</div>
64
+ <div className="text-uppercase text-body-secondary small">{value.title}</div>
65
65
  </CCol>
66
66
  </React.Fragment>
67
67
  )
@@ -29,7 +29,7 @@ export const CWidgetStatsE = forwardRef<HTMLDivElement, CWidgetStatsEProps>(
29
29
  <CCard className={classNames(className)} {...rest} ref={ref}>
30
30
  <CCardBody className="text-center">
31
31
  {title && (
32
- <div className="text-medium-emphasis small text-uppercase fw-semibold">{title}</div>
32
+ <div className="text-body-secondary small text-uppercase fw-semibold">{title}</div>
33
33
  )}
34
34
  {value && <div className="fs-6 fw-semibold py-3">{value}</div>}
35
35
  {chart}
@@ -47,7 +47,7 @@ export const CWidgetStatsF = forwardRef<HTMLDivElement, CWidgetStatsFProps>(
47
47
  <div className={`me-3 text-white bg-${color} ${padding ? 'p-3' : 'p-4'}`}>{icon}</div>
48
48
  <div>
49
49
  <div className={`fs-6 fw-semibold text-${color}`}>{value}</div>
50
- <div className="text-medium-emphasis text-uppercase fw-semibold small">{title}</div>
50
+ <div className="text-body-secondary text-uppercase fw-semibold small">{title}</div>
51
51
  </div>
52
52
  </CCardBody>
53
53
  {footer && <CCardFooter>{footer}</CCardFooter>}
@@ -23,7 +23,7 @@ test('CWidgetStatsA customize', async () => {
23
23
  )
24
24
  expect(container).toMatchSnapshot()
25
25
  expect(container.firstChild).toHaveClass('bg-info')
26
- expect(container.firstChild).toHaveClass('text-high-emphasis-inverse')
26
+ expect(container.firstChild).toHaveClass('text-white')
27
27
  expect(container.firstChild).toHaveClass('bazinga')
28
28
  if (container.firstChild === null) {
29
29
  expect(true).toBe(false)
@@ -32,7 +32,7 @@ test('CWidgetStatsB customize', async () => {
32
32
  expect(container.firstChild.firstChild.firstChild).toHaveClass('fs-4')
33
33
  expect(container.firstChild.firstChild.firstChild).toHaveClass('fw-semibold')
34
34
  expect(container.firstChild.firstChild.firstChild).toHaveTextContent('value')
35
- expect(container.firstChild.firstChild.lastChild).toHaveClass('text-medium-emphasis-inverse')
35
+ expect(container.firstChild.firstChild.lastChild).toHaveClass('text-white')
36
36
  expect(container.firstChild.firstChild.lastChild).toHaveTextContent('text')
37
37
  }
38
38
  })
@@ -29,7 +29,7 @@ test('CWidgetStatsC customize', async () => {
29
29
  expect(true).toBe(false)
30
30
  } else {
31
31
  expect(container.firstChild.firstChild).toHaveClass('card-body')
32
- expect(container.firstChild.firstChild.firstChild).toHaveClass('text-medium-emphasis-inverse')
32
+ expect(container.firstChild.firstChild.firstChild).toHaveClass('text-white')
33
33
  expect(container.firstChild.firstChild.firstChild).toHaveClass('text-end')
34
34
  expect(container.firstChild.firstChild.firstChild).toHaveClass('mb-4')
35
35
  expect(container.firstChild.firstChild.firstChild).toHaveTextContent('icon')
@@ -42,7 +42,7 @@ test('CWidgetStatsD customize', async () => {
42
42
  expect(container.firstChild.lastChild.firstChild.firstChild).toHaveTextContent('89K')
43
43
  expect(container.firstChild.lastChild.firstChild.lastChild).toHaveClass('text-uppercase')
44
44
  expect(container.firstChild.lastChild.firstChild.lastChild).toHaveClass(
45
- 'text-medium-emphasis',
45
+ 'text-body-secondary',
46
46
  )
47
47
  expect(container.firstChild.lastChild.firstChild.lastChild).toHaveClass('small')
48
48
  expect(container.firstChild.lastChild.firstChild.lastChild).toHaveTextContent('friends')
@@ -21,7 +21,7 @@ test('CWidgetStatsE customize', async () => {
21
21
  expect(true).toBe(false)
22
22
  } else {
23
23
  expect(container.firstChild.firstChild).toHaveClass('card-body')
24
- expect(container.firstChild.firstChild.firstChild).toHaveClass('text-medium-emphasis')
24
+ expect(container.firstChild.firstChild.firstChild).toHaveClass('text-body-secondary')
25
25
  expect(container.firstChild.firstChild.firstChild).toHaveClass('small')
26
26
  expect(container.firstChild.firstChild.firstChild).toHaveClass('text-uppercase')
27
27
  expect(container.firstChild.firstChild.firstChild).toHaveClass('fw-semibold')
@@ -47,7 +47,7 @@ test('CWidgetStatsF customize', async () => {
47
47
  expect(container.firstChild.firstChild.lastChild.firstChild).toHaveClass('text-info')
48
48
  expect(container.firstChild.firstChild.lastChild.firstChild).toHaveTextContent('value')
49
49
  expect(container.firstChild.firstChild.lastChild.lastChild).toHaveClass(
50
- 'text-medium-emphasis',
50
+ 'text-body-secondary',
51
51
  )
52
52
  expect(container.firstChild.firstChild.lastChild.lastChild).toHaveClass('text-uppercase')
53
53
  expect(container.firstChild.firstChild.lastChild.lastChild).toHaveClass('fw-semibold ')
@@ -3,7 +3,7 @@
3
3
  exports[`CWidgetStatsA customize 1`] = `
4
4
  <div>
5
5
  <div
6
- class="card bg-info text-high-emphasis-inverse bazinga"
6
+ class="card bg-info text-white bazinga"
7
7
  >
8
8
  <div
9
9
  class="card-body pb-0 d-flex justify-content-between align-items-start"
@@ -3,7 +3,7 @@
3
3
  exports[`CWidgetStatsB customize 1`] = `
4
4
  <div>
5
5
  <div
6
- class="card bg-info text-high-emphasis-inverse bazinga"
6
+ class="card bg-info text-white bazinga"
7
7
  >
8
8
  <div
9
9
  class="card-body"
@@ -17,20 +17,20 @@ exports[`CWidgetStatsB customize 1`] = `
17
17
  title
18
18
  </div>
19
19
  <div
20
+ aria-valuemax="100"
21
+ aria-valuemin="0"
22
+ aria-valuenow="75"
20
23
  class="progress progress-white my-2"
24
+ role="progressbar"
21
25
  style="height: 4px;"
22
26
  >
23
27
  <div
24
- aria-valuemax="100"
25
- aria-valuemin="0"
26
- aria-valuenow="75"
27
28
  class="progress-bar bg-warning"
28
- role="progressbar"
29
29
  style="width: 75%;"
30
30
  />
31
31
  </div>
32
32
  <small
33
- class="text-medium-emphasis-inverse"
33
+ class="text-white text-opacity-75"
34
34
  >
35
35
  text
36
36
  </small>
@@ -50,7 +50,12 @@ exports[`loads and displays CWidgetStatsB component 1`] = `
50
50
  <div
51
51
  class="progress my-2"
52
52
  style="height: 4px;"
53
- />
53
+ >
54
+ <div
55
+ class="progress-bar"
56
+ style="width: 0%;"
57
+ />
58
+ </div>
54
59
  </div>
55
60
  </div>
56
61
  </div>
@@ -3,36 +3,36 @@
3
3
  exports[`CWidgetStatsC customize 1`] = `
4
4
  <div>
5
5
  <div
6
- class="card bg-info text-high-emphasis-inverse bazinga"
6
+ class="card bg-info text-white bazinga"
7
7
  >
8
8
  <div
9
9
  class="card-body"
10
10
  >
11
11
  <div
12
- class="text-medium-emphasis-inverse text-end mb-4"
12
+ class="text-end mb-4"
13
13
  >
14
14
  icon
15
15
  </div>
16
16
  <div
17
- class="text-high-emphasis-inverse fs-4 fw-semibold"
17
+ class="fs-4 fw-semibold"
18
18
  >
19
19
  value
20
20
  </div>
21
21
  <div
22
- class="text-medium-emphasis-inverse"
22
+ class="text-white text-opacity-75"
23
23
  >
24
24
  title
25
25
  </div>
26
26
  <div
27
+ aria-valuemax="100"
28
+ aria-valuemin="0"
29
+ aria-valuenow="75"
27
30
  class="progress progress-white mt-3 mb-0"
31
+ role="progressbar"
28
32
  style="height: 4px;"
29
33
  >
30
34
  <div
31
- aria-valuemax="100"
32
- aria-valuemin="0"
33
- aria-valuenow="75"
34
35
  class="progress-bar bg-warning"
35
- role="progressbar"
36
36
  style="width: 75%;"
37
37
  />
38
38
  </div>
@@ -52,7 +52,12 @@ exports[`loads and displays CWidgetStatsC component 1`] = `
52
52
  <div
53
53
  class="progress mt-3 mb-0"
54
54
  style="height: 4px;"
55
- />
55
+ >
56
+ <div
57
+ class="progress-bar"
58
+ style="width: 0%;"
59
+ />
60
+ </div>
56
61
  </div>
57
62
  </div>
58
63
  </div>
@@ -20,7 +20,7 @@ exports[`CWidgetStatsD customize 1`] = `
20
20
  89K
21
21
  </div>
22
22
  <div
23
- class="text-uppercase text-medium-emphasis small"
23
+ class="text-uppercase text-body-secondary small"
24
24
  >
25
25
  friends
26
26
  </div>
@@ -37,7 +37,7 @@ exports[`CWidgetStatsD customize 1`] = `
37
37
  459
38
38
  </div>
39
39
  <div
40
- class="text-uppercase text-medium-emphasis small"
40
+ class="text-uppercase text-body-secondary small"
41
41
  >
42
42
  feeds
43
43
  </div>
@@ -9,7 +9,7 @@ exports[`CWidgetStatsE customize 1`] = `
9
9
  class="card-body text-center"
10
10
  >
11
11
  <div
12
- class="text-medium-emphasis small text-uppercase fw-semibold"
12
+ class="text-body-secondary small text-uppercase fw-semibold"
13
13
  >
14
14
  title
15
15
  </div>