@coreui/react 4.5.2 → 4.6.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.5.2.zip)
49
+ - [Download the latest release](https://github.com/coreui/coreui-react/archive/v4.6.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`
@@ -3,7 +3,7 @@ export interface COffcanvasProps extends HTMLAttributes<HTMLDivElement> {
3
3
  /**
4
4
  * Apply a backdrop on body while offcanvas is open.
5
5
  */
6
- backdrop?: boolean;
6
+ backdrop?: boolean | 'static';
7
7
  /**
8
8
  * A string of all className you want applied to the base component.
9
9
  */
@@ -28,6 +28,12 @@ export interface COffcanvasProps extends HTMLAttributes<HTMLDivElement> {
28
28
  * Generates modal using createPortal.
29
29
  */
30
30
  portal?: boolean;
31
+ /**
32
+ * Responsive offcanvas property hide content outside the viewport from a specified breakpoint and down.
33
+ *
34
+ * @since 4.6.0
35
+ */
36
+ responsive?: boolean | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
31
37
  /**
32
38
  * Allow body scrolling while offcanvas is open
33
39
  */
@@ -0,0 +1,2 @@
1
+ import { useForkedRef } from './useForkedRef';
2
+ export { useForkedRef };
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ export type AssignableRef<ValueType> = {
3
+ bivarianceHack(instance: ValueType | null): void;
4
+ }['bivarianceHack'] | React.MutableRefObject<ValueType | null>;
5
+ export declare function useForkedRef<RefValueType = any>(...refs: (AssignableRef<RefValueType> | null | undefined)[]): ((node: any) => void) | null;
6
+ export declare function assignRef<RefValueType = any>(ref: AssignableRef<RefValueType> | null | undefined, value: any): void;
7
+ export declare function isFunction(value: any): value is Function;
package/dist/index.es.js CHANGED
@@ -7067,8 +7067,8 @@ CNavbarToggler.displayName = 'CNavbarToggler';
7067
7067
 
7068
7068
  var COffcanvas = forwardRef(function (_a, ref) {
7069
7069
  var _b;
7070
- var children = _a.children, _c = _a.backdrop, backdrop = _c === void 0 ? true : _c, className = _a.className, _d = _a.keyboard, keyboard = _d === void 0 ? true : _d, onHide = _a.onHide, onShow = _a.onShow, placement = _a.placement, _e = _a.portal, portal = _e === void 0 ? true : _e, _f = _a.scroll, scroll = _f === void 0 ? false : _f, _g = _a.visible, visible = _g === void 0 ? false : _g, rest = __rest(_a, ["children", "backdrop", "className", "keyboard", "onHide", "onShow", "placement", "portal", "scroll", "visible"]);
7071
- var _h = useState(visible), _visible = _h[0], setVisible = _h[1];
7070
+ var children = _a.children, _c = _a.backdrop, backdrop = _c === void 0 ? true : _c, className = _a.className, _d = _a.keyboard, keyboard = _d === void 0 ? true : _d, onHide = _a.onHide, onShow = _a.onShow, placement = _a.placement, _e = _a.portal, portal = _e === void 0 ? false : _e, _f = _a.responsive, responsive = _f === void 0 ? true : _f, _g = _a.scroll, scroll = _g === void 0 ? false : _g, _h = _a.visible, visible = _h === void 0 ? false : _h, rest = __rest(_a, ["children", "backdrop", "className", "keyboard", "onHide", "onShow", "placement", "portal", "responsive", "scroll", "visible"]);
7071
+ var _j = useState(visible), _visible = _j[0], setVisible = _j[1];
7072
7072
  var offcanvasRef = useRef(null);
7073
7073
  var forkedRef = useForkedRef(ref, offcanvasRef);
7074
7074
  useEffect(function () {
@@ -7087,19 +7087,27 @@ var COffcanvas = forwardRef(function (_a, ref) {
7087
7087
  document.body.style.removeProperty('padding-right');
7088
7088
  }
7089
7089
  }, [_visible]);
7090
- var _className = classNames('offcanvas', (_b = {},
7090
+ var getTransitionClass = function (state) {
7091
+ return state === 'entering'
7092
+ ? 'showing'
7093
+ : state === 'entered'
7094
+ ? 'show'
7095
+ : state === 'exiting'
7096
+ ? 'show hiding'
7097
+ : '';
7098
+ };
7099
+ var _className = classNames((_b = {},
7100
+ _b["offcanvas".concat(typeof responsive !== 'boolean' ? '-' + responsive : '')] = responsive,
7091
7101
  _b["offcanvas-".concat(placement)] = placement,
7092
- _b.show = _visible,
7093
7102
  _b), className);
7094
- var transitionStyles = {
7095
- entering: { visibility: 'visible' },
7096
- entered: { visibility: 'visible' },
7097
- exiting: { visibility: 'visible' },
7098
- exited: { visibility: 'hidden' },
7099
- };
7100
7103
  var handleDismiss = function () {
7101
7104
  setVisible(false);
7102
7105
  };
7106
+ var handleBackdropDismiss = function () {
7107
+ if (backdrop !== 'static') {
7108
+ setVisible(false);
7109
+ }
7110
+ };
7103
7111
  var handleKeyDown = useCallback(function (event) {
7104
7112
  if (event.key === 'Escape' && keyboard) {
7105
7113
  return handleDismiss();
@@ -7107,7 +7115,7 @@ var COffcanvas = forwardRef(function (_a, ref) {
7107
7115
  }, [ref, handleDismiss]);
7108
7116
  var offcanvas = function (ref, state) {
7109
7117
  return (React__default.createElement(React__default.Fragment, null,
7110
- React__default.createElement("div", __assign({ className: _className, role: "dialog", style: __assign({}, transitionStyles[state]), tabIndex: -1, onKeyDown: handleKeyDown }, rest, { ref: ref }), children)));
7118
+ React__default.createElement("div", __assign({ className: classNames(_className, getTransitionClass(state)), role: "dialog", tabIndex: -1, onKeyDown: handleKeyDown }, rest, { ref: ref }), children)));
7111
7119
  };
7112
7120
  return (React__default.createElement(React__default.Fragment, null,
7113
7121
  React__default.createElement(Transition$1, { in: _visible, nodeRef: offcanvasRef, onEnter: onShow, onEntered: function () { var _a; return (_a = offcanvasRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, onExit: onHide, timeout: 300 }, function (state) {
@@ -7117,11 +7125,11 @@ var COffcanvas = forwardRef(function (_a, ref) {
7117
7125
  }),
7118
7126
  typeof window !== 'undefined' && portal
7119
7127
  ? backdrop &&
7120
- createPortal(React__default.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleDismiss, visible: _visible }), document.body)
7121
- : backdrop && (React__default.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleDismiss, visible: _visible }))));
7128
+ createPortal(React__default.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleBackdropDismiss, visible: _visible }), document.body)
7129
+ : backdrop && (React__default.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleBackdropDismiss, visible: _visible }))));
7122
7130
  });
7123
7131
  COffcanvas.propTypes = {
7124
- backdrop: propTypesExports.bool,
7132
+ backdrop: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.oneOf(['static'])]),
7125
7133
  children: propTypesExports.node,
7126
7134
  className: propTypesExports.string,
7127
7135
  keyboard: propTypesExports.bool,
@@ -7130,6 +7138,10 @@ COffcanvas.propTypes = {
7130
7138
  placement: propTypesExports.oneOf(['start', 'end', 'top', 'bottom'])
7131
7139
  .isRequired,
7132
7140
  portal: propTypesExports.bool,
7141
+ responsive: propTypesExports.oneOfType([
7142
+ propTypesExports.bool,
7143
+ propTypesExports.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
7144
+ ]),
7133
7145
  scroll: propTypesExports.bool,
7134
7146
  visible: propTypesExports.bool,
7135
7147
  };