@coreui/react-pro 4.11.3 → 4.12.0-beta.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 (95) hide show
  1. package/README.md +1 -1
  2. package/dist/components/accordion/index.d.ts +1 -1
  3. package/dist/components/calendar/CCalendar.d.ts +4 -4
  4. package/dist/components/date-range-picker/CDateRangePicker copy.d.ts +114 -0
  5. package/dist/components/date-range-picker/CDateRangePicker.d.ts +49 -1
  6. package/dist/components/multi-select/CMultiSelect.d.ts +34 -3
  7. package/dist/components/multi-select/CMultiSelectNativeSelect.d.ts +4 -5
  8. package/dist/components/multi-select/CMultiSelectOptions.d.ts +4 -2
  9. package/dist/components/multi-select/CMultiSelectSelection.d.ts +1 -0
  10. package/dist/components/multi-select/types.d.ts +7 -3
  11. package/dist/components/multi-select/utils.d.ts +5 -5
  12. package/dist/components/multi-select-new/CMultiSelect.d.ts +133 -0
  13. package/dist/components/multi-select-new/CMultiSelectNativeSelect.d.ts +7 -0
  14. package/dist/components/multi-select-new/CMultiSelectNew.d.ts +121 -0
  15. package/dist/components/multi-select-new/CMultiSelectOptions.d.ts +16 -0
  16. package/dist/components/multi-select-new/CMultiSelectSelection.d.ts +11 -0
  17. package/dist/components/multi-select-new/index.d.ts +2 -0
  18. package/dist/components/multi-select-new/types.d.ts +15 -0
  19. package/dist/components/multi-select-new/utils.d.ts +11 -0
  20. package/dist/components/picker/CPicker copy.d.ts +82 -0
  21. package/dist/components/picker/CPicker.d.ts +14 -56
  22. package/dist/components/picker copy/CPicker.d.ts +82 -0
  23. package/dist/components/popover/CPopover.d.ts +1 -1
  24. package/dist/components/time-picker/CTimePicker.d.ts +41 -1
  25. package/dist/components/tooltip/CTooltip.d.ts +3 -3
  26. package/dist/hooks/index.d.ts +2 -1
  27. package/dist/hooks/useColorModes.d.ts +6 -0
  28. package/dist/index.d.ts +1 -0
  29. package/dist/index.es.js +2385 -2403
  30. package/dist/index.es.js.map +1 -1
  31. package/dist/index.js +2386 -2401
  32. package/dist/index.js.map +1 -1
  33. package/dist/props.d.ts +1 -1
  34. package/dist/utils/index.d.ts +2 -1
  35. package/dist/utils/isRTL.d.ts +2 -0
  36. package/package.json +15 -15
  37. package/src/components/accordion/index.ts +1 -7
  38. package/src/components/calendar/CCalendar.tsx +49 -64
  39. package/src/components/calendar/__tests__/__snapshots__/CCalendar.spec.tsx.snap +601 -555
  40. package/src/components/calendar/utils.ts +1 -1
  41. package/src/components/date-picker/__tests__/__snapshots__/CDatePicker.spec.tsx.snap +599 -561
  42. package/src/components/date-range-picker/CDateRangePicker.tsx +208 -107
  43. package/src/components/date-range-picker/__tests__/__snapshots__/CDateRangePicker.spec.tsx.snap +1197 -1121
  44. package/src/components/date-range-picker/utils.ts +2 -2
  45. package/src/components/dropdown/CDropdownMenu.tsx +5 -4
  46. package/src/components/dropdown/__tests__/__snapshots__/CDropdown.spec.tsx.snap +1 -1
  47. package/src/components/element-cover/CElementCover.tsx +1 -0
  48. package/src/components/form/CFormSelect.tsx +3 -1
  49. package/src/components/modal/CModal.tsx +2 -0
  50. package/src/components/multi-select/CMultiSelect.tsx +200 -79
  51. package/src/components/multi-select/CMultiSelectNativeSelect.tsx +34 -24
  52. package/src/components/multi-select/CMultiSelectOptions.tsx +25 -23
  53. package/src/components/multi-select/CMultiSelectSelection.tsx +36 -7
  54. package/src/components/multi-select/__tests__/CMultiSelect.spec.tsx +25 -14
  55. package/src/components/multi-select/__tests__/CMultiSelectNativeSelect.spec.tsx +1 -1
  56. package/src/components/multi-select/__tests__/CMultiSelectOptions.spec.tsx +4 -4
  57. package/src/components/multi-select/__tests__/CMultiSelectSelection.spec.tsx +0 -1
  58. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelect.spec.tsx.snap +136 -30
  59. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectNativeSelect.spec.tsx.snap +2 -0
  60. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectOptions.spec.tsx.snap +3 -1
  61. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectSelection.spec.tsx.snap +2 -2
  62. package/src/components/multi-select/types.ts +9 -4
  63. package/src/components/multi-select/utils.ts +56 -39
  64. package/src/components/picker/CPicker.tsx +113 -138
  65. package/src/components/popover/CPopover.tsx +61 -26
  66. package/src/components/popover/__tests__/__snapshots__/CPopover.spec.tsx.snap +2 -1
  67. package/src/components/progress/CProgress.tsx +1 -0
  68. package/src/components/sidebar/CSidebar.tsx +2 -2
  69. package/src/components/smart-table/CSmartTable.tsx +22 -10
  70. package/src/components/smart-table/CSmartTableBody.tsx +3 -5
  71. package/src/components/smart-table/CSmartTableHead.tsx +5 -6
  72. package/src/components/smart-table/__tests__/CSmartTable.spec.tsx +1 -1
  73. package/src/components/smart-table/__tests__/__snapshots__/CSmartTable.spec.tsx.snap +580 -0
  74. package/src/components/spinner/CSpinner.tsx +4 -2
  75. package/src/components/spinner/__tests__/__snapshots__/CSpinner.spec.tsx.snap +2 -2
  76. package/src/components/table/CTable.tsx +2 -1
  77. package/src/components/time-picker/CTimePicker.tsx +182 -82
  78. package/src/components/time-picker/__tests__/__snapshots__/CTimePicker.spec.tsx.snap +1078 -0
  79. package/src/components/tooltip/CTooltip.tsx +65 -31
  80. package/src/components/tooltip/__tests__/CTooltip.spec.tsx +1 -1
  81. package/src/components/virtual-scroller/CVirtualScroller.tsx +0 -1
  82. package/src/hooks/index.ts +2 -1
  83. package/src/hooks/useColorModes.ts +55 -0
  84. package/src/hooks/useForkedRef.ts +1 -1
  85. package/src/index.ts +1 -0
  86. package/src/props.ts +4 -1
  87. package/src/utils/index.ts +2 -1
  88. package/src/utils/isRTL.ts +13 -0
  89. package/src/components/multi-select/__tests__/CMultiSelectCleaner.spec.tsx +0 -15
  90. package/src/components/multi-select/__tests__/CMultiSelectSearchInput.spec.tsx +0 -17
  91. package/src/components/multi-select/__tests__/CMultiSelectSelectAllButton.spec.tsx +0 -21
  92. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectCleaner.spec.tsx.snap +0 -19
  93. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectSearchInput.spec.tsx.snap +0 -20
  94. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectSelectAllButton.spec.tsx.snap +0 -24
  95. package/src/components/smart-table/CSmartTableCleaner.tsx +0 -37
package/dist/props.d.ts CHANGED
@@ -5,4 +5,4 @@ export declare const gradientsPropType: PropTypes.Requireable<string>;
5
5
  export declare const placementPropType: PropTypes.Requireable<Placements>;
6
6
  export declare const shapePropType: PropTypes.Requireable<string>;
7
7
  export declare const textColorsPropType: PropTypes.Requireable<string>;
8
- export declare const triggerPropType: PropTypes.Requireable<Triggers>;
8
+ export declare const triggerPropType: PropTypes.Requireable<NonNullable<Triggers | NonNullable<Triggers>[] | null | undefined>>;
@@ -1,3 +1,4 @@
1
1
  import isInViewport from './isInViewport';
2
2
  import isObjectInArray from './isObjectInArray';
3
- export { isInViewport, isObjectInArray };
3
+ import isRTL from './isRTL';
4
+ export { isInViewport, isObjectInArray, isRTL };
@@ -0,0 +1,2 @@
1
+ declare const isRTL: (element?: HTMLElement | HTMLDivElement | null) => boolean;
2
+ export default isRTL;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coreui/react-pro",
3
- "version": "4.11.3",
3
+ "version": "4.12.0-beta.0",
4
4
  "description": "UI Components Library for React.js",
5
5
  "keywords": [
6
6
  "react",
@@ -37,34 +37,34 @@
37
37
  "test:update": "jest --coverage --updateSnapshot"
38
38
  },
39
39
  "devDependencies": {
40
- "@coreui/icons": "^3.0.0",
40
+ "@coreui/icons": "^3.0.1",
41
41
  "@coreui/icons-react": "^2.1.0",
42
- "@popperjs/core": "^2.11.6",
43
- "@rollup/plugin-commonjs": "^24.0.1",
44
- "@rollup/plugin-node-resolve": "^15.0.1",
45
- "@rollup/plugin-typescript": "^11.0.0",
42
+ "@popperjs/core": "^2.11.8",
43
+ "@rollup/plugin-commonjs": "^25.0.1",
44
+ "@rollup/plugin-node-resolve": "^15.1.0",
45
+ "@rollup/plugin-typescript": "^11.1.1",
46
46
  "@testing-library/jest-dom": "^5.16.5",
47
47
  "@testing-library/react": "^14.0.0",
48
- "@types/react": "18.0.28",
49
- "@types/react-dom": "^18.0.11",
50
- "@types/react-transition-group": "^4.4.5",
48
+ "@types/react": "18.2.11",
49
+ "@types/react-dom": "^18.2.4",
50
+ "@types/react-transition-group": "^4.4.6",
51
51
  "classnames": "^2.3.2",
52
- "date-fns": "^2.29.3",
52
+ "date-fns": "^2.30.0",
53
53
  "jest": "^29.5.0",
54
54
  "jest-environment-jsdom": "^29.5.0",
55
55
  "prop-types": "^15.8.1",
56
56
  "react": "^18.2.0",
57
- "react-device-detect": "^2.2.2",
57
+ "react-device-detect": "^2.2.3",
58
58
  "react-dom": "^18.2.0",
59
59
  "react-popper": "^2.3.0",
60
60
  "react-transition-group": "^4.4.5",
61
- "rollup": "^3.19.1",
62
- "tslib": "^2.5.0",
63
- "ts-jest": "^29.0.5",
61
+ "rollup": "^3.25.0",
62
+ "tslib": "^2.5.3",
63
+ "ts-jest": "^29.1.0",
64
64
  "typescript": "^4.9.5"
65
65
  },
66
66
  "peerDependencies": {
67
- "@coreui/coreui-pro": ">=4.5.0",
67
+ "@coreui/coreui-pro": ">=4.6.0-beta.0",
68
68
  "react": ">=17",
69
69
  "react-dom": ">=17"
70
70
  }
@@ -4,10 +4,4 @@ import { CAccordionButton } from './CAccordionButton'
4
4
  import { CAccordionHeader } from './CAccordionHeader'
5
5
  import { CAccordionItem } from './CAccordionItem'
6
6
 
7
- export {
8
- CAccordion,
9
- CAccordionBody,
10
- CAccordionButton,
11
- CAccordionHeader,
12
- CAccordionItem,
13
- }
7
+ export { CAccordion, CAccordionBody, CAccordionButton, CAccordionHeader, CAccordionItem }
@@ -133,14 +133,14 @@ export interface CCalendarProps {
133
133
  * @default 2
134
134
  */
135
135
  weekdayFormat?: number | 'long' | 'narrow' | 'short' | ((date: Date) => string | number)
136
- /**
137
- * Callback fired when the user hovers over the calendar cell.
138
- */
139
- onCalendarCellHover?: (date: Date | null) => void
140
136
  /**
141
137
  * Callback fired when the calendar date changed.
142
138
  */
143
139
  onCalendarDateChange?: (date: Date) => void
140
+ /**
141
+ * Callback fired when the user hovers over the calendar cell.
142
+ */
143
+ onDayHover?: (date: Date | null) => void
144
144
  /**
145
145
  * Callback fired when the start date changed.
146
146
  */
@@ -170,10 +170,10 @@ const Calendar = (props: {
170
170
  locale: string
171
171
  maxDate: Date | null
172
172
  minDate: Date | null
173
- onCellClick: (date: Date) => void
174
- onCellKeyDown: (event: KeyboardEvent<HTMLDivElement>, date: Date) => void
175
- onCellMouseEnter: (date: Date) => void
176
- onCellMouseLeave: () => void
173
+ onDayClick: (date: Date) => void
174
+ onDayKeyDown: (event: KeyboardEvent<HTMLDivElement>, date: Date) => void
175
+ onDayMouseEnter: (date: Date) => void
176
+ onDayMouseLeave: () => void
177
177
  onMonthClick: (month: number) => void
178
178
  onMonthKeyDown: (event: KeyboardEvent<HTMLDivElement>, month: number) => void
179
179
  onYearClick: (date: Date) => void
@@ -196,10 +196,10 @@ const Calendar = (props: {
196
196
  locale,
197
197
  maxDate,
198
198
  minDate,
199
- onCellClick,
200
- onCellKeyDown,
201
- onCellMouseEnter,
202
- onCellMouseLeave,
199
+ onDayClick,
200
+ onDayKeyDown,
201
+ onDayMouseEnter,
202
+ onDayMouseLeave,
203
203
  onMonthClick,
204
204
  onMonthKeyDown,
205
205
  onYearClick,
@@ -241,9 +241,9 @@ const Calendar = (props: {
241
241
  <div className="calendar-header-cell-inner">
242
242
  {typeof weekdayFormat === 'function'
243
243
  ? weekdayFormat(date)
244
- : typeof weekdayFormat === 'string'
244
+ : (typeof weekdayFormat === 'string'
245
245
  ? date.toLocaleDateString(locale, { weekday: weekdayFormat })
246
- : date.toLocaleDateString(locale, { weekday: 'long' }).slice(0, weekdayFormat)}
246
+ : date.toLocaleDateString(locale, { weekday: 'long' }).slice(0, weekdayFormat))}
247
247
  </div>
248
248
  </th>
249
249
  ))}
@@ -283,16 +283,16 @@ const Calendar = (props: {
283
283
  }
284
284
  title={date.toLocaleDateString(locale)}
285
285
  {...((month === 'current' || selectAdjacementDays) && {
286
- onBlur: () => onCellMouseLeave(),
287
- onClick: () => onCellClick(date),
288
- onFocus: () => onCellMouseEnter(date),
289
- onKeyDown: (event) => onCellKeyDown(event, date),
290
- onMouseEnter: () => onCellMouseEnter(date),
291
- onMouseLeave: () => onCellMouseLeave(),
286
+ onBlur: () => onDayMouseLeave(),
287
+ onClick: () => onDayClick(date),
288
+ onFocus: () => onDayMouseEnter(date),
289
+ onKeyDown: (event) => onDayKeyDown(event, date),
290
+ onMouseEnter: () => onDayMouseEnter(date),
291
+ onMouseLeave: () => onDayMouseLeave(),
292
292
  })}
293
293
  {...(month !== 'current' &&
294
294
  !selectAdjacementDays && {
295
- onMouseEnter: () => onCellMouseLeave(),
295
+ onMouseEnter: () => onDayMouseLeave(),
296
296
  })}
297
297
  >
298
298
  <div className="calendar-cell-inner">
@@ -408,19 +408,13 @@ const Navigation = (props: {
408
408
  {navigation && (
409
409
  <div className="calendar-nav-prev">
410
410
  <CButton color="transparent" size="sm" onClick={() => onNavigationClick('prev', true)}>
411
- {navPrevDoubleIcon ? (
412
- navPrevDoubleIcon
413
- ) : (
411
+ {navPrevDoubleIcon ?? (
414
412
  <span className="calendar-nav-icon calendar-nav-icon-double-prev" />
415
413
  )}
416
414
  </CButton>
417
415
  {view === 'days' && (
418
416
  <CButton color="transparent" size="sm" onClick={() => onNavigationClick('prev')}>
419
- {navPrevIcon ? (
420
- navPrevIcon
421
- ) : (
422
- <span className="calendar-nav-icon calendar-nav-icon-prev" />
423
- )}
417
+ {navPrevIcon ?? <span className="calendar-nav-icon calendar-nav-icon-prev" />}
424
418
  </CButton>
425
419
  )}
426
420
  </div>
@@ -447,17 +441,11 @@ const Navigation = (props: {
447
441
  <div className="calendar-nav-next">
448
442
  {view === 'days' && (
449
443
  <CButton color="transparent" size="sm" onClick={() => onNavigationClick('next')}>
450
- {navNextIcon ? (
451
- navNextIcon
452
- ) : (
453
- <span className="calendar-nav-icon calendar-nav-icon-next" />
454
- )}
444
+ {navNextIcon ?? <span className="calendar-nav-icon calendar-nav-icon-next" />}
455
445
  </CButton>
456
446
  )}
457
447
  <CButton color="transparent" size="sm" onClick={() => onNavigationClick('next', true)}>
458
- {navNextDoubleIcon ? (
459
- navNextDoubleIcon
460
- ) : (
448
+ {navNextDoubleIcon ?? (
461
449
  <span className="calendar-nav-icon calendar-nav-icon-double-next" />
462
450
  )}
463
451
  </CButton>
@@ -492,7 +480,7 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
492
480
  selectEndDate,
493
481
  showAdjacementDays = true,
494
482
  weekdayFormat = 2,
495
- onCalendarCellHover,
483
+ onDayHover,
496
484
  onCalendarDateChange,
497
485
  onEndDateChange,
498
486
  onStartDateChange,
@@ -590,7 +578,7 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
590
578
  onCalendarDateChange && onCalendarDateChange(d)
591
579
  }
592
580
 
593
- const handleCellOnClick = (date: Date, index?: number) => {
581
+ const handleDayClick = (date: Date, index?: number) => {
594
582
  if (isDateDisabled(date, _minDate, _maxDate, disabledDates)) {
595
583
  return
596
584
  }
@@ -638,30 +626,29 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
638
626
  setStartDate(date)
639
627
  }
640
628
 
641
- const handleCellMouseEnter = (date: Date) => {
642
- if (isDateDisabled(date, _minDate, _maxDate, disabledDates)) {
643
- return
644
- }
645
-
646
- setHoverDate(date)
647
- onCalendarCellHover && onCalendarCellHover(date)
648
- }
649
-
650
- const handleCellMouseLeave = () => {
651
- setHoverDate(null)
652
- onCalendarCellHover && onCalendarCellHover(null)
653
- }
654
-
655
- const handleCellKeyDown = (
629
+ const handleDayKeyDown = (
656
630
  event: React.KeyboardEvent<HTMLDivElement>,
657
631
  date: Date,
658
632
  index?: number,
659
633
  ) => {
660
634
  if (event.code === 'Space' || event.key === 'Enter') {
661
635
  event.preventDefault()
662
- handleCellOnClick && handleCellOnClick(date, index)
636
+ handleDayClick(date, index)
637
+ }
638
+ }
639
+
640
+ const handleDayMouseEnter = (date: Date) => {
641
+ if (isDateDisabled(date, _minDate, _maxDate, disabledDates)) {
663
642
  return
664
643
  }
644
+
645
+ setHoverDate(date)
646
+ onDayHover && onDayHover(date)
647
+ }
648
+
649
+ const handleDayMouseLeave = () => {
650
+ setHoverDate(null)
651
+ onDayHover && onDayHover(null)
665
652
  }
666
653
 
667
654
  const handleMonthClick = (month: number) => {
@@ -671,8 +658,7 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
671
658
 
672
659
  const handleMonthKeyDown = (event: React.KeyboardEvent<HTMLDivElement>, month: number) => {
673
660
  if (event.code === 'Space' || event.key === 'Enter') {
674
- setCalendarPage(0, 0, month)
675
- setView('days')
661
+ handleMonthClick(month)
676
662
  }
677
663
  }
678
664
 
@@ -714,8 +700,7 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
714
700
 
715
701
  const handleYearKeyDown = (event: React.KeyboardEvent<HTMLDivElement>, date: Date) => {
716
702
  if (event.code === 'Space' || event.key === 'Enter') {
717
- setCalendarDate(date)
718
- setView('months')
703
+ handleYearClick(date)
719
704
  }
720
705
  }
721
706
 
@@ -750,10 +735,10 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
750
735
  locale={locale}
751
736
  maxDate={_maxDate}
752
737
  minDate={_minDate}
753
- onCellClick={(date) => handleCellOnClick(date, index)}
754
- onCellKeyDown={(event, date) => handleCellKeyDown(event, date, index)}
755
- onCellMouseEnter={handleCellMouseEnter}
756
- onCellMouseLeave={handleCellMouseLeave}
738
+ onDayClick={(date) => handleDayClick(date, index)}
739
+ onDayKeyDown={(event, date) => handleDayKeyDown(event, date, index)}
740
+ onDayMouseEnter={handleDayMouseEnter}
741
+ onDayMouseLeave={handleDayMouseLeave}
757
742
  onMonthClick={handleMonthClick}
758
743
  onMonthKeyDown={handleMonthKeyDown}
759
744
  onYearClick={handleYearClick}
@@ -802,7 +787,7 @@ CCalendar.propTypes = {
802
787
  PropTypes.number,
803
788
  PropTypes.oneOf<'long' | 'narrow' | 'short'>(['long', 'narrow', 'short']),
804
789
  ]),
805
- onCalendarCellHover: PropTypes.func,
790
+ onDayHover: PropTypes.func,
806
791
  onCalendarDateChange: PropTypes.func,
807
792
  onEndDateChange: PropTypes.func,
808
793
  onSelectEndChange: PropTypes.func,