@coreui/react-pro 4.1.4 → 4.2.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 (33) hide show
  1. package/README.md +1 -1
  2. package/dist/components/Types.d.ts +1 -1
  3. package/dist/components/calendar/CCalendar.d.ts +89 -0
  4. package/dist/components/calendar/CCalendar.utils.d.ts +20 -0
  5. package/dist/components/datepicker/CDatePicker.d.ts +13 -0
  6. package/dist/components/daterangepicker/CDateRangePicker.d.ts +50 -0
  7. package/dist/components/dropdown/CDropdown.d.ts +10 -1
  8. package/dist/components/dropdown/CDropdownToggle.d.ts +4 -0
  9. package/dist/components/picker/CPicker.d.ts +37 -0
  10. package/dist/components/timepicker/CTimePicker.d.ts +49 -0
  11. package/dist/components/timepicker/CTimePicker.utils.d.ts +4 -0
  12. package/dist/components/timepicker/CTimePickerRollCol.d.ts +11 -0
  13. package/dist/index.d.ts +5 -2
  14. package/dist/index.es.js +2528 -750
  15. package/dist/index.es.js.map +1 -1
  16. package/dist/index.js +2714 -933
  17. package/dist/index.js.map +1 -1
  18. package/package.json +4 -4
  19. package/src/components/Types.tsx +2 -2
  20. package/src/components/accordion/CAccordionButton.tsx +2 -1
  21. package/src/components/calendar/CCalendar.tsx +482 -0
  22. package/src/components/calendar/CCalendar.utils.ts +183 -0
  23. package/src/components/datepicker/CDatePicker.tsx +49 -0
  24. package/src/components/daterangepicker/CDateRangePicker.tsx +366 -0
  25. package/src/components/dropdown/CDropdown.tsx +19 -24
  26. package/src/components/dropdown/CDropdownMenu.tsx +55 -3
  27. package/src/components/dropdown/CDropdownToggle.tsx +28 -5
  28. package/src/components/picker/CPicker.tsx +142 -0
  29. package/src/components/timepicker/CTimePicker.tsx +341 -0
  30. package/src/components/timepicker/CTimePicker.utils.ts +27 -0
  31. package/src/components/timepicker/CTimePickerRollCol.tsx +57 -0
  32. package/src/index.ts +8 -2
  33. package/src/components/dropdown/CDropdownToggleCustom.tsx +0 -81
@@ -0,0 +1,57 @@
1
+ import React, { forwardRef, useEffect, useRef } from 'react'
2
+ import PropTypes from 'prop-types'
3
+ import classNames from 'classnames'
4
+
5
+ import { useForkedRef } from '../../utils/hooks'
6
+
7
+ export interface Element {
8
+ value: number | string
9
+ label: number | string
10
+ }
11
+
12
+ export interface CTimePickerRollColProps {
13
+ elements: Element[]
14
+ onClick?: (value: number | string) => void
15
+ selected?: number | string | null
16
+ }
17
+
18
+ export const CTimePickerRollCol = forwardRef<HTMLDivElement, CTimePickerRollColProps>(
19
+ ({ elements, onClick, selected }, ref) => {
20
+ const colRef = useRef<HTMLDivElement>(null)
21
+ const forkedRef = useForkedRef(ref, colRef)
22
+
23
+ useEffect(() => {
24
+ const nodeEl = colRef.current?.querySelector('.selected')
25
+ if (nodeEl && nodeEl instanceof HTMLElement) {
26
+ colRef.current?.scrollTo({ top: nodeEl.offsetTop, behavior: 'smooth' })
27
+ }
28
+ }, [selected])
29
+
30
+ return (
31
+ <div className="time-picker-roll-col" ref={forkedRef}>
32
+ {elements.map((element, index) => {
33
+ return (
34
+ <div
35
+ className={classNames('time-picker-roll-cell', {
36
+ selected: element.value === selected,
37
+ })}
38
+ key={index}
39
+ onClick={() => onClick && onClick(element.value)}
40
+ role="button"
41
+ >
42
+ {element.label}
43
+ </div>
44
+ )
45
+ })}
46
+ </div>
47
+ )
48
+ },
49
+ )
50
+
51
+ CTimePickerRollCol.propTypes = {
52
+ elements: PropTypes.array.isRequired,
53
+ onClick: PropTypes.func,
54
+ selected: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
55
+ }
56
+
57
+ CTimePickerRollCol.displayName = 'CTimePickerRollCol'
package/src/index.ts CHANGED
@@ -15,6 +15,7 @@ import { CBreadcrumbItem } from './components/breadcrumb/CBreadcrumbItem'
15
15
  import { CButton } from './components/button/CButton'
16
16
  import { CButtonGroup } from './components/button-group/CButtonGroup'
17
17
  import { CButtonToolbar } from './components/button-group/CButtonToolbar'
18
+ import { CCalendar } from './components/calendar/CCalendar'
18
19
  import { CCallout } from './components/callout/CCallout'
19
20
  import { CCard } from './components/card/CCard'
20
21
  import { CCardBody } from './components/card/CCardBody'
@@ -32,6 +33,8 @@ import { CCarouselCaption } from './components/carousel/CCarouselCaption'
32
33
  import { CCarouselItem } from './components/carousel/CCarouselItem'
33
34
  import { CCollapse } from './components/collapse/CCollapse'
34
35
  import { CCloseButton } from './components/close-button/CCloseButton'
36
+ import { CDatePicker } from './components/datepicker/CDatePicker'
37
+ import { CDateRangePicker } from './components/daterangepicker/CDateRangePicker'
35
38
  import { CDropdown } from './components/dropdown/CDropdown'
36
39
  import { CDropdownDivider } from './components/dropdown/CDropdownDivider'
37
40
  import { CDropdownHeader } from './components/dropdown/CDropdownHeader'
@@ -39,7 +42,6 @@ import { CDropdownItem } from './components/dropdown/CDropdownItem'
39
42
  import { CDropdownItemPlain } from './components/dropdown/CDropdownItemPlain'
40
43
  import { CDropdownMenu } from './components/dropdown/CDropdownMenu'
41
44
  import { CDropdownToggle } from './components/dropdown/CDropdownToggle'
42
- import { CDropdownToggleCustom } from './components/dropdown/CDropdownToggleCustom'
43
45
  import { CCol } from './components/grid/CCol'
44
46
  import { CContainer } from './components/grid/CContainer'
45
47
  import { CRow } from './components/grid/CRow'
@@ -116,6 +118,7 @@ import { CTableHeaderCell } from './components/table/CTableHeaderCell'
116
118
  import { CTableRow } from './components/table/CTableRow'
117
119
  import { CTabContent } from './components/tabs/CTabContent'
118
120
  import { CTabPane } from './components/tabs/CTabPane'
121
+ import { CTimePicker } from './components/timepicker/CTimePicker'
119
122
  import { CToast } from './components/toast/CToast'
120
123
  import { CToastBody } from './components/toast/CToastBody'
121
124
  import { CToastClose } from './components/toast/CToastClose'
@@ -141,6 +144,7 @@ export {
141
144
  CButton,
142
145
  CButtonGroup,
143
146
  CButtonToolbar,
147
+ CCalendar,
144
148
  CCallout,
145
149
  CCard,
146
150
  CCardBody,
@@ -157,6 +161,8 @@ export {
157
161
  CCarouselItem,
158
162
  CCloseButton,
159
163
  CCollapse,
164
+ CDatePicker,
165
+ CDateRangePicker,
160
166
  CDropdown,
161
167
  CDropdownDivider,
162
168
  CDropdownHeader,
@@ -164,7 +170,6 @@ export {
164
170
  CDropdownItemPlain,
165
171
  CDropdownMenu,
166
172
  CDropdownToggle,
167
- CDropdownToggleCustom,
168
173
  CCol,
169
174
  CContainer,
170
175
  CRow,
@@ -242,6 +247,7 @@ export {
242
247
  CTableRow,
243
248
  CTabContent,
244
249
  CTabPane,
250
+ CTimePicker,
245
251
  CToast,
246
252
  CToastBody,
247
253
  CToastClose,
@@ -1,81 +0,0 @@
1
- import React, { FC, HTMLAttributes, useContext } from 'react'
2
- import PropTypes from 'prop-types'
3
- import classNames from 'classnames'
4
- import { Reference } from 'react-popper'
5
-
6
- import { Triggers, triggerPropType } from '../Types'
7
-
8
- import { CDropdownContext } from './CDropdown'
9
-
10
- export interface CDropdownToggleCustomProps extends HTMLAttributes<HTMLDivElement> {
11
- /**
12
- * Toggle the disabled state for the component.
13
- */
14
- disabled?: boolean
15
- /**
16
- * Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them.
17
- *
18
- * @type 'hover' | 'focus' | 'click'
19
- */
20
- trigger?: Triggers | Triggers[]
21
- }
22
-
23
- export const CDropdownToggleCustom: FC<CDropdownToggleCustomProps> = ({
24
- children,
25
- className,
26
- disabled,
27
- trigger = 'click',
28
- ...rest
29
- }) => {
30
- const { popper, visible, setVisible } = useContext(CDropdownContext)
31
- const _className = classNames(className)
32
-
33
- const triggers = {
34
- ...((trigger === 'click' || trigger.includes('click')) &&
35
- !disabled && {
36
- onClick: (event: React.MouseEvent<HTMLElement>) => {
37
- event.preventDefault()
38
- setVisible(!visible)
39
- },
40
- }),
41
- ...((trigger === 'click-init' || trigger.includes('click-init')) &&
42
- !disabled && {
43
- onClick: (event: React.MouseEvent<HTMLElement>) => {
44
- event.preventDefault()
45
- setVisible(true)
46
- },
47
- }),
48
- ...((trigger === 'focus' || trigger.includes('focus')) &&
49
- !disabled && {
50
- onFocus: () => setVisible(true),
51
- onBlur: () => setVisible(false),
52
- }),
53
- }
54
-
55
- const togglerProps = {
56
- className: _className,
57
- 'aria-expanded': visible,
58
- ...triggers,
59
- }
60
-
61
- // We use any because Toggler can be `a` as well as `button`.
62
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
- const Toggler = (ref?: React.Ref<any>) => {
64
- return (
65
- <div {...togglerProps} {...rest} ref={ref}>
66
- {children}
67
- </div>
68
- )
69
- }
70
-
71
- return popper ? <Reference>{({ ref }) => Toggler(ref)}</Reference> : Toggler()
72
- }
73
-
74
- CDropdownToggleCustom.propTypes = {
75
- children: PropTypes.node,
76
- className: PropTypes.string,
77
- disabled: PropTypes.bool,
78
- trigger: triggerPropType,
79
- }
80
-
81
- CDropdownToggleCustom.displayName = 'CDropdownToggleCustom'