@coreui/react-pro 5.24.1 → 5.25.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 (175) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/date-picker/CDatePicker.d.ts +1 -1
  3. package/dist/cjs/components/date-picker/CDatePicker.js.map +1 -1
  4. package/dist/cjs/components/date-range-picker/CDateRangePicker.js +2 -0
  5. package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
  6. package/dist/cjs/components/dropdown/CDropdown.js +1 -1
  7. package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
  8. package/dist/cjs/components/index.d.ts +1 -0
  9. package/dist/cjs/components/nav/CNavGroup.d.ts +3 -1
  10. package/dist/cjs/components/nav/CNavGroup.js +9 -5
  11. package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
  12. package/dist/cjs/components/one-time-password-input/COneTimePassword.js +3 -3
  13. package/dist/cjs/components/one-time-password-input/COneTimePassword.js.map +1 -1
  14. package/dist/cjs/components/popover/CPopover.js +14 -17
  15. package/dist/cjs/components/popover/CPopover.js.map +1 -1
  16. package/dist/cjs/components/search-button/CSearchButton.d.ts +32 -0
  17. package/dist/cjs/components/search-button/CSearchButton.js +77 -0
  18. package/dist/cjs/components/search-button/CSearchButton.js.map +1 -0
  19. package/dist/cjs/components/search-button/index.d.ts +2 -0
  20. package/dist/cjs/components/search-button/types.d.ts +10 -0
  21. package/dist/cjs/components/search-button/utils.d.ts +11 -0
  22. package/dist/cjs/components/search-button/utils.js +115 -0
  23. package/dist/cjs/components/search-button/utils.js.map +1 -0
  24. package/dist/cjs/components/sidebar/CSidebarNav.d.ts +12 -0
  25. package/dist/cjs/components/sidebar/CSidebarNav.js +7 -2
  26. package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
  27. package/dist/cjs/components/smart-table/CSmartTable.js +2 -2
  28. package/dist/cjs/components/smart-table/CSmartTable.js.map +1 -1
  29. package/dist/cjs/components/smart-table/CSmartTableInterface.d.ts +2 -2
  30. package/dist/cjs/components/time-picker/CTimePicker.d.ts +1 -1
  31. package/dist/cjs/components/time-picker/CTimePicker.js +1 -1
  32. package/dist/cjs/components/time-picker/CTimePicker.js.map +1 -1
  33. package/dist/cjs/components/tooltip/CTooltip.js +14 -17
  34. package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
  35. package/dist/cjs/components/virtual-scroller/CVirtualScroller.js +11 -8
  36. package/dist/cjs/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  37. package/dist/cjs/hooks/useDebouncedCallback.d.ts +1 -1
  38. package/dist/cjs/hooks/useDebouncedCallback.js +1 -1
  39. package/dist/cjs/hooks/useDebouncedCallback.js.map +1 -1
  40. package/dist/cjs/index.js +2 -0
  41. package/dist/cjs/index.js.map +1 -1
  42. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js +1 -1
  43. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js.map +1 -1
  44. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js +1 -1
  45. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js.map +1 -1
  46. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js +1 -1
  47. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js.map +1 -1
  48. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js +1 -1
  49. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js.map +1 -1
  50. package/dist/cjs/node_modules/ua-parser-js/dist/ua-parser.min.js +2 -2
  51. package/dist/cjs/node_modules/ua-parser-js/dist/ua-parser.min.js.map +1 -1
  52. package/dist/esm/components/date-picker/CDatePicker.d.ts +1 -1
  53. package/dist/esm/components/date-picker/CDatePicker.js.map +1 -1
  54. package/dist/esm/components/date-range-picker/CDateRangePicker.js +2 -0
  55. package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
  56. package/dist/esm/components/dropdown/CDropdown.js +1 -1
  57. package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
  58. package/dist/esm/components/index.d.ts +1 -0
  59. package/dist/esm/components/nav/CNavGroup.d.ts +3 -1
  60. package/dist/esm/components/nav/CNavGroup.js +9 -5
  61. package/dist/esm/components/nav/CNavGroup.js.map +1 -1
  62. package/dist/esm/components/one-time-password-input/COneTimePassword.js +3 -3
  63. package/dist/esm/components/one-time-password-input/COneTimePassword.js.map +1 -1
  64. package/dist/esm/components/popover/CPopover.js +14 -17
  65. package/dist/esm/components/popover/CPopover.js.map +1 -1
  66. package/dist/esm/components/search-button/CSearchButton.d.ts +32 -0
  67. package/dist/esm/components/search-button/CSearchButton.js +75 -0
  68. package/dist/esm/components/search-button/CSearchButton.js.map +1 -0
  69. package/dist/esm/components/search-button/index.d.ts +2 -0
  70. package/dist/esm/components/search-button/types.d.ts +10 -0
  71. package/dist/esm/components/search-button/utils.d.ts +11 -0
  72. package/dist/esm/components/search-button/utils.js +104 -0
  73. package/dist/esm/components/search-button/utils.js.map +1 -0
  74. package/dist/esm/components/sidebar/CSidebarNav.d.ts +12 -0
  75. package/dist/esm/components/sidebar/CSidebarNav.js +7 -2
  76. package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
  77. package/dist/esm/components/smart-table/CSmartTable.js +2 -2
  78. package/dist/esm/components/smart-table/CSmartTable.js.map +1 -1
  79. package/dist/esm/components/smart-table/CSmartTableInterface.d.ts +2 -2
  80. package/dist/esm/components/time-picker/CTimePicker.d.ts +1 -1
  81. package/dist/esm/components/time-picker/CTimePicker.js +1 -1
  82. package/dist/esm/components/time-picker/CTimePicker.js.map +1 -1
  83. package/dist/esm/components/tooltip/CTooltip.js +14 -17
  84. package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
  85. package/dist/esm/components/virtual-scroller/CVirtualScroller.js +11 -8
  86. package/dist/esm/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  87. package/dist/esm/hooks/useDebouncedCallback.d.ts +1 -1
  88. package/dist/esm/hooks/useDebouncedCallback.js +1 -1
  89. package/dist/esm/hooks/useDebouncedCallback.js.map +1 -1
  90. package/dist/esm/index.js +1 -0
  91. package/dist/esm/index.js.map +1 -1
  92. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js +1 -1
  93. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js.map +1 -1
  94. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js +1 -1
  95. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js.map +1 -1
  96. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js +1 -1
  97. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js.map +1 -1
  98. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js +1 -1
  99. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js.map +1 -1
  100. package/dist/esm/node_modules/ua-parser-js/dist/ua-parser.min.js +2 -2
  101. package/dist/esm/node_modules/ua-parser-js/dist/ua-parser.min.js.map +1 -1
  102. package/package.json +6 -4
  103. package/src/components/autocomplete/__tests__/CAutocomplete.spec.tsx +18 -16
  104. package/src/components/autocomplete/__tests__/CAutocompleteOptions.spec.tsx +37 -28
  105. package/src/components/autocomplete/__tests__/__snapshots__/CAutocomplete.spec.tsx.snap +129 -0
  106. package/src/components/autocomplete/__tests__/__snapshots__/CAutocompleteOptions.spec.tsx.snap +36 -0
  107. package/src/components/calendar/__tests__/CCalendar.spec.tsx +40 -45
  108. package/src/components/calendar/__tests__/__snapshots__/CCalendar.spec.tsx.snap +99 -75
  109. package/src/components/calendar/__tests__/utils.spec.tsx +8 -18
  110. package/src/components/date-picker/CDatePicker.tsx +12 -13
  111. package/src/components/date-picker/__tests__/CDatePicker.spec.tsx +1 -1
  112. package/src/components/date-picker/__tests__/__snapshots__/CDatePicker.spec.tsx.snap +12 -640
  113. package/src/components/date-range-picker/CDateRangePicker.tsx +2 -0
  114. package/src/components/date-range-picker/__tests__/CDateRangePicker.spec.tsx +1 -1
  115. package/src/components/date-range-picker/__tests__/__snapshots__/CDateRangePicker.spec.tsx.snap +21 -1259
  116. package/src/components/dropdown/CDropdown.tsx +1 -1
  117. package/src/components/dropdown/__tests__/CDropdown.spec.tsx +1 -1
  118. package/src/components/dropdown/__tests__/__snapshots__/CDropdown.spec.tsx.snap +2 -2
  119. package/src/components/dropdown/__tests__/__snapshots__/CDropdownMenu.spec.tsx.snap +1 -1
  120. package/src/components/form/__tests__/CFormInput.spec.tsx +17 -20
  121. package/src/components/form/__tests__/__snapshots__/CFormInput.spec.tsx.snap +12 -3
  122. package/src/components/index.ts +1 -0
  123. package/src/components/loading-button/__tests__/CLoadingButton.spec.tsx +1 -1
  124. package/src/components/loading-button/__tests__/__snapshots__/CLoadingButton.spec.tsx.snap +4 -4
  125. package/src/components/multi-select/__tests__/CMultiSelect.spec.tsx +15 -61
  126. package/src/components/multi-select/__tests__/CMultiSelectNativeSelect.spec.tsx +4 -5
  127. package/src/components/multi-select/__tests__/CMultiSelectOptions.spec.tsx +4 -4
  128. package/src/components/multi-select/__tests__/CMultiSelectSelection.spec.tsx +7 -24
  129. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelect.spec.tsx.snap +50 -20
  130. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectNativeSelect.spec.tsx.snap +0 -2
  131. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectOptions.spec.tsx.snap +6 -0
  132. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectSelection.spec.tsx.snap +11 -8
  133. package/src/components/nav/CNavGroup.tsx +11 -6
  134. package/src/components/nav/__tests__/CNavGroup.spec.tsx +29 -1
  135. package/src/components/nav/__tests__/__snapshots__/CNavGroup.spec.tsx.snap +1 -1
  136. package/src/components/offcanvas/__tests__/COffcanvas.spec.tsx +1 -0
  137. package/src/components/one-time-password-input/COneTimePassword.tsx +10 -11
  138. package/src/components/picker/__tests__/CPicker.spec.tsx +1 -1
  139. package/src/components/picker/__tests__/__snapshots__/CPicker.spec.tsx.snap +2 -16
  140. package/src/components/popover/CPopover.tsx +15 -20
  141. package/src/components/popover/__tests__/CPopover.spec.tsx +10 -4
  142. package/src/components/search-button/CSearchButton.tsx +195 -0
  143. package/src/components/search-button/__tests__/CSearchButton.spec.tsx +95 -0
  144. package/src/components/search-button/__tests__/__snapshots__/CSearchButton.spec.tsx.snap +87 -0
  145. package/src/components/search-button/index.ts +3 -0
  146. package/src/components/search-button/types.ts +10 -0
  147. package/src/components/search-button/utils.ts +140 -0
  148. package/src/components/sidebar/CSidebarNav.tsx +27 -2
  149. package/src/components/smart-table/CSmartTable.tsx +5 -4
  150. package/src/components/smart-table/CSmartTableInterface.tsx +2 -2
  151. package/src/components/smart-table/__tests__/CSmartTable.spec.tsx +3 -2
  152. package/src/components/smart-table/__tests__/__snapshots__/CSmartTable.spec.tsx.snap +7 -15
  153. package/src/components/stepper/__tests__/CStepper.spec.tsx +24 -21
  154. package/src/components/stepper/__tests__/__snapshots__/CStepper.spec.tsx.snap +295 -0
  155. package/src/components/tabs/__tests__/CTabContent.spec.tsx +1 -0
  156. package/src/components/tabs/__tests__/CTabPane.spec.tsx +1 -0
  157. package/src/components/time-picker/CTimePicker.tsx +6 -7
  158. package/src/components/time-picker/__tests__/CTimePicker.spec.tsx +10 -1
  159. package/src/components/time-picker/__tests__/__snapshots__/CTimePicker.spec.tsx.snap +599 -315
  160. package/src/components/tooltip/CTooltip.tsx +15 -20
  161. package/src/components/tooltip/__tests__/CTooltip.spec.tsx +6 -0
  162. package/src/components/virtual-scroller/CVirtualScroller.tsx +13 -14
  163. package/src/hooks/useDebouncedCallback.ts +7 -4
  164. package/dist/cjs/components/accordion/CAccordionCollapse.d.ts +0 -3
  165. package/dist/esm/components/accordion/CAccordionCollapse.d.ts +0 -3
  166. package/src/components/accordion/CAccordionCollapse.tsx +0 -20
  167. package/src/components/accordion/__tests__/CAccordionCollapse.spec.tsx +0 -10
  168. package/src/components/accordion/__tests__/__snapshots__/CAccordionCollapse.spec.tsx.snap +0 -11
  169. package/src/components/button/__tests__/__snapshots__/CButtonClose.spec.tsx.snap +0 -26
  170. package/src/components/calendar/__tests__/CCalendar.accessibility.spec.tsx +0 -595
  171. package/src/components/calendar/__tests__/CCalendar.comprehensive.spec.tsx +0 -402
  172. package/src/components/calendar/__tests__/CCalendar.edge-cases.spec.tsx +0 -416
  173. package/src/components/calendar/__tests__/CCalendar.interactions.spec.tsx +0 -593
  174. package/src/components/header/CHeaderBrand.tsx~HEAD +0 -36
  175. /package/src/components/calendar/__tests__/{test-setup.ts → setup.ts} +0 -0
@@ -226,7 +226,7 @@ export const CDropdown: PolymorphicRefForwardingComponent<'div', CDropdownProps>
226
226
  popperConfig,
227
227
  portal = false,
228
228
  reference = 'toggle',
229
- variant = 'btn-group',
229
+ variant = 'dropdown',
230
230
  visible = false,
231
231
  ...rest
232
232
  },
@@ -89,7 +89,7 @@ test('CDropdown opens on toggle click and closes on clicking outside', async ()
89
89
 
90
90
  // Click outside the dropdown to close it
91
91
  const externalArea = screen.getByTestId('external-area')
92
- fireEvent.mouseUp(externalArea)
92
+ fireEvent.click(externalArea)
93
93
 
94
94
  // Wait for the dropdown menu to be hidden
95
95
  await waitFor(() => {
@@ -13,7 +13,7 @@ exports[`CDropdown customize 1`] = `
13
13
  exports[`CDropdown example 1`] = `
14
14
  <div>
15
15
  <div
16
- class="btn-group"
16
+ class="dropdown"
17
17
  >
18
18
  <button
19
19
  aria-expanded="false"
@@ -68,7 +68,7 @@ exports[`CDropdown example 1`] = `
68
68
  exports[`loads and displays CDropdown component 1`] = `
69
69
  <div>
70
70
  <div
71
- class="btn-group"
71
+ class="dropdown"
72
72
  >
73
73
  Test
74
74
  </div>
@@ -3,7 +3,7 @@
3
3
  exports[`CDropdownMenu customize 1`] = `
4
4
  <div>
5
5
  <div
6
- class="btn-group"
6
+ class="dropdown"
7
7
  >
8
8
  <div
9
9
  class="dropdown-menu show bazinga"
@@ -8,11 +8,18 @@ test('loads and displays CFormInput component', async () => {
8
8
  expect(container).toMatchSnapshot()
9
9
  })
10
10
 
11
- test('CFormInput customize', async () => {
11
+ test('CFormInput customize one', async () => {
12
+ const { container } = render(<CFormInput />)
13
+ expect(container).toMatchSnapshot()
14
+ expect(container.firstChild).toHaveClass('form-control')
15
+ })
16
+
17
+ test('CFormInput customize two', async () => {
12
18
  const { container } = render(
13
19
  <CFormInput
14
20
  className="bazinga"
15
21
  disabled={true}
22
+ invalid={true}
16
23
  plainText={true}
17
24
  readOnly={true}
18
25
  size="lg"
@@ -22,24 +29,14 @@ test('CFormInput customize', async () => {
22
29
  />
23
30
  )
24
31
  expect(container).toMatchSnapshot()
25
- expect(container.firstChild).toHaveClass('bazinga')
26
- expect(container.firstChild).toHaveClass('form-control-plaintext')
27
- expect(container.firstChild).toHaveClass('form-control-color')
28
32
  expect(container.firstChild).toHaveClass('form-control-lg')
29
- })
30
-
31
- test('CFormInput change input', async () => {
32
- jest.useFakeTimers()
33
- const onChange = jest.fn()
34
- render(<CFormInput onChange={onChange} />)
35
- expect(onChange).toHaveBeenCalledTimes(0)
36
- const input = document.querySelector('input')
37
- if (input !== null) {
38
- fireEvent.change(input, { target: { value: 'bazinga' } })
39
- }
40
- expect(onChange).toHaveBeenCalledTimes(1)
41
- if (input !== null) {
42
- fireEvent.change(input, { target: { value: '2' } })
43
- }
44
- expect(onChange).toHaveBeenCalledTimes(2)
33
+ expect(container.firstChild).toHaveClass('form-control-color')
34
+ expect(container.firstChild).toHaveClass('is-invalid')
35
+ expect(container.firstChild).toHaveClass('is-valid')
36
+ expect(container.firstChild).toHaveClass('form-control-plaintext')
37
+ expect(container.firstChild).toHaveClass('bazinga')
38
+ expect(container.firstChild).toHaveAttribute('value', '#888888')
39
+ expect(container.firstChild).toHaveAttribute('type', 'color')
40
+ expect(container.firstChild).toHaveAttribute('disabled', '')
41
+ expect(container.firstChild).toHaveAttribute('readonly', '')
45
42
  })
@@ -1,13 +1,22 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`CFormInput customize 1`] = `
3
+ exports[`CFormInput customize one 1`] = `
4
4
  <div>
5
5
  <input
6
- class="form-control-plaintext form-control-lg form-control-color bazinga"
6
+ class="form-control"
7
+ type="text"
8
+ />
9
+ </div>
10
+ `;
11
+
12
+ exports[`CFormInput customize two 1`] = `
13
+ <div>
14
+ <input
15
+ class="form-control-plaintext form-control-lg form-control-color is-invalid is-valid bazinga"
7
16
  disabled=""
8
17
  readonly=""
9
18
  type="color"
10
- value="value"
19
+ value="#888888"
11
20
  />
12
21
  </div>
13
22
  `;
@@ -41,6 +41,7 @@ export * from './progress'
41
41
  export * from './popover'
42
42
  export * from './range-slider'
43
43
  export * from './rating'
44
+ export * from './search-button'
44
45
  export * from './smart-table'
45
46
  export * from './smart-pagination'
46
47
  export * from './sidebar'
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react'
2
2
  import { render, fireEvent } from '@testing-library/react'
3
- import '@testing-library/jest-dom/extend-expect'
3
+ import '@testing-library/jest-dom'
4
4
  import { CLoadingButton } from '../index'
5
5
 
6
6
  test('loads and displays CLoadingButton component', async () => {
@@ -3,12 +3,12 @@
3
3
  exports[`CLoadingButton customize 1`] = `
4
4
  <div>
5
5
  <button
6
- class="btn btn-primary btn-loading is-loading bazinga disabled"
6
+ class="btn btn-loading is-loading bazinga disabled"
7
7
  disabled=""
8
8
  type="button"
9
9
  >
10
10
  <div
11
- class="spinner-grow text-undefined spinner-grow-sm btn-loading-spinner"
11
+ class="spinner-grow spinner-grow-sm btn-loading-spinner"
12
12
  role="status"
13
13
  >
14
14
  <span
@@ -25,11 +25,11 @@ exports[`CLoadingButton customize 1`] = `
25
25
  exports[`loads and displays CLoadingButton component 1`] = `
26
26
  <div>
27
27
  <button
28
- class="btn btn-primary btn-loading"
28
+ class="btn btn-loading"
29
29
  type="button"
30
30
  >
31
31
  <div
32
- class="spinner-border text-undefined spinner-border-sm btn-loading-spinner"
32
+ class="spinner-border spinner-border-sm btn-loading-spinner"
33
33
  role="status"
34
34
  >
35
35
  <span
@@ -1,25 +1,25 @@
1
1
  import * as React from 'react'
2
2
  import { render, fireEvent } from '@testing-library/react'
3
- import '@testing-library/jest-dom/extend-expect'
3
+ import '@testing-library/jest-dom'
4
4
  import { CMultiSelect } from '../index'
5
5
 
6
6
  const options = [
7
7
  {
8
8
  value: 0,
9
- text: 'Angular',
9
+ label: 'Angular',
10
10
  },
11
11
  {
12
12
  value: 1,
13
- text: 'Bootstrap',
13
+ label: 'Bootstrap',
14
14
  selected: true,
15
15
  },
16
16
  {
17
17
  value: 2,
18
- text: 'React.js',
18
+ label: 'React.js',
19
19
  },
20
20
  {
21
21
  value: 3,
22
- text: 'Vue.js',
22
+ label: 'Vue.js',
23
23
  selected: true,
24
24
  },
25
25
  {
@@ -27,15 +27,15 @@ const options = [
27
27
  options: [
28
28
  {
29
29
  value: 4,
30
- text: 'Django',
30
+ label: 'Django',
31
31
  },
32
32
  {
33
33
  value: 5,
34
- text: 'Laravel',
34
+ label: 'Laravel',
35
35
  },
36
36
  {
37
37
  value: 6,
38
- text: 'Node.js',
38
+ label: 'Node.js',
39
39
  disabled: true,
40
40
  selected: true,
41
41
  },
@@ -83,59 +83,13 @@ test('CMultiSelect customize', async () => {
83
83
  expect(container.lastChild).toHaveClass('show')
84
84
  expect(container.lastChild).toHaveClass('bazinga')
85
85
 
86
- if (container.lastChild === null) {
87
- expect(true).toBe(false)
88
- } else {
89
- expect(container.lastChild.firstChild).toHaveClass('form-multi-select-toggler')
90
- if (container.lastChild.firstChild === null) {
91
- expect(true).toBe(false)
92
- } else {
93
- expect(container.lastChild.firstChild.firstChild).toHaveClass(
94
- 'form-multi-select-selection-tags',
95
- )
96
- if (container.lastChild.firstChild.firstChild === null) {
97
- expect(true).toBe(false)
98
- } else {
99
- expect(container.lastChild.firstChild.firstChild.firstChild).toHaveClass(
100
- 'form-multi-select-tag',
101
- )
102
- expect(container.lastChild.firstChild.firstChild.firstChild).toHaveTextContent('Bootstrap')
103
- }
104
- }
105
- expect(container.lastChild.lastChild).toHaveClass('form-multi-select-dropdown')
106
- if (container.lastChild.lastChild === null) {
107
- expect(true).toBe(false)
108
- } else {
109
- expect(container.lastChild.lastChild.firstChild).toHaveClass('form-multi-select-all')
110
- expect(container.lastChild.lastChild.firstChild).toHaveAttribute('type', 'button')
111
- expect(container.lastChild.lastChild.firstChild).toHaveTextContent('selectAllLabel')
112
- expect(container.lastChild.lastChild.lastChild).toHaveClass('form-multi-select-options')
113
- expect(container.lastChild.lastChild.lastChild).toHaveAttribute(
114
- 'style',
115
- 'max-height: 150px; overflow: scroll;',
116
- )
117
- if (container.lastChild.lastChild.lastChild === null) {
118
- expect(true).toBe(false)
119
- } else {
120
- expect(container.lastChild.lastChild.lastChild.firstChild).toHaveClass(
121
- 'form-multi-select-option',
122
- )
123
- expect(container.lastChild.lastChild.lastChild.firstChild).toHaveClass(
124
- 'form-multi-select-option-with-checkbox',
125
- )
126
- expect(container.lastChild.lastChild.lastChild.firstChild).toHaveTextContent('Angular')
127
- expect(container.lastChild.lastChild.lastChild.lastChild).toHaveClass(
128
- 'form-multi-select-option',
129
- )
130
- expect(container.lastChild.lastChild.lastChild.lastChild).toHaveClass(
131
- 'form-multi-select-option-with-checkbox',
132
- )
133
- expect(container.lastChild.lastChild.lastChild.lastChild).toHaveClass('form-multi-selected')
134
- expect(container.lastChild.lastChild.lastChild.lastChild).toHaveClass('disabled')
135
- expect(container.lastChild.lastChild.lastChild.lastChild).toHaveTextContent('Node.js')
136
- }
137
- }
138
- }
86
+ expect(container.querySelector('.form-multi-select-tag')).toBeInTheDocument()
87
+ expect(container.querySelector('.form-multi-select-tag')).toHaveTextContent('Bootstrap')
88
+ expect(container.querySelector('.form-multi-select-dropdown')).toBeInTheDocument()
89
+ expect(container.querySelector('.form-multi-select-all')).toHaveTextContent('selectAllLabel')
90
+ expect(container.querySelector('.form-multi-select-options')).toBeInTheDocument()
91
+ const firstOption = container.querySelector('.form-multi-select-option')
92
+ expect(firstOption).toHaveClass('form-multi-select-option-with-checkbox')
139
93
  })
140
94
 
141
95
  test('CMultiSelect fire events', async () => {
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react'
2
2
  import { render } from '@testing-library/react'
3
- import '@testing-library/jest-dom/extend-expect'
3
+ import '@testing-library/jest-dom'
4
4
  import { CMultiSelectNativeSelect } from '../CMultiSelectNativeSelect'
5
5
  import { Option } from '../types'
6
6
 
@@ -12,19 +12,18 @@ test('loads and displays CMultiSelectNativeSelect component', async () => {
12
12
  test('CMultiSelectNativeSelect customize', async () => {
13
13
  const options: Option[] = [
14
14
  {
15
- text: 'text1',
15
+ label: 'text1',
16
16
  value: 'value1',
17
17
  },
18
18
  {
19
- text: 'text2',
19
+ label: 'text2',
20
20
  value: 'value2',
21
21
  disabled: true,
22
- label: 'label2',
23
22
  order: 4,
24
23
  selected: true,
25
24
  },
26
25
  {
27
- text: 'text3',
26
+ label: 'text3',
28
27
  value: 'value3',
29
28
  order: 3,
30
29
  },
@@ -1,18 +1,18 @@
1
1
  import * as React from 'react'
2
2
  import { render, fireEvent } from '@testing-library/react'
3
- import '@testing-library/jest-dom/extend-expect'
3
+ import '@testing-library/jest-dom'
4
4
  import { CMultiSelectOptions } from '../CMultiSelectOptions'
5
5
  import { Option } from '../types'
6
6
 
7
7
  const options: Option[] = [
8
8
  {
9
- text: 'text1',
9
+ label: 'text1',
10
10
  value: 'value1',
11
11
  selected: true,
12
12
  disabled: true,
13
13
  },
14
14
  {
15
- text: 'text3',
15
+ label: 'text3',
16
16
  value: 'value3',
17
17
  },
18
18
  ]
@@ -59,7 +59,7 @@ test('CMultiSelectOptions customize', async () => {
59
59
 
60
60
  test('CMultiSelectOptions handle on click', async () => {
61
61
  const onClick = jest.fn()
62
- render(<CMultiSelectOptions options={options} handleOptionOnClick={onClick} selected={[]} />)
62
+ render(<CMultiSelectOptions options={options} onOptionOnClick={onClick} selected={[]} />)
63
63
  expect(onClick).toHaveBeenCalledTimes(0)
64
64
  const option = document.querySelector('.form-multi-select-option')
65
65
  if (option !== null) {
@@ -1,15 +1,15 @@
1
1
  import * as React from 'react'
2
2
  import { render, fireEvent } from '@testing-library/react'
3
- import '@testing-library/jest-dom/extend-expect'
3
+ import '@testing-library/jest-dom'
4
4
  import { CMultiSelectSelection } from '../CMultiSelectSelection'
5
5
 
6
6
  const selected = [
7
7
  {
8
- text: 'text1',
8
+ label: 'text1',
9
9
  value: 'value1',
10
10
  },
11
11
  {
12
- text: 'text2',
12
+ label: 'text2',
13
13
  value: 'value2',
14
14
  disabled: true,
15
15
  },
@@ -32,27 +32,10 @@ test('CMultiSelectSelection customize tags', async () => {
32
32
  )
33
33
  expect(container).toMatchSnapshot()
34
34
  expect(container.firstChild).toHaveClass('form-multi-select-selection')
35
- if (container.firstChild === null) {
36
- expect(true).toBe(false)
37
- } else {
38
- expect(container.firstChild.firstChild).toHaveClass('form-multi-select-tag')
39
- expect(container.firstChild.lastChild).toHaveClass('form-multi-select-tag')
40
- if (container.firstChild.firstChild === null) {
41
- expect(true).toBe(false)
42
- } else {
43
- expect(container.firstChild.firstChild.lastChild).toHaveClass('form-multi-select-tag-delete')
44
- expect(container.firstChild.firstChild.lastChild).toHaveAttribute('aria-label', 'Close')
45
- if (container.firstChild.firstChild.lastChild === null) {
46
- expect(true).toBe(false)
47
- } else {
48
- expect(container.firstChild.firstChild.lastChild.firstChild).toHaveAttribute(
49
- 'aria-hidden',
50
- 'true',
51
- )
52
- expect(container.firstChild.firstChild.lastChild.firstChild).toHaveTextContent('×')
53
- }
54
- }
55
- }
35
+ const tags = container.querySelectorAll('.form-multi-select-tag')
36
+ expect(tags.length).toBeGreaterThanOrEqual(2)
37
+ const deleteBtn = container.querySelector('.form-multi-select-tag-delete')
38
+ expect(deleteBtn).toBeInTheDocument()
56
39
  })
57
40
 
58
41
  test('CMultiSelectSelection customize counter', async () => {
@@ -3,8 +3,9 @@
3
3
  exports[`CMultiSelect customize 1`] = `
4
4
  <div>
5
5
  <select
6
- class="multi-select-new"
6
+ id=":r1:"
7
7
  multiple=""
8
+ name=":r1:"
8
9
  style="display: none;"
9
10
  tabindex="-1"
10
11
  >
@@ -30,7 +31,10 @@ exports[`CMultiSelect customize 1`] = `
30
31
  class="form-multi-select show bazinga"
31
32
  >
32
33
  <div
33
- class="form-multi-select-toggler"
34
+ aria-expanded="true"
35
+ aria-haspopup="listbox"
36
+ class="form-multi-select-input-group"
37
+ role="combobox"
34
38
  >
35
39
  <span
36
40
  class="form-multi-select-selection form-multi-select-selection-tags"
@@ -42,13 +46,8 @@ exports[`CMultiSelect customize 1`] = `
42
46
  <button
43
47
  aria-label="Close"
44
48
  class="form-multi-select-tag-delete"
45
- >
46
- <span
47
- aria-hidden="true"
48
- >
49
- ×
50
- </span>
51
- </button>
49
+ type="button"
50
+ />
52
51
  </span>
53
52
  <span
54
53
  class="form-multi-select-tag"
@@ -57,13 +56,8 @@ exports[`CMultiSelect customize 1`] = `
57
56
  <button
58
57
  aria-label="Close"
59
58
  class="form-multi-select-tag-delete"
60
- >
61
- <span
62
- aria-hidden="true"
63
- >
64
- ×
65
- </span>
66
- </button>
59
+ type="button"
60
+ />
67
61
  </span>
68
62
  <span
69
63
  class="form-multi-select-tag"
@@ -73,6 +67,8 @@ exports[`CMultiSelect customize 1`] = `
73
67
  <input
74
68
  autocomplete="off"
75
69
  class="form-multi-select-search"
70
+ id="search:r1:"
71
+ name="search:r1:"
76
72
  size="2"
77
73
  type="text"
78
74
  />
@@ -81,18 +77,22 @@ exports[`CMultiSelect customize 1`] = `
81
77
  class="form-multi-select-buttons"
82
78
  >
83
79
  <button
80
+ aria-label="Clear all selections"
84
81
  class="form-multi-select-cleaner"
85
82
  type="button"
86
83
  />
87
84
  <button
85
+ aria-label="Toggle visibility of options menu"
88
86
  class="form-multi-select-indicator"
89
87
  type="button"
90
88
  />
91
89
  </div>
92
90
  </div>
93
91
  <div
92
+ aria-multiselectable="true"
94
93
  class="form-multi-select-dropdown"
95
- role="menu"
94
+ id="multiselect-listbox-:r1:"
95
+ role="listbox"
96
96
  style="position: absolute; left: 0px; top: 0px; margin: 0px;"
97
97
  >
98
98
  <button
@@ -106,25 +106,37 @@ exports[`CMultiSelect customize 1`] = `
106
106
  style="max-height: 150px; overflow: scroll;"
107
107
  >
108
108
  <div
109
+ aria-disabled="false"
110
+ aria-selected="false"
109
111
  class="form-multi-select-option form-multi-select-option-with-checkbox"
112
+ role="option"
110
113
  tabindex="0"
111
114
  >
112
115
  Angular
113
116
  </div>
114
117
  <div
118
+ aria-disabled="false"
119
+ aria-selected="true"
115
120
  class="form-multi-select-option form-multi-select-option-with-checkbox form-multi-selected"
121
+ role="option"
116
122
  tabindex="0"
117
123
  >
118
124
  Bootstrap
119
125
  </div>
120
126
  <div
127
+ aria-disabled="false"
128
+ aria-selected="false"
121
129
  class="form-multi-select-option form-multi-select-option-with-checkbox"
130
+ role="option"
122
131
  tabindex="0"
123
132
  >
124
133
  React.js
125
134
  </div>
126
135
  <div
136
+ aria-disabled="false"
137
+ aria-selected="true"
127
138
  class="form-multi-select-option form-multi-select-option-with-checkbox form-multi-selected"
139
+ role="option"
128
140
  tabindex="0"
129
141
  >
130
142
  Vue.js
@@ -135,19 +147,28 @@ exports[`CMultiSelect customize 1`] = `
135
147
  backend
136
148
  </div>
137
149
  <div
150
+ aria-disabled="false"
151
+ aria-selected="false"
138
152
  class="form-multi-select-option form-multi-select-option-with-checkbox"
153
+ role="option"
139
154
  tabindex="0"
140
155
  >
141
156
  Django
142
157
  </div>
143
158
  <div
159
+ aria-disabled="false"
160
+ aria-selected="false"
144
161
  class="form-multi-select-option form-multi-select-option-with-checkbox"
162
+ role="option"
145
163
  tabindex="0"
146
164
  >
147
165
  Laravel
148
166
  </div>
149
167
  <div
168
+ aria-disabled="true"
169
+ aria-selected="true"
150
170
  class="form-multi-select-option form-multi-select-option-with-checkbox form-multi-selected disabled"
171
+ role="option"
151
172
  tabindex="0"
152
173
  >
153
174
  Node.js
@@ -161,8 +182,9 @@ exports[`CMultiSelect customize 1`] = `
161
182
  exports[`loads and displays CMultiSelect component 1`] = `
162
183
  <div>
163
184
  <select
164
- class="multi-select-new"
185
+ id=":r0:"
165
186
  multiple=""
187
+ name=":r0:"
166
188
  style="display: none;"
167
189
  tabindex="-1"
168
190
  />
@@ -171,7 +193,10 @@ exports[`loads and displays CMultiSelect component 1`] = `
171
193
  class="form-multi-select"
172
194
  >
173
195
  <div
174
- class="form-multi-select-toggler"
196
+ aria-expanded="false"
197
+ aria-haspopup="listbox"
198
+ class="form-multi-select-input-group"
199
+ role="combobox"
175
200
  >
176
201
  <span
177
202
  class="form-multi-select-selection form-multi-select-selection-tags"
@@ -179,6 +204,8 @@ exports[`loads and displays CMultiSelect component 1`] = `
179
204
  <input
180
205
  autocomplete="off"
181
206
  class="form-multi-select-search"
207
+ id="search:r0:"
208
+ name="search:r0:"
182
209
  placeholder="Select..."
183
210
  type="text"
184
211
  />
@@ -187,14 +214,17 @@ exports[`loads and displays CMultiSelect component 1`] = `
187
214
  class="form-multi-select-buttons"
188
215
  >
189
216
  <button
217
+ aria-label="Toggle visibility of options menu"
190
218
  class="form-multi-select-indicator"
191
219
  type="button"
192
220
  />
193
221
  </div>
194
222
  </div>
195
223
  <div
224
+ aria-multiselectable="true"
196
225
  class="form-multi-select-dropdown"
197
- role="menu"
226
+ id="multiselect-listbox-:r0:"
227
+ role="listbox"
198
228
  >
199
229
  <button
200
230
  class="form-multi-select-all"
@@ -3,7 +3,6 @@
3
3
  exports[`CMultiSelectNativeSelect customize 1`] = `
4
4
  <div>
5
5
  <select
6
- class="multi-select-new"
7
6
  multiple=""
8
7
  style="display: none;"
9
8
  tabindex="-1"
@@ -31,7 +30,6 @@ exports[`CMultiSelectNativeSelect customize 1`] = `
31
30
  exports[`loads and displays CMultiSelectNativeSelect component 1`] = `
32
31
  <div>
33
32
  <select
34
- class="multi-select-new"
35
33
  style="display: none;"
36
34
  tabindex="-1"
37
35
  />
@@ -7,13 +7,19 @@ exports[`CMultiSelectOptions customize 1`] = `
7
7
  style="max-height: 200; overflow: scroll;"
8
8
  >
9
9
  <div
10
+ aria-disabled="true"
11
+ aria-selected="false"
10
12
  class="form-multi-select-option form-multi-select-option-with-checkbox disabled"
13
+ role="option"
11
14
  tabindex="0"
12
15
  >
13
16
  text1
14
17
  </div>
15
18
  <div
19
+ aria-disabled="false"
20
+ aria-selected="false"
16
21
  class="form-multi-select-option form-multi-select-option-with-checkbox"
22
+ role="option"
17
23
  tabindex="0"
18
24
  >
19
25
  text3