@coreui/react 4.7.0 → 4.8.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.
package/README.md CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
  Several quick start options are available:
48
48
 
49
- - [Download the latest release](https://github.com/coreui/coreui-react/archive/v4.7.0.zip)
49
+ - [Download the latest release](https://github.com/coreui/coreui-react/archive/v4.8.0.zip)
50
50
  - Clone the repo: `git clone https://github.com/coreui/coreui-react.git`
51
51
  - Install with [npm](https://www.npmjs.com/): `npm install @coreui/react`
52
52
  - Install with [yarn](https://yarnpkg.com/): `yarn add @coreui/react`
@@ -1,7 +1,6 @@
1
1
  import { CAccordion } from './CAccordion';
2
2
  import { CAccordionBody } from './CAccordionBody';
3
3
  import { CAccordionButton } from './CAccordionButton';
4
- import { CAccordionCollapse } from './CAccordionCollapse';
5
4
  import { CAccordionHeader } from './CAccordionHeader';
6
5
  import { CAccordionItem } from './CAccordionItem';
7
- export { CAccordion, CAccordionBody, CAccordionButton, CAccordionCollapse, CAccordionHeader, CAccordionItem, };
6
+ export { CAccordion, CAccordionBody, CAccordionButton, CAccordionHeader, CAccordionItem, };
@@ -64,6 +64,12 @@ export interface CDropdownProps extends HTMLAttributes<HTMLDivElement | HTMLLIEl
64
64
  * If you want to disable dynamic positioning set this property to `true`.
65
65
  */
66
66
  popper?: boolean;
67
+ /**
68
+ * Generates dropdown menu using createPortal.
69
+ *
70
+ * @since 4.8.0
71
+ */
72
+ portal?: boolean;
67
73
  /**
68
74
  * Set the dropdown variant to an btn-group, dropdown, input-group, and nav-item.
69
75
  */
@@ -76,6 +82,7 @@ export interface CDropdownProps extends HTMLAttributes<HTMLDivElement | HTMLLIEl
76
82
  interface ContextProps extends CDropdownProps {
77
83
  dropdownToggleRef: RefObject<any> | undefined;
78
84
  setVisible: React.Dispatch<React.SetStateAction<boolean | undefined>>;
85
+ portal: boolean;
79
86
  }
80
87
  export declare const CDropdownContext: React.Context<ContextProps>;
81
88
  export declare const CDropdown: React.ForwardRefExoticComponent<CDropdownProps & React.RefAttributes<HTMLDivElement | HTMLLIElement>>;
package/dist/index.es.js CHANGED
@@ -2605,15 +2605,6 @@ CAccordionButton.propTypes = {
2605
2605
  };
2606
2606
  CAccordionButton.displayName = 'CAccordionButton';
2607
2607
 
2608
- var CAccordionCollapse = forwardRef(function (_a, ref) {
2609
- var children = _a.children, props = __rest(_a, ["children"]);
2610
- return (React__default.createElement(CCollapse, __assign({ className: "accordion-collapse" }, props, { ref: ref }), children));
2611
- });
2612
- CAccordionCollapse.propTypes = {
2613
- children: propTypesExports.node,
2614
- };
2615
- CAccordionCollapse.displayName = 'CAccordionCollapse';
2616
-
2617
2608
  var CAccordionHeader = forwardRef(function (_a, ref) {
2618
2609
  var children = _a.children, className = _a.className, rest = __rest(_a, ["children", "className"]);
2619
2610
  return (React__default.createElement("div", __assign({ className: classNames('accordion-header', className) }, rest, { ref: ref }),
@@ -5727,13 +5718,18 @@ function Reference(_ref) {
5727
5718
  });
5728
5719
  }
5729
5720
 
5721
+ var PopperManagerWrapper = function (_a) {
5722
+ var children = _a.children, popper = _a.popper;
5723
+ return popper ? React__default.createElement(Manager, null, children) : React__default.createElement(React__default.Fragment, null, children);
5724
+ };
5730
5725
  var CDropdownContext = createContext({});
5731
5726
  var CDropdown = forwardRef(function (_a, ref) {
5732
- var children = _a.children, alignment = _a.alignment, _b = _a.autoClose, autoClose = _b === void 0 ? true : _b, className = _a.className, dark = _a.dark, direction = _a.direction, onHide = _a.onHide, onShow = _a.onShow, _c = _a.placement, placement = _c === void 0 ? 'bottom-start' : _c, _d = _a.popper, popper = _d === void 0 ? true : _d, _e = _a.variant, variant = _e === void 0 ? 'btn-group' : _e, _f = _a.component, component = _f === void 0 ? 'div' : _f, _g = _a.visible, visible = _g === void 0 ? false : _g, rest = __rest(_a, ["children", "alignment", "autoClose", "className", "dark", "direction", "onHide", "onShow", "placement", "popper", "variant", "component", "visible"]);
5727
+ var _b;
5728
+ var children = _a.children, alignment = _a.alignment, _c = _a.autoClose, autoClose = _c === void 0 ? true : _c, className = _a.className, dark = _a.dark, direction = _a.direction, onHide = _a.onHide, onShow = _a.onShow, _d = _a.placement, placement = _d === void 0 ? 'bottom-start' : _d, _e = _a.popper, popper = _e === void 0 ? true : _e, _f = _a.portal, portal = _f === void 0 ? false : _f, _g = _a.variant, variant = _g === void 0 ? 'btn-group' : _g, _h = _a.component, component = _h === void 0 ? 'div' : _h, _j = _a.visible, visible = _j === void 0 ? false : _j, rest = __rest(_a, ["children", "alignment", "autoClose", "className", "dark", "direction", "onHide", "onShow", "placement", "popper", "portal", "variant", "component", "visible"]);
5733
5729
  var dropdownRef = useRef(null);
5734
5730
  var dropdownToggleRef = useRef(null);
5735
5731
  var forkedRef = useForkedRef(ref, dropdownRef);
5736
- var _h = useState(visible), _visible = _h[0], setVisible = _h[1];
5732
+ var _k = useState(visible), _visible = _k[0], setVisible = _k[1];
5737
5733
  var Component = variant === 'nav-item' ? 'li' : component;
5738
5734
  // Disable popper if responsive aligment is set.
5739
5735
  if (typeof alignment === 'object') {
@@ -5747,6 +5743,7 @@ var CDropdown = forwardRef(function (_a, ref) {
5747
5743
  dropdownToggleRef: dropdownToggleRef,
5748
5744
  placement: placement,
5749
5745
  popper: popper,
5746
+ portal: portal,
5750
5747
  variant: variant,
5751
5748
  visible: _visible,
5752
5749
  setVisible: setVisible,
@@ -5758,16 +5755,14 @@ var CDropdown = forwardRef(function (_a, ref) {
5758
5755
  _visible && onShow && onShow();
5759
5756
  !_visible && onHide && onHide();
5760
5757
  }, [_visible]);
5761
- var DropdownContent = function () {
5762
- return variant === 'input-group' ? (React__default.createElement(React__default.Fragment, null, children)) : (React__default.createElement(Component, __assign({ className: classNames(variant === 'nav-item' ? 'nav-item dropdown' : variant, {
5763
- 'dropdown-center': direction === 'center',
5764
- 'dropup dropup-center': direction === 'dropup-center',
5765
- direction: direction && direction !== 'center' && direction !== 'dropup-center',
5766
- show: _visible,
5767
- }, className) }, rest, { ref: forkedRef }), children));
5768
- };
5769
- return (React__default.createElement(CDropdownContext.Provider, { value: contextValues }, popper ? (React__default.createElement(Manager, null,
5770
- React__default.createElement(DropdownContent, null))) : (React__default.createElement(DropdownContent, null))));
5758
+ return (React__default.createElement(CDropdownContext.Provider, { value: contextValues },
5759
+ React__default.createElement(PopperManagerWrapper, { popper: popper }, variant === 'input-group' ? (React__default.createElement(React__default.Fragment, null, children)) : (React__default.createElement(Component, __assign({ className: classNames(variant === 'nav-item' ? 'nav-item dropdown' : variant, (_b = {
5760
+ 'dropdown-center': direction === 'center',
5761
+ 'dropup dropup-center': direction === 'dropup-center'
5762
+ },
5763
+ _b["".concat(direction)] = direction && direction !== 'center' && direction !== 'dropup-center',
5764
+ _b.show = _visible,
5765
+ _b), className) }, rest, { ref: forkedRef }), children)))));
5771
5766
  });
5772
5767
  var alignmentDirection = propTypesExports.oneOf(['start', 'end']);
5773
5768
  CDropdown.propTypes = {
@@ -5794,6 +5789,7 @@ CDropdown.propTypes = {
5794
5789
  onShow: propTypesExports.func,
5795
5790
  placement: placementPropType,
5796
5791
  popper: propTypesExports.bool,
5792
+ portal: propTypesExports.bool,
5797
5793
  variant: propTypesExports.oneOf(['btn-group', 'dropdown', 'input-group', 'nav-item']),
5798
5794
  visible: propTypesExports.bool,
5799
5795
  };
@@ -5841,9 +5837,21 @@ CDropdownItemPlain.propTypes = {
5841
5837
  };
5842
5838
  CDropdownItemPlain.displayName = 'CDropdownItemPlain';
5843
5839
 
5840
+ var alignmentClassNames = function (alignment) {
5841
+ var classNames = [];
5842
+ if (typeof alignment === 'object') {
5843
+ Object.keys(alignment).map(function (key) {
5844
+ classNames.push("dropdown-menu".concat(key === 'xs' ? '' : "-".concat(key), "-").concat(alignment[key]));
5845
+ });
5846
+ }
5847
+ if (typeof alignment === 'string') {
5848
+ classNames.push("dropdown-menu-".concat(alignment));
5849
+ }
5850
+ return classNames;
5851
+ };
5844
5852
  var CDropdownMenu = function (_a) {
5845
5853
  var children = _a.children, className = _a.className, _b = _a.component, Component = _b === void 0 ? 'ul' : _b, rest = __rest(_a, ["children", "className", "component"]);
5846
- var _c = useContext(CDropdownContext), alignment = _c.alignment, autoClose = _c.autoClose, dark = _c.dark, direction = _c.direction, dropdownToggleRef = _c.dropdownToggleRef, placement = _c.placement, popper = _c.popper, visible = _c.visible, setVisible = _c.setVisible;
5854
+ var _c = useContext(CDropdownContext), alignment = _c.alignment, autoClose = _c.autoClose, dark = _c.dark, direction = _c.direction, dropdownToggleRef = _c.dropdownToggleRef, placement = _c.placement, popper = _c.popper, portal = _c.portal, visible = _c.visible, setVisible = _c.setVisible;
5847
5855
  var dropdownMenuRef = useRef(null);
5848
5856
  useEffect(function () {
5849
5857
  visible && window.addEventListener('mouseup', handleMouseUp);
@@ -5892,29 +5900,18 @@ var CDropdownMenu = function (_a) {
5892
5900
  if (alignment === 'end') {
5893
5901
  _placement = 'bottom-end';
5894
5902
  }
5895
- var alignmentClassNames = function (alignment) {
5896
- var classNames = [];
5897
- if (typeof alignment === 'object') {
5898
- Object.keys(alignment).map(function (key) {
5899
- classNames.push("dropdown-menu".concat(key === 'xs' ? '' : "-".concat(key), "-").concat(alignment[key]));
5900
- });
5901
- }
5902
- if (typeof alignment === 'string') {
5903
- classNames.push("dropdown-menu-".concat(alignment));
5904
- }
5905
- return classNames;
5906
- };
5907
- var dropdownMenuComponent = function (style, ref) { return (React__default.createElement(Component, __assign({ className: classNames('dropdown-menu', {
5908
- 'dropdown-menu-dark': dark,
5909
- show: visible,
5910
- }, alignment && alignmentClassNames(alignment), className), ref: ref, style: style, role: "menu", "aria-hidden": !visible }, (!popper && { 'data-coreui-popper': 'static' }), rest), Component === 'ul'
5911
- ? React__default.Children.map(children, function (child, index) {
5912
- if (React__default.isValidElement(child)) {
5913
- return React__default.createElement("li", { key: index }, React__default.cloneElement(child));
5914
- }
5915
- return;
5916
- })
5917
- : children)); };
5903
+ var dropdownMenuComponent = function (style, ref) { return (React__default.createElement(CConditionalPortal, { portal: portal !== null && portal !== void 0 ? portal : false },
5904
+ React__default.createElement(Component, __assign({ className: classNames('dropdown-menu', {
5905
+ 'dropdown-menu-dark': dark,
5906
+ show: visible,
5907
+ }, alignment && alignmentClassNames(alignment), className), ref: ref, style: style, role: "menu", "aria-hidden": !visible }, (!popper && { 'data-coreui-popper': 'static' }), rest), Component === 'ul'
5908
+ ? React__default.Children.map(children, function (child, index) {
5909
+ if (React__default.isValidElement(child)) {
5910
+ return React__default.createElement("li", { key: index }, React__default.cloneElement(child));
5911
+ }
5912
+ return;
5913
+ })
5914
+ : children))); };
5918
5915
  return popper && visible ? (React__default.createElement(Popper, { innerRef: dropdownMenuRef, placement: _placement }, function (_a) {
5919
5916
  var ref = _a.ref, style = _a.style;
5920
5917
  return dropdownMenuComponent(style, ref);
@@ -6969,11 +6966,9 @@ var COffcanvas = forwardRef(function (_a, ref) {
6969
6966
  setVisible(visible);
6970
6967
  }, [visible]);
6971
6968
  useEffect(function () {
6972
- if (_visible) {
6973
- if (!scroll) {
6974
- document.body.style.overflow = 'hidden';
6975
- document.body.style.paddingRight = '0px';
6976
- }
6969
+ if (_visible && !scroll) {
6970
+ document.body.style.overflow = 'hidden';
6971
+ document.body.style.paddingRight = '0px';
6977
6972
  return;
6978
6973
  }
6979
6974
  if (!scroll) {
@@ -7917,5 +7912,5 @@ CWidgetStatsF.propTypes = {
7917
7912
  };
7918
7913
  CWidgetStatsF.displayName = 'CWidgetStatsF';
7919
7914
 
7920
- export { CAccordion, CAccordionBody, CAccordionButton, CAccordionCollapse, CAccordionHeader, CAccordionItem, CAlert, CAlertHeading, CAlertLink, CAvatar, CBackdrop, CBadge, CBreadcrumb, CBreadcrumbItem, CButton, CButtonGroup, CButtonToolbar, CCallout, CCard, CCardBody, CCardFooter, CCardGroup, CCardHeader, CCardImage, CCardImageOverlay, CCardLink, CCardSubtitle, CCardText, CCardTitle, CCarousel, CCarouselCaption, CCarouselItem, CCloseButton, CCol, CCollapse, CConditionalPortal, CContainer, CDropdown, CDropdownDivider, CDropdownHeader, CDropdownItem, CDropdownItemPlain, CDropdownMenu, CDropdownToggle, CFooter, CForm, CFormCheck, CFormControlValidation, CFormControlWrapper, CFormFeedback, CFormFloating, CFormInput, CFormLabel, CFormRange, CFormSelect, CFormSwitch, CFormText, CFormTextarea, CHeader, CHeaderBrand, CHeaderDivider, CHeaderNav, CHeaderText, CHeaderToggler, CImage, CInputGroup, CInputGroupText, CLink, CListGroup, CListGroupItem, CModal, CModalBody, CModalContent, CModalDialog, CModalFooter, CModalHeader, CModalTitle, CNav, CNavGroup, CNavGroupItems, CNavItem, CNavLink, CNavTitle, CNavbar, CNavbarBrand, CNavbarNav, CNavbarText, CNavbarToggler, COffcanvas, COffcanvasBody, COffcanvasHeader, COffcanvasTitle, CPagination, CPaginationItem, CPlaceholder, CPopover, CProgress, CProgressBar, CRow, CSidebar, CSidebarBrand, CSidebarFooter, CSidebarHeader, CSidebarNav, CSidebarToggler, CSpinner, CTabContent, CTabPane, CTable, CTableBody, CTableCaption, CTableDataCell, CTableFoot, CTableHead, CTableHeaderCell, CTableRow, CToast, CToastBody, CToastClose, CToastHeader, CToaster, CTooltip, CWidgetStatsA, CWidgetStatsB, CWidgetStatsC, CWidgetStatsD, CWidgetStatsE, CWidgetStatsF };
7915
+ export { CAccordion, CAccordionBody, CAccordionButton, CAccordionHeader, CAccordionItem, CAlert, CAlertHeading, CAlertLink, CAvatar, CBackdrop, CBadge, CBreadcrumb, CBreadcrumbItem, CButton, CButtonGroup, CButtonToolbar, CCallout, CCard, CCardBody, CCardFooter, CCardGroup, CCardHeader, CCardImage, CCardImageOverlay, CCardLink, CCardSubtitle, CCardText, CCardTitle, CCarousel, CCarouselCaption, CCarouselItem, CCloseButton, CCol, CCollapse, CConditionalPortal, CContainer, CDropdown, CDropdownDivider, CDropdownHeader, CDropdownItem, CDropdownItemPlain, CDropdownMenu, CDropdownToggle, CFooter, CForm, CFormCheck, CFormControlValidation, CFormControlWrapper, CFormFeedback, CFormFloating, CFormInput, CFormLabel, CFormRange, CFormSelect, CFormSwitch, CFormText, CFormTextarea, CHeader, CHeaderBrand, CHeaderDivider, CHeaderNav, CHeaderText, CHeaderToggler, CImage, CInputGroup, CInputGroupText, CLink, CListGroup, CListGroupItem, CModal, CModalBody, CModalContent, CModalDialog, CModalFooter, CModalHeader, CModalTitle, CNav, CNavGroup, CNavGroupItems, CNavItem, CNavLink, CNavTitle, CNavbar, CNavbarBrand, CNavbarNav, CNavbarText, CNavbarToggler, COffcanvas, COffcanvasBody, COffcanvasHeader, COffcanvasTitle, CPagination, CPaginationItem, CPlaceholder, CPopover, CProgress, CProgressBar, CRow, CSidebar, CSidebarBrand, CSidebarFooter, CSidebarHeader, CSidebarNav, CSidebarToggler, CSpinner, CTabContent, CTabPane, CTable, CTableBody, CTableCaption, CTableDataCell, CTableFoot, CTableHead, CTableHeaderCell, CTableRow, CToast, CToastBody, CToastClose, CToastHeader, CToaster, CTooltip, CWidgetStatsA, CWidgetStatsB, CWidgetStatsC, CWidgetStatsD, CWidgetStatsE, CWidgetStatsF };
7921
7916
  //# sourceMappingURL=index.es.js.map