@coreui/react 4.9.0-alpha.0 → 4.9.0-alpha.1

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/dist/index.js CHANGED
@@ -3041,6 +3041,16 @@ var isInViewport = function (element) {
3041
3041
  Math.floor(rect.right) <= (window.innerWidth || document.documentElement.clientWidth));
3042
3042
  };
3043
3043
 
3044
+ var isRTL = function (element) {
3045
+ if (document.documentElement.dir === 'rtl') {
3046
+ return true;
3047
+ }
3048
+ if (element) {
3049
+ return element.closest('[dir="rtl"]') !== null;
3050
+ }
3051
+ return false;
3052
+ };
3053
+
3044
3054
  var CCarouselContext = React.createContext({});
3045
3055
  var CCarousel = React.forwardRef(function (_a, ref) {
3046
3056
  var children = _a.children, _b = _a.activeIndex, activeIndex = _b === void 0 ? 0 : _b, className = _a.className, controls = _a.controls, dark = _a.dark, indicators = _a.indicators, _c = _a.interval, interval = _c === void 0 ? 5000 : _c, onSlid = _a.onSlid, onSlide = _a.onSlide, _d = _a.pause, pause = _d === void 0 ? 'hover' : _d, _e = _a.touch, touch = _e === void 0 ? true : _e, transition = _a.transition, _f = _a.wrap, wrap = _f === void 0 ? true : _f, rest = __rest(_a, ["children", "activeIndex", "className", "controls", "dark", "indicators", "interval", "onSlid", "onSlide", "pause", "touch", "transition", "wrap"]);
@@ -5906,19 +5916,19 @@ var CDropdownMenu = function (_a) {
5906
5916
  _placement = 'bottom';
5907
5917
  }
5908
5918
  if (direction === 'dropup') {
5909
- _placement = 'top-start';
5919
+ _placement = isRTL(dropdownMenuRef.current) ? 'top-end' : 'top-start';
5910
5920
  }
5911
5921
  if (direction === 'dropup-center') {
5912
5922
  _placement = 'top';
5913
5923
  }
5914
5924
  if (direction === 'dropend') {
5915
- _placement = 'right-start';
5925
+ _placement = isRTL(dropdownMenuRef.current) ? 'left-start' : 'right-start';
5916
5926
  }
5917
5927
  if (direction === 'dropstart') {
5918
- _placement = 'left-start';
5928
+ _placement = isRTL(dropdownMenuRef.current) ? 'right-start' : 'left-start';
5919
5929
  }
5920
5930
  if (alignment === 'end') {
5921
- _placement = 'bottom-end';
5931
+ _placement = isRTL(dropdownMenuRef.current) ? 'bottom-start' : 'bottom-end';
5922
5932
  }
5923
5933
  var dropdownMenuComponent = function (style, ref) { return (React.createElement(CConditionalPortal, { portal: portal !== null && portal !== void 0 ? portal : false },
5924
5934
  React.createElement(Component, __assign({ className: classNames('dropdown-menu', {
@@ -7180,30 +7190,60 @@ CProgress.propTypes = {
7180
7190
  };
7181
7191
  CProgress.displayName = 'CProgress';
7182
7192
 
7193
+ var getPlacement$1 = function (placement, element) {
7194
+ console.log(element);
7195
+ switch (placement) {
7196
+ case 'right': {
7197
+ return isRTL(element) ? 'left' : 'right';
7198
+ }
7199
+ case 'left': {
7200
+ return isRTL(element) ? 'right' : 'left';
7201
+ }
7202
+ default: {
7203
+ return placement;
7204
+ }
7205
+ }
7206
+ };
7183
7207
  var CPopover = function (_a) {
7184
7208
  var children = _a.children, className = _a.className, content = _a.content, _b = _a.offset, offset = _b === void 0 ? [0, 8] : _b, onHide = _a.onHide, onShow = _a.onShow, _c = _a.placement, placement = _c === void 0 ? 'top' : _c, title = _a.title, _d = _a.trigger, trigger = _d === void 0 ? 'click' : _d, visible = _a.visible, rest = __rest(_a, ["children", "className", "content", "offset", "onHide", "onShow", "placement", "title", "trigger", "visible"]);
7209
+ var popoverRef = React.useRef(null);
7210
+ var togglerRef = React.useRef(null);
7211
+ var popper = React.useRef();
7185
7212
  var _e = React.useState(visible), _visible = _e[0], setVisible = _e[1];
7186
- var popoverRef = React.useRef();
7187
- var _f = React.useState(null), referenceElement = _f[0], setReferenceElement = _f[1];
7188
- var _g = React.useState(null), popperElement = _g[0], setPopperElement = _g[1];
7189
- var _h = React.useState(null), arrowElement = _h[0], setArrowElement = _h[1];
7190
- var _j = usePopper(referenceElement, popperElement, {
7191
- modifiers: [
7192
- { name: 'arrow', options: { element: arrowElement } },
7193
- {
7194
- name: 'offset',
7195
- options: {
7196
- offset: offset,
7197
- },
7198
- },
7199
- ],
7200
- placement: placement,
7201
- }), styles = _j.styles, attributes = _j.attributes;
7202
7213
  React.useEffect(function () {
7203
7214
  setVisible(visible);
7204
7215
  }, [visible]);
7216
+ React.useEffect(function () {
7217
+ if (_visible) {
7218
+ initPopper();
7219
+ }
7220
+ return function () {
7221
+ destroyPopper();
7222
+ };
7223
+ }, [_visible]);
7224
+ var initPopper = function () {
7225
+ if (togglerRef.current && popoverRef.current) {
7226
+ popper.current = createPopper(togglerRef.current, popoverRef.current, {
7227
+ modifiers: [
7228
+ {
7229
+ name: 'offset',
7230
+ options: {
7231
+ offset: offset,
7232
+ },
7233
+ },
7234
+ ],
7235
+ placement: getPlacement$1(placement, togglerRef.current),
7236
+ });
7237
+ }
7238
+ };
7239
+ var destroyPopper = function () {
7240
+ if (popper.current) {
7241
+ popper.current.destroy();
7242
+ }
7243
+ popper.current = undefined;
7244
+ };
7205
7245
  return (React.createElement(React.Fragment, null,
7206
- React.cloneElement(children, __assign(__assign(__assign({ ref: setReferenceElement }, ((trigger === 'click' || trigger.includes('click')) && {
7246
+ React.cloneElement(children, __assign(__assign(__assign({ ref: togglerRef }, ((trigger === 'click' || trigger.includes('click')) && {
7207
7247
  onClick: function () { return setVisible(!_visible); },
7208
7248
  })), ((trigger === 'focus' || trigger.includes('focus')) && {
7209
7249
  onFocus: function () { return setVisible(true); },
@@ -7216,10 +7256,12 @@ var CPopover = function (_a) {
7216
7256
  ReactDOM.createPortal(React.createElement(Transition$1, { in: _visible, mountOnEnter: true, nodeRef: popoverRef, onEnter: onShow, onExit: onHide, timeout: {
7217
7257
  enter: 0,
7218
7258
  exit: 200,
7219
- }, unmountOnExit: true }, function (state) { return (React.createElement("div", __assign({ className: classNames('popover', "bs-popover-".concat(placement.replace('left', 'start').replace('right', 'end')), 'fade', {
7259
+ }, unmountOnExit: true }, function (state) { return (React.createElement("div", __assign({ className: classNames('popover', "bs-popover-".concat(getPlacement$1(placement, togglerRef.current)
7260
+ .replace('left', 'start')
7261
+ .replace('right', 'end')), 'fade', {
7220
7262
  show: state === 'entered',
7221
- }, className), ref: setPopperElement, role: "tooltip", style: styles.popper }, attributes.popper, rest),
7222
- React.createElement("div", { className: "popover-arrow", style: styles.arrow, ref: setArrowElement }),
7263
+ }, className), ref: popoverRef, role: "tooltip" }, rest),
7264
+ React.createElement("div", { "data-popper-arrow": true, className: "popover-arrow" }),
7223
7265
  React.createElement("div", { className: "popover-header" }, title),
7224
7266
  React.createElement("div", { className: "popover-body" }, content))); }), document.body)));
7225
7267
  };
@@ -7752,30 +7794,60 @@ CToaster.propTypes = {
7752
7794
  };
7753
7795
  CToaster.displayName = 'CToaster';
7754
7796
 
7797
+ var getPlacement = function (placement, element) {
7798
+ console.log(element);
7799
+ switch (placement) {
7800
+ case 'right': {
7801
+ return isRTL(element) ? 'left' : 'right';
7802
+ }
7803
+ case 'left': {
7804
+ return isRTL(element) ? 'right' : 'left';
7805
+ }
7806
+ default: {
7807
+ return placement;
7808
+ }
7809
+ }
7810
+ };
7755
7811
  var CTooltip = function (_a) {
7756
- var children = _a.children, className = _a.className, content = _a.content, _b = _a.offset, offset = _b === void 0 ? [0, 0] : _b, onHide = _a.onHide, onShow = _a.onShow, _c = _a.placement, placement = _c === void 0 ? 'top' : _c, _d = _a.trigger, trigger = _d === void 0 ? 'hover' : _d, visible = _a.visible, rest = __rest(_a, ["children", "className", "content", "offset", "onHide", "onShow", "placement", "trigger", "visible"]);
7757
- var tooltipRef = React.useRef();
7812
+ var children = _a.children, className = _a.className, content = _a.content, _b = _a.offset, offset = _b === void 0 ? [0, 6] : _b, onHide = _a.onHide, onShow = _a.onShow, _c = _a.placement, placement = _c === void 0 ? 'top' : _c, _d = _a.trigger, trigger = _d === void 0 ? 'hover' : _d, visible = _a.visible, rest = __rest(_a, ["children", "className", "content", "offset", "onHide", "onShow", "placement", "trigger", "visible"]);
7813
+ var tooltipRef = React.useRef(null);
7814
+ var togglerRef = React.useRef(null);
7815
+ var popper = React.useRef();
7758
7816
  var _e = React.useState(visible), _visible = _e[0], setVisible = _e[1];
7759
- var _f = React.useState(null), referenceElement = _f[0], setReferenceElement = _f[1];
7760
- var _g = React.useState(null), popperElement = _g[0], setPopperElement = _g[1];
7761
- var _h = React.useState(null), arrowElement = _h[0], setArrowElement = _h[1];
7762
- var _j = usePopper(referenceElement, popperElement, {
7763
- modifiers: [
7764
- { name: 'arrow', options: { element: arrowElement } },
7765
- {
7766
- name: 'offset',
7767
- options: {
7768
- offset: offset,
7769
- },
7770
- },
7771
- ],
7772
- placement: placement,
7773
- }), styles = _j.styles, attributes = _j.attributes;
7774
7817
  React.useEffect(function () {
7775
7818
  setVisible(visible);
7776
7819
  }, [visible]);
7820
+ React.useEffect(function () {
7821
+ if (_visible) {
7822
+ initPopper();
7823
+ }
7824
+ return function () {
7825
+ destroyPopper();
7826
+ };
7827
+ }, [_visible]);
7828
+ var initPopper = function () {
7829
+ if (togglerRef.current && tooltipRef.current) {
7830
+ popper.current = createPopper(togglerRef.current, tooltipRef.current, {
7831
+ modifiers: [
7832
+ {
7833
+ name: 'offset',
7834
+ options: {
7835
+ offset: offset,
7836
+ },
7837
+ },
7838
+ ],
7839
+ placement: getPlacement(placement, togglerRef.current),
7840
+ });
7841
+ }
7842
+ };
7843
+ var destroyPopper = function () {
7844
+ if (popper.current) {
7845
+ popper.current.destroy();
7846
+ }
7847
+ popper.current = undefined;
7848
+ };
7777
7849
  return (React.createElement(React.Fragment, null,
7778
- React.cloneElement(children, __assign(__assign(__assign({ ref: setReferenceElement }, ((trigger === 'click' || trigger.includes('click')) && {
7850
+ React.cloneElement(children, __assign(__assign(__assign({ ref: togglerRef }, ((trigger === 'click' || trigger.includes('click')) && {
7779
7851
  onClick: function () { return setVisible(!_visible); },
7780
7852
  })), ((trigger === 'focus' || trigger.includes('focus')) && {
7781
7853
  onFocus: function () { return setVisible(true); },
@@ -7785,13 +7857,15 @@ var CTooltip = function (_a) {
7785
7857
  onMouseLeave: function () { return setVisible(false); },
7786
7858
  }))),
7787
7859
  typeof window !== 'undefined' &&
7788
- ReactDOM.createPortal(React.createElement(Transition$1, { in: _visible, mountOnEnter: true, nodeRef: tooltipRef, onEnter: onShow, onExit: onHide, timeout: {
7860
+ ReactDOM.createPortal(React.createElement(Transition$1, { in: _visible, mountOnEnter: true, onEnter: onShow, onExit: onHide, timeout: {
7789
7861
  enter: 0,
7790
7862
  exit: 200,
7791
- }, unmountOnExit: true }, function (state) { return (React.createElement("div", __assign({ className: classNames('tooltip', "bs-popover-".concat(placement.replace('left', 'start').replace('right', 'end')), 'fade', {
7863
+ }, unmountOnExit: true }, function (state) { return (React.createElement("div", __assign({ className: classNames('tooltip', "bs-tooltip-".concat(getPlacement(placement, togglerRef.current)
7864
+ .replace('left', 'start')
7865
+ .replace('right', 'end')), 'fade', {
7792
7866
  show: state === 'entered',
7793
- }, className), ref: setPopperElement, role: "tooltip", style: styles.popper }, attributes.popper, rest),
7794
- React.createElement("div", { className: "tooltip-arrow", style: styles.arrow, ref: setArrowElement }),
7867
+ }, className), ref: tooltipRef, role: "tooltip" }, rest),
7868
+ React.createElement("div", { "data-popper-arrow": true, className: "tooltip-arrow" }),
7795
7869
  React.createElement("div", { className: "tooltip-inner" }, content))); }), document.body)));
7796
7870
  };
7797
7871
  CTooltip.propTypes = {