@alfalab/core-components-popover 6.2.0 → 6.2.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/Component.d.ts CHANGED
@@ -25,7 +25,7 @@ type PopoverProps = {
25
25
  position?: Position;
26
26
  /**
27
27
  * Запрещает поповеру менять свою позицию.
28
- * Например, если места снизу недостаточно,то он все равно будет показан снизу
28
+ * Например, если места снизу недостаточно, то он все равно будет показан снизу
29
29
  */
30
30
  preventFlip?: boolean;
31
31
  /**
package/Component.js CHANGED
@@ -21,7 +21,7 @@ var mergeRefs__default = /*#__PURE__*/_interopDefaultCompat(mergeRefs);
21
21
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
22
22
  var maxSize__default = /*#__PURE__*/_interopDefaultCompat(maxSize);
23
23
 
24
- var styles = {"component":"popover__component_1btnx","inner":"popover__inner_1btnx","scrollableContent":"popover__scrollableContent_1btnx","arrow":"popover__arrow_1btnx","arrowShift":"popover__arrowShift_1btnx","enter":"popover__enter_1btnx","enterActive":"popover__enterActive_1btnx","exit":"popover__exit_1btnx","exitActive":"popover__exitActive_1btnx"};
24
+ var styles = {"component":"popover__component_dqu0o","inner":"popover__inner_dqu0o","scrollableContent":"popover__scrollableContent_dqu0o","arrow":"popover__arrow_dqu0o","enter":"popover__enter_dqu0o","enterActive":"popover__enterActive_dqu0o","exit":"popover__exit_dqu0o","exitActive":"popover__exitActive_dqu0o"};
25
25
  require('./index.css')
26
26
 
27
27
  var DEFAULT_TRANSITION = {
@@ -47,24 +47,43 @@ var availableHieghtModifier = {
47
47
  }
48
48
  },
49
49
  };
50
- /**
51
- * Минимальный размер anchorElement,
52
- * при котором возможно смещение стрелочки относительно центра
53
- */
54
- var MIN_ARROW_SHIFT_SIZE = 75;
50
+ var DEFAULT_OFFSET = [0, 0];
51
+ // Минимальное расстояние стрелки до края поповера
52
+ var MIN_DISTANCE_TO_EDGE = 24;
53
+ function getArrowPadding(_a) {
54
+ var placement = _a.placement;
55
+ if (placement === 'right-end' || placement === 'left-end') {
56
+ return { top: MIN_DISTANCE_TO_EDGE, right: 0, bottom: 0, left: 0 };
57
+ }
58
+ if (placement === 'top-start' || placement === 'bottom-start') {
59
+ return { top: 0, right: MIN_DISTANCE_TO_EDGE, bottom: 0, left: 0 };
60
+ }
61
+ if (placement === 'right-start' || placement === 'left-start') {
62
+ return { top: 0, right: 0, bottom: MIN_DISTANCE_TO_EDGE, left: 0 };
63
+ }
64
+ if (placement === 'top-end' || placement === 'bottom-end') {
65
+ return { top: 0, right: 0, bottom: 0, left: MIN_DISTANCE_TO_EDGE };
66
+ }
67
+ return 0;
68
+ }
55
69
  var Popover = React.forwardRef(function (_a, ref) {
56
- var children = _a.children, getPortalContainer = _a.getPortalContainer, _b = _a.transition, transition = _b === void 0 ? DEFAULT_TRANSITION : _b, anchorElement = _a.anchorElement, useAnchorWidth = _a.useAnchorWidth, _c = _a.offset, offset = _c === void 0 ? [0, 0] : _c, _d = _a.withArrow, withArrow = _d === void 0 ? false : _d, _e = _a.withTransition, withTransition = _e === void 0 ? true : _e, _f = _a.position, position = _f === void 0 ? 'left' : _f, preventFlip = _a.preventFlip, popperClassName = _a.popperClassName, arrowClassName = _a.arrowClassName, className = _a.className, open = _a.open, dataTestId = _a.dataTestId, update = _a.update, _g = _a.transitionDuration, transitionDuration = _g === void 0 ? "".concat(transition.timeout, "ms") : _g, _h = _a.zIndex, zIndex = _h === void 0 ? coreComponentsStack.stackingOrder.POPOVER : _h, fallbackPlacements = _a.fallbackPlacements, _j = _a.preventOverflow, preventOverflow = _j === void 0 ? true : _j, _k = _a.availableHeight, availableHeight = _k === void 0 ? false : _k;
70
+ var children = _a.children, getPortalContainer = _a.getPortalContainer, _b = _a.transition, transition = _b === void 0 ? DEFAULT_TRANSITION : _b, anchorElement = _a.anchorElement, useAnchorWidth = _a.useAnchorWidth, _c = _a.offset, offset = _c === void 0 ? DEFAULT_OFFSET : _c, _d = _a.withArrow, withArrow = _d === void 0 ? false : _d, _e = _a.withTransition, withTransition = _e === void 0 ? true : _e, _f = _a.position, position = _f === void 0 ? 'left' : _f, preventFlip = _a.preventFlip, popperClassName = _a.popperClassName, arrowClassName = _a.arrowClassName, className = _a.className, open = _a.open, dataTestId = _a.dataTestId, update = _a.update, _g = _a.transitionDuration, transitionDuration = _g === void 0 ? "".concat(transition.timeout, "ms") : _g, _h = _a.zIndex, zIndex = _h === void 0 ? coreComponentsStack.stackingOrder.POPOVER : _h, fallbackPlacements = _a.fallbackPlacements, _j = _a.preventOverflow, preventOverflow = _j === void 0 ? true : _j, _k = _a.availableHeight, availableHeight = _k === void 0 ? false : _k;
57
71
  var _l = React.useState(anchorElement), referenceElement = _l[0], setReferenceElement = _l[1];
58
72
  var _m = React.useState(null), popperElement = _m[0], setPopperElement = _m[1];
59
73
  var _o = React.useState(null), arrowElement = _o[0], setArrowElement = _o[1];
60
- var _p = React.useState(false), arrowShift = _p[0], setArrowShift = _p[1];
61
74
  var updatePopperRef = React.useRef();
62
75
  var popperRef = React.useRef(null);
63
76
  var innerRef = React.useRef(null);
64
77
  var popperModifiers = React.useMemo(function () {
65
78
  var modifiers = [{ name: 'offset', options: { offset: offset } }];
66
79
  if (withArrow) {
67
- modifiers.push({ name: 'arrow', options: { element: arrowElement } });
80
+ modifiers.push({
81
+ name: 'arrow',
82
+ options: {
83
+ element: arrowElement,
84
+ padding: getArrowPadding,
85
+ },
86
+ });
68
87
  }
69
88
  if (preventFlip) {
70
89
  modifiers.push({ name: 'flip', options: { fallbackPlacements: [] } });
@@ -89,10 +108,10 @@ var Popover = React.forwardRef(function (_a, ref) {
89
108
  availableHeight,
90
109
  arrowElement,
91
110
  ]);
92
- var _q = reactPopper.usePopper(referenceElement, popperElement, {
111
+ var _p = reactPopper.usePopper(referenceElement, popperElement, {
93
112
  placement: position,
94
113
  modifiers: popperModifiers,
95
- }), popperStyles = _q.styles, attributes = _q.attributes, updatePopper = _q.update;
114
+ }), popperStyles = _p.styles, attributes = _p.attributes, updatePopper = _p.update;
96
115
  if (updatePopper) {
97
116
  updatePopperRef.current = updatePopper;
98
117
  }
@@ -124,28 +143,12 @@ var Popover = React.forwardRef(function (_a, ref) {
124
143
  }
125
144
  return function () { return ({}); };
126
145
  }, [anchorElement, useAnchorWidth]);
127
- /**
128
- * По дизайну, если у тултипа позиционирование -start/-end, то стрелочка немного сдвигается вбок.
129
- * Но если anchorElement слишком маленький, то стрелочка сдвигаться не должна.
130
- */
131
- React.useEffect(function () {
132
- var shiftedPosition = position.includes('-start') || position.includes('-end');
133
- if (shiftedPosition && referenceElement) {
134
- var _a = referenceElement.getBoundingClientRect(), width = _a.width, height = _a.height;
135
- var size = position.includes('left') || position.includes('right') ? height : width;
136
- if (size >= MIN_ARROW_SHIFT_SIZE) {
137
- setArrowShift(true);
138
- }
139
- }
140
- }, [referenceElement, position]);
141
146
  var renderContent = function (computedZIndex) {
142
- var _a, _b;
143
- var _c;
144
- return (React__default.default.createElement("div", tslib.__assign({ ref: mergeRefs__default.default([ref, popperRef, setPopperElement]), style: tslib.__assign(tslib.__assign({ zIndex: computedZIndex, width: useAnchorWidth ? referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.offsetWidth : undefined }, popperStyles.popper), (((_c = popperStyles.popper) === null || _c === void 0 ? void 0 : _c.transform) ? null : { visibility: 'hidden' })), "data-test-id": dataTestId, className: cn__default.default(styles.component, className, (_a = {},
145
- _a[styles.arrowShift] = arrowShift,
146
- _a)) }, attributes.popper),
147
+ var _a;
148
+ var _b;
149
+ return (React__default.default.createElement("div", tslib.__assign({ ref: mergeRefs__default.default([ref, popperRef, setPopperElement]), style: tslib.__assign(tslib.__assign({ zIndex: computedZIndex, width: useAnchorWidth ? referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.offsetWidth : undefined }, popperStyles.popper), (((_b = popperStyles.popper) === null || _b === void 0 ? void 0 : _b.transform) ? null : { visibility: 'hidden' })), "data-test-id": dataTestId, className: cn__default.default(styles.component, className) }, attributes.popper),
147
150
  React__default.default.createElement("div", { className: cn__default.default(styles.inner, popperClassName), ref: innerRef },
148
- React__default.default.createElement("div", { className: cn__default.default((_b = {}, _b[styles.scrollableContent] = availableHeight, _b)) }, children),
151
+ React__default.default.createElement("div", { className: cn__default.default((_a = {}, _a[styles.scrollableContent] = availableHeight, _a)) }, children),
149
152
  withArrow && (React__default.default.createElement("div", { ref: setArrowElement, style: popperStyles.arrow, className: cn__default.default(styles.arrow, arrowClassName) })))));
150
153
  };
151
154
  return (React__default.default.createElement(coreComponentsStack.Stack, { value: zIndex }, function (computedZIndex) { return (React__default.default.createElement(coreComponentsPortal.Portal, { getPortalContainer: getPortalContainer }, withTransition ? (React__default.default.createElement(reactTransitionGroup.CSSTransition, tslib.__assign({ unmountOnExit: true, classNames: CSS_TRANSITION_CLASS_NAMES, nodeRef: popperRef }, transition, { in: open, onEntering: function (node, isAppearing) {
@@ -25,7 +25,7 @@ type PopoverProps = {
25
25
  position?: Position;
26
26
  /**
27
27
  * Запрещает поповеру менять свою позицию.
28
- * Например, если места снизу недостаточно,то он все равно будет показан снизу
28
+ * Например, если места снизу недостаточно, то он все равно будет показан снизу
29
29
  */
30
30
  preventFlip?: boolean;
31
31
  /**
package/cssm/Component.js CHANGED
@@ -46,24 +46,43 @@ var availableHieghtModifier = {
46
46
  }
47
47
  },
48
48
  };
49
- /**
50
- * Минимальный размер anchorElement,
51
- * при котором возможно смещение стрелочки относительно центра
52
- */
53
- var MIN_ARROW_SHIFT_SIZE = 75;
49
+ var DEFAULT_OFFSET = [0, 0];
50
+ // Минимальное расстояние стрелки до края поповера
51
+ var MIN_DISTANCE_TO_EDGE = 24;
52
+ function getArrowPadding(_a) {
53
+ var placement = _a.placement;
54
+ if (placement === 'right-end' || placement === 'left-end') {
55
+ return { top: MIN_DISTANCE_TO_EDGE, right: 0, bottom: 0, left: 0 };
56
+ }
57
+ if (placement === 'top-start' || placement === 'bottom-start') {
58
+ return { top: 0, right: MIN_DISTANCE_TO_EDGE, bottom: 0, left: 0 };
59
+ }
60
+ if (placement === 'right-start' || placement === 'left-start') {
61
+ return { top: 0, right: 0, bottom: MIN_DISTANCE_TO_EDGE, left: 0 };
62
+ }
63
+ if (placement === 'top-end' || placement === 'bottom-end') {
64
+ return { top: 0, right: 0, bottom: 0, left: MIN_DISTANCE_TO_EDGE };
65
+ }
66
+ return 0;
67
+ }
54
68
  var Popover = React.forwardRef(function (_a, ref) {
55
- var children = _a.children, getPortalContainer = _a.getPortalContainer, _b = _a.transition, transition = _b === void 0 ? DEFAULT_TRANSITION : _b, anchorElement = _a.anchorElement, useAnchorWidth = _a.useAnchorWidth, _c = _a.offset, offset = _c === void 0 ? [0, 0] : _c, _d = _a.withArrow, withArrow = _d === void 0 ? false : _d, _e = _a.withTransition, withTransition = _e === void 0 ? true : _e, _f = _a.position, position = _f === void 0 ? 'left' : _f, preventFlip = _a.preventFlip, popperClassName = _a.popperClassName, arrowClassName = _a.arrowClassName, className = _a.className, open = _a.open, dataTestId = _a.dataTestId, update = _a.update, _g = _a.transitionDuration, transitionDuration = _g === void 0 ? "".concat(transition.timeout, "ms") : _g, _h = _a.zIndex, zIndex = _h === void 0 ? coreComponentsStack.stackingOrder.POPOVER : _h, fallbackPlacements = _a.fallbackPlacements, _j = _a.preventOverflow, preventOverflow = _j === void 0 ? true : _j, _k = _a.availableHeight, availableHeight = _k === void 0 ? false : _k;
69
+ var children = _a.children, getPortalContainer = _a.getPortalContainer, _b = _a.transition, transition = _b === void 0 ? DEFAULT_TRANSITION : _b, anchorElement = _a.anchorElement, useAnchorWidth = _a.useAnchorWidth, _c = _a.offset, offset = _c === void 0 ? DEFAULT_OFFSET : _c, _d = _a.withArrow, withArrow = _d === void 0 ? false : _d, _e = _a.withTransition, withTransition = _e === void 0 ? true : _e, _f = _a.position, position = _f === void 0 ? 'left' : _f, preventFlip = _a.preventFlip, popperClassName = _a.popperClassName, arrowClassName = _a.arrowClassName, className = _a.className, open = _a.open, dataTestId = _a.dataTestId, update = _a.update, _g = _a.transitionDuration, transitionDuration = _g === void 0 ? "".concat(transition.timeout, "ms") : _g, _h = _a.zIndex, zIndex = _h === void 0 ? coreComponentsStack.stackingOrder.POPOVER : _h, fallbackPlacements = _a.fallbackPlacements, _j = _a.preventOverflow, preventOverflow = _j === void 0 ? true : _j, _k = _a.availableHeight, availableHeight = _k === void 0 ? false : _k;
56
70
  var _l = React.useState(anchorElement), referenceElement = _l[0], setReferenceElement = _l[1];
57
71
  var _m = React.useState(null), popperElement = _m[0], setPopperElement = _m[1];
58
72
  var _o = React.useState(null), arrowElement = _o[0], setArrowElement = _o[1];
59
- var _p = React.useState(false), arrowShift = _p[0], setArrowShift = _p[1];
60
73
  var updatePopperRef = React.useRef();
61
74
  var popperRef = React.useRef(null);
62
75
  var innerRef = React.useRef(null);
63
76
  var popperModifiers = React.useMemo(function () {
64
77
  var modifiers = [{ name: 'offset', options: { offset: offset } }];
65
78
  if (withArrow) {
66
- modifiers.push({ name: 'arrow', options: { element: arrowElement } });
79
+ modifiers.push({
80
+ name: 'arrow',
81
+ options: {
82
+ element: arrowElement,
83
+ padding: getArrowPadding,
84
+ },
85
+ });
67
86
  }
68
87
  if (preventFlip) {
69
88
  modifiers.push({ name: 'flip', options: { fallbackPlacements: [] } });
@@ -88,10 +107,10 @@ var Popover = React.forwardRef(function (_a, ref) {
88
107
  availableHeight,
89
108
  arrowElement,
90
109
  ]);
91
- var _q = reactPopper.usePopper(referenceElement, popperElement, {
110
+ var _p = reactPopper.usePopper(referenceElement, popperElement, {
92
111
  placement: position,
93
112
  modifiers: popperModifiers,
94
- }), popperStyles = _q.styles, attributes = _q.attributes, updatePopper = _q.update;
113
+ }), popperStyles = _p.styles, attributes = _p.attributes, updatePopper = _p.update;
95
114
  if (updatePopper) {
96
115
  updatePopperRef.current = updatePopper;
97
116
  }
@@ -123,28 +142,12 @@ var Popover = React.forwardRef(function (_a, ref) {
123
142
  }
124
143
  return function () { return ({}); };
125
144
  }, [anchorElement, useAnchorWidth]);
126
- /**
127
- * По дизайну, если у тултипа позиционирование -start/-end, то стрелочка немного сдвигается вбок.
128
- * Но если anchorElement слишком маленький, то стрелочка сдвигаться не должна.
129
- */
130
- React.useEffect(function () {
131
- var shiftedPosition = position.includes('-start') || position.includes('-end');
132
- if (shiftedPosition && referenceElement) {
133
- var _a = referenceElement.getBoundingClientRect(), width = _a.width, height = _a.height;
134
- var size = position.includes('left') || position.includes('right') ? height : width;
135
- if (size >= MIN_ARROW_SHIFT_SIZE) {
136
- setArrowShift(true);
137
- }
138
- }
139
- }, [referenceElement, position]);
140
145
  var renderContent = function (computedZIndex) {
141
- var _a, _b;
142
- var _c;
143
- return (React__default.default.createElement("div", tslib.__assign({ ref: mergeRefs__default.default([ref, popperRef, setPopperElement]), style: tslib.__assign(tslib.__assign({ zIndex: computedZIndex, width: useAnchorWidth ? referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.offsetWidth : undefined }, popperStyles.popper), (((_c = popperStyles.popper) === null || _c === void 0 ? void 0 : _c.transform) ? null : { visibility: 'hidden' })), "data-test-id": dataTestId, className: cn__default.default(styles__default.default.component, className, (_a = {},
144
- _a[styles__default.default.arrowShift] = arrowShift,
145
- _a)) }, attributes.popper),
146
+ var _a;
147
+ var _b;
148
+ return (React__default.default.createElement("div", tslib.__assign({ ref: mergeRefs__default.default([ref, popperRef, setPopperElement]), style: tslib.__assign(tslib.__assign({ zIndex: computedZIndex, width: useAnchorWidth ? referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.offsetWidth : undefined }, popperStyles.popper), (((_b = popperStyles.popper) === null || _b === void 0 ? void 0 : _b.transform) ? null : { visibility: 'hidden' })), "data-test-id": dataTestId, className: cn__default.default(styles__default.default.component, className) }, attributes.popper),
146
149
  React__default.default.createElement("div", { className: cn__default.default(styles__default.default.inner, popperClassName), ref: innerRef },
147
- React__default.default.createElement("div", { className: cn__default.default((_b = {}, _b[styles__default.default.scrollableContent] = availableHeight, _b)) }, children),
150
+ React__default.default.createElement("div", { className: cn__default.default((_a = {}, _a[styles__default.default.scrollableContent] = availableHeight, _a)) }, children),
148
151
  withArrow && (React__default.default.createElement("div", { ref: setArrowElement, style: popperStyles.arrow, className: cn__default.default(styles__default.default.arrow, arrowClassName) })))));
149
152
  };
150
153
  return (React__default.default.createElement(coreComponentsStack.Stack, { value: zIndex }, function (computedZIndex) { return (React__default.default.createElement(coreComponentsPortal.Portal, { getPortalContainer: getPortalContainer }, withTransition ? (React__default.default.createElement(reactTransitionGroup.CSSTransition, tslib.__assign({ unmountOnExit: true, classNames: CSS_TRANSITION_CLASS_NAMES, nodeRef: popperRef }, transition, { in: open, onEntering: function (node, isAppearing) {
@@ -53,11 +53,7 @@
53
53
  top: -6px;
54
54
  border-bottom: none;
55
55
  border-left: none;
56
- } .component[data-popper-placement='left-start'].arrowShift .arrow:after {
57
- top: -7px;
58
- } .component[data-popper-placement='left-end'].arrowShift .arrow:after {
59
- top: -5px;
60
- } .component[data-popper-placement='right'] .arrow,
56
+ } .component[data-popper-placement='right'] .arrow,
61
57
  .component[data-popper-placement='right-start'] .arrow,
62
58
  .component[data-popper-placement='right-end'] .arrow {
63
59
  left: -7px
@@ -65,11 +61,7 @@
65
61
  top: -6px;
66
62
  border-top: none;
67
63
  border-right: none;
68
- } .component[data-popper-placement='right-start'].arrowShift .arrow:after {
69
- top: -7px;
70
- } .component[data-popper-placement='right-end'].arrowShift .arrow:after {
71
- top: -5px;
72
- } .component[data-popper-placement='top'] .arrow,
64
+ } .component[data-popper-placement='top'] .arrow,
73
65
  .component[data-popper-placement='top-start'] .arrow,
74
66
  .component[data-popper-placement='top-end'] .arrow {
75
67
  bottom: 5px
@@ -77,11 +69,7 @@
77
69
  left: -6px;
78
70
  border-top: none;
79
71
  border-left: none;
80
- } .component[data-popper-placement='top-start'].arrowShift .arrow:after {
81
- left: -17px;
82
- } .component[data-popper-placement='top-end'].arrowShift .arrow:after {
83
- left: 5px;
84
- } .component[data-popper-placement='bottom'] .arrow,
72
+ } .component[data-popper-placement='bottom'] .arrow,
85
73
  .component[data-popper-placement='bottom-start'] .arrow,
86
74
  .component[data-popper-placement='bottom-end'] .arrow {
87
75
  top: -7px
@@ -89,11 +77,7 @@
89
77
  left: -6px;
90
78
  border-bottom: none;
91
79
  border-right: none;
92
- } .component[data-popper-placement='bottom-start'].arrowShift .arrow:after {
93
- left: -17px;
94
- } .component[data-popper-placement='bottom-end'].arrowShift .arrow:after {
95
- left: 5px;
96
- } .enter .inner {
80
+ } .enter .inner {
97
81
  opacity: 0;
98
82
  transform: scale(0.98);
99
83
  } .enterActive .inner {
@@ -25,7 +25,7 @@ type PopoverProps = {
25
25
  position?: Position;
26
26
  /**
27
27
  * Запрещает поповеру менять свою позицию.
28
- * Например, если места снизу недостаточно,то он все равно будет показан снизу
28
+ * Например, если места снизу недостаточно, то он все равно будет показан снизу
29
29
  */
30
30
  preventFlip?: boolean;
31
31
  /**
package/esm/Component.js CHANGED
@@ -10,7 +10,7 @@ import { Portal } from '@alfalab/core-components-portal/esm';
10
10
  import { stackingOrder, Stack } from '@alfalab/core-components-stack/esm';
11
11
  import { useLayoutEffect_SAFE_FOR_SSR } from '@alfalab/hooks';
12
12
 
13
- var styles = {"component":"popover__component_1btnx","inner":"popover__inner_1btnx","scrollableContent":"popover__scrollableContent_1btnx","arrow":"popover__arrow_1btnx","arrowShift":"popover__arrowShift_1btnx","enter":"popover__enter_1btnx","enterActive":"popover__enterActive_1btnx","exit":"popover__exit_1btnx","exitActive":"popover__exitActive_1btnx"};
13
+ var styles = {"component":"popover__component_dqu0o","inner":"popover__inner_dqu0o","scrollableContent":"popover__scrollableContent_dqu0o","arrow":"popover__arrow_dqu0o","enter":"popover__enter_dqu0o","enterActive":"popover__enterActive_dqu0o","exit":"popover__exit_dqu0o","exitActive":"popover__exitActive_dqu0o"};
14
14
  require('./index.css')
15
15
 
16
16
  var DEFAULT_TRANSITION = {
@@ -36,24 +36,43 @@ var availableHieghtModifier = {
36
36
  }
37
37
  },
38
38
  };
39
- /**
40
- * Минимальный размер anchorElement,
41
- * при котором возможно смещение стрелочки относительно центра
42
- */
43
- var MIN_ARROW_SHIFT_SIZE = 75;
39
+ var DEFAULT_OFFSET = [0, 0];
40
+ // Минимальное расстояние стрелки до края поповера
41
+ var MIN_DISTANCE_TO_EDGE = 24;
42
+ function getArrowPadding(_a) {
43
+ var placement = _a.placement;
44
+ if (placement === 'right-end' || placement === 'left-end') {
45
+ return { top: MIN_DISTANCE_TO_EDGE, right: 0, bottom: 0, left: 0 };
46
+ }
47
+ if (placement === 'top-start' || placement === 'bottom-start') {
48
+ return { top: 0, right: MIN_DISTANCE_TO_EDGE, bottom: 0, left: 0 };
49
+ }
50
+ if (placement === 'right-start' || placement === 'left-start') {
51
+ return { top: 0, right: 0, bottom: MIN_DISTANCE_TO_EDGE, left: 0 };
52
+ }
53
+ if (placement === 'top-end' || placement === 'bottom-end') {
54
+ return { top: 0, right: 0, bottom: 0, left: MIN_DISTANCE_TO_EDGE };
55
+ }
56
+ return 0;
57
+ }
44
58
  var Popover = forwardRef(function (_a, ref) {
45
- var children = _a.children, getPortalContainer = _a.getPortalContainer, _b = _a.transition, transition = _b === void 0 ? DEFAULT_TRANSITION : _b, anchorElement = _a.anchorElement, useAnchorWidth = _a.useAnchorWidth, _c = _a.offset, offset = _c === void 0 ? [0, 0] : _c, _d = _a.withArrow, withArrow = _d === void 0 ? false : _d, _e = _a.withTransition, withTransition = _e === void 0 ? true : _e, _f = _a.position, position = _f === void 0 ? 'left' : _f, preventFlip = _a.preventFlip, popperClassName = _a.popperClassName, arrowClassName = _a.arrowClassName, className = _a.className, open = _a.open, dataTestId = _a.dataTestId, update = _a.update, _g = _a.transitionDuration, transitionDuration = _g === void 0 ? "".concat(transition.timeout, "ms") : _g, _h = _a.zIndex, zIndex = _h === void 0 ? stackingOrder.POPOVER : _h, fallbackPlacements = _a.fallbackPlacements, _j = _a.preventOverflow, preventOverflow = _j === void 0 ? true : _j, _k = _a.availableHeight, availableHeight = _k === void 0 ? false : _k;
59
+ var children = _a.children, getPortalContainer = _a.getPortalContainer, _b = _a.transition, transition = _b === void 0 ? DEFAULT_TRANSITION : _b, anchorElement = _a.anchorElement, useAnchorWidth = _a.useAnchorWidth, _c = _a.offset, offset = _c === void 0 ? DEFAULT_OFFSET : _c, _d = _a.withArrow, withArrow = _d === void 0 ? false : _d, _e = _a.withTransition, withTransition = _e === void 0 ? true : _e, _f = _a.position, position = _f === void 0 ? 'left' : _f, preventFlip = _a.preventFlip, popperClassName = _a.popperClassName, arrowClassName = _a.arrowClassName, className = _a.className, open = _a.open, dataTestId = _a.dataTestId, update = _a.update, _g = _a.transitionDuration, transitionDuration = _g === void 0 ? "".concat(transition.timeout, "ms") : _g, _h = _a.zIndex, zIndex = _h === void 0 ? stackingOrder.POPOVER : _h, fallbackPlacements = _a.fallbackPlacements, _j = _a.preventOverflow, preventOverflow = _j === void 0 ? true : _j, _k = _a.availableHeight, availableHeight = _k === void 0 ? false : _k;
46
60
  var _l = useState(anchorElement), referenceElement = _l[0], setReferenceElement = _l[1];
47
61
  var _m = useState(null), popperElement = _m[0], setPopperElement = _m[1];
48
62
  var _o = useState(null), arrowElement = _o[0], setArrowElement = _o[1];
49
- var _p = useState(false), arrowShift = _p[0], setArrowShift = _p[1];
50
63
  var updatePopperRef = useRef();
51
64
  var popperRef = useRef(null);
52
65
  var innerRef = useRef(null);
53
66
  var popperModifiers = useMemo(function () {
54
67
  var modifiers = [{ name: 'offset', options: { offset: offset } }];
55
68
  if (withArrow) {
56
- modifiers.push({ name: 'arrow', options: { element: arrowElement } });
69
+ modifiers.push({
70
+ name: 'arrow',
71
+ options: {
72
+ element: arrowElement,
73
+ padding: getArrowPadding,
74
+ },
75
+ });
57
76
  }
58
77
  if (preventFlip) {
59
78
  modifiers.push({ name: 'flip', options: { fallbackPlacements: [] } });
@@ -78,10 +97,10 @@ var Popover = forwardRef(function (_a, ref) {
78
97
  availableHeight,
79
98
  arrowElement,
80
99
  ]);
81
- var _q = usePopper(referenceElement, popperElement, {
100
+ var _p = usePopper(referenceElement, popperElement, {
82
101
  placement: position,
83
102
  modifiers: popperModifiers,
84
- }), popperStyles = _q.styles, attributes = _q.attributes, updatePopper = _q.update;
103
+ }), popperStyles = _p.styles, attributes = _p.attributes, updatePopper = _p.update;
85
104
  if (updatePopper) {
86
105
  updatePopperRef.current = updatePopper;
87
106
  }
@@ -113,28 +132,12 @@ var Popover = forwardRef(function (_a, ref) {
113
132
  }
114
133
  return function () { return ({}); };
115
134
  }, [anchorElement, useAnchorWidth]);
116
- /**
117
- * По дизайну, если у тултипа позиционирование -start/-end, то стрелочка немного сдвигается вбок.
118
- * Но если anchorElement слишком маленький, то стрелочка сдвигаться не должна.
119
- */
120
- useEffect(function () {
121
- var shiftedPosition = position.includes('-start') || position.includes('-end');
122
- if (shiftedPosition && referenceElement) {
123
- var _a = referenceElement.getBoundingClientRect(), width = _a.width, height = _a.height;
124
- var size = position.includes('left') || position.includes('right') ? height : width;
125
- if (size >= MIN_ARROW_SHIFT_SIZE) {
126
- setArrowShift(true);
127
- }
128
- }
129
- }, [referenceElement, position]);
130
135
  var renderContent = function (computedZIndex) {
131
- var _a, _b;
132
- var _c;
133
- return (React.createElement("div", __assign({ ref: mergeRefs([ref, popperRef, setPopperElement]), style: __assign(__assign({ zIndex: computedZIndex, width: useAnchorWidth ? referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.offsetWidth : undefined }, popperStyles.popper), (((_c = popperStyles.popper) === null || _c === void 0 ? void 0 : _c.transform) ? null : { visibility: 'hidden' })), "data-test-id": dataTestId, className: cn(styles.component, className, (_a = {},
134
- _a[styles.arrowShift] = arrowShift,
135
- _a)) }, attributes.popper),
136
+ var _a;
137
+ var _b;
138
+ return (React.createElement("div", __assign({ ref: mergeRefs([ref, popperRef, setPopperElement]), style: __assign(__assign({ zIndex: computedZIndex, width: useAnchorWidth ? referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.offsetWidth : undefined }, popperStyles.popper), (((_b = popperStyles.popper) === null || _b === void 0 ? void 0 : _b.transform) ? null : { visibility: 'hidden' })), "data-test-id": dataTestId, className: cn(styles.component, className) }, attributes.popper),
136
139
  React.createElement("div", { className: cn(styles.inner, popperClassName), ref: innerRef },
137
- React.createElement("div", { className: cn((_b = {}, _b[styles.scrollableContent] = availableHeight, _b)) }, children),
140
+ React.createElement("div", { className: cn((_a = {}, _a[styles.scrollableContent] = availableHeight, _a)) }, children),
138
141
  withArrow && (React.createElement("div", { ref: setArrowElement, style: popperStyles.arrow, className: cn(styles.arrow, arrowClassName) })))));
139
142
  };
140
143
  return (React.createElement(Stack, { value: zIndex }, function (computedZIndex) { return (React.createElement(Portal, { getPortalContainer: getPortalContainer }, withTransition ? (React.createElement(CSSTransition, __assign({ unmountOnExit: true, classNames: CSS_TRANSITION_CLASS_NAMES, nodeRef: popperRef }, transition, { in: open, onEntering: function (node, isAppearing) {
package/esm/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /* hash: m7e7m */
1
+ /* hash: 1f2q9 */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-modal-bg-primary: #fff;
@@ -20,23 +20,23 @@
20
20
  } :root {
21
21
  } :root {
22
22
  --popover-border-color: transparent;
23
- } .popover__component_1btnx {
23
+ } .popover__component_dqu0o {
24
24
  background-color: transparent;
25
25
  color: var(--color-light-text-primary);
26
- } .popover__inner_1btnx {
26
+ } .popover__inner_dqu0o {
27
27
  position: relative;
28
28
  background-color: var(--color-light-modal-bg-primary);
29
29
  box-shadow: var(--shadow-m);
30
30
  border: 1px solid var(--popover-border-color);
31
31
  box-sizing: border-box;
32
32
  will-change: transform;
33
- } .popover__scrollableContent_1btnx {
33
+ } .popover__scrollableContent_dqu0o {
34
34
  position: relative;
35
35
  z-index: 2;
36
36
  overflow-y: auto;
37
- } .popover__arrow_1btnx {
37
+ } .popover__arrow_dqu0o {
38
38
  z-index: 1;
39
- } .popover__arrow_1btnx:after {
39
+ } .popover__arrow_dqu0o:after {
40
40
  content: '';
41
41
  display: block;
42
42
  position: absolute;
@@ -46,67 +46,51 @@
46
46
  border: 1px solid var(--popover-border-color);
47
47
  box-sizing: border-box;
48
48
  transform: rotate(45deg);
49
- } .popover__component_1btnx[data-popper-placement='left'] .popover__arrow_1btnx,
50
- .popover__component_1btnx[data-popper-placement='left-start'] .popover__arrow_1btnx,
51
- .popover__component_1btnx[data-popper-placement='left-end'] .popover__arrow_1btnx {
49
+ } .popover__component_dqu0o[data-popper-placement='left'] .popover__arrow_dqu0o,
50
+ .popover__component_dqu0o[data-popper-placement='left-start'] .popover__arrow_dqu0o,
51
+ .popover__component_dqu0o[data-popper-placement='left-end'] .popover__arrow_dqu0o {
52
52
  right: 5px
53
- } .popover__component_1btnx[data-popper-placement='left'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='left-start'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='left-end'] .popover__arrow_1btnx:after {
53
+ } .popover__component_dqu0o[data-popper-placement='left'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='left-start'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='left-end'] .popover__arrow_dqu0o:after {
54
54
  top: -6px;
55
55
  border-bottom: none;
56
56
  border-left: none;
57
- } .popover__component_1btnx[data-popper-placement='left-start'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
58
- top: -7px;
59
- } .popover__component_1btnx[data-popper-placement='left-end'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
60
- top: -5px;
61
- } .popover__component_1btnx[data-popper-placement='right'] .popover__arrow_1btnx,
62
- .popover__component_1btnx[data-popper-placement='right-start'] .popover__arrow_1btnx,
63
- .popover__component_1btnx[data-popper-placement='right-end'] .popover__arrow_1btnx {
57
+ } .popover__component_dqu0o[data-popper-placement='right'] .popover__arrow_dqu0o,
58
+ .popover__component_dqu0o[data-popper-placement='right-start'] .popover__arrow_dqu0o,
59
+ .popover__component_dqu0o[data-popper-placement='right-end'] .popover__arrow_dqu0o {
64
60
  left: -7px
65
- } .popover__component_1btnx[data-popper-placement='right'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='right-start'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='right-end'] .popover__arrow_1btnx:after {
61
+ } .popover__component_dqu0o[data-popper-placement='right'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='right-start'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='right-end'] .popover__arrow_dqu0o:after {
66
62
  top: -6px;
67
63
  border-top: none;
68
64
  border-right: none;
69
- } .popover__component_1btnx[data-popper-placement='right-start'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
70
- top: -7px;
71
- } .popover__component_1btnx[data-popper-placement='right-end'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
72
- top: -5px;
73
- } .popover__component_1btnx[data-popper-placement='top'] .popover__arrow_1btnx,
74
- .popover__component_1btnx[data-popper-placement='top-start'] .popover__arrow_1btnx,
75
- .popover__component_1btnx[data-popper-placement='top-end'] .popover__arrow_1btnx {
65
+ } .popover__component_dqu0o[data-popper-placement='top'] .popover__arrow_dqu0o,
66
+ .popover__component_dqu0o[data-popper-placement='top-start'] .popover__arrow_dqu0o,
67
+ .popover__component_dqu0o[data-popper-placement='top-end'] .popover__arrow_dqu0o {
76
68
  bottom: 5px
77
- } .popover__component_1btnx[data-popper-placement='top'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='top-start'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='top-end'] .popover__arrow_1btnx:after {
69
+ } .popover__component_dqu0o[data-popper-placement='top'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='top-start'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='top-end'] .popover__arrow_dqu0o:after {
78
70
  left: -6px;
79
71
  border-top: none;
80
72
  border-left: none;
81
- } .popover__component_1btnx[data-popper-placement='top-start'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
82
- left: -17px;
83
- } .popover__component_1btnx[data-popper-placement='top-end'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
84
- left: 5px;
85
- } .popover__component_1btnx[data-popper-placement='bottom'] .popover__arrow_1btnx,
86
- .popover__component_1btnx[data-popper-placement='bottom-start'] .popover__arrow_1btnx,
87
- .popover__component_1btnx[data-popper-placement='bottom-end'] .popover__arrow_1btnx {
73
+ } .popover__component_dqu0o[data-popper-placement='bottom'] .popover__arrow_dqu0o,
74
+ .popover__component_dqu0o[data-popper-placement='bottom-start'] .popover__arrow_dqu0o,
75
+ .popover__component_dqu0o[data-popper-placement='bottom-end'] .popover__arrow_dqu0o {
88
76
  top: -7px
89
- } .popover__component_1btnx[data-popper-placement='bottom'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='bottom-start'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='bottom-end'] .popover__arrow_1btnx:after {
77
+ } .popover__component_dqu0o[data-popper-placement='bottom'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='bottom-start'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='bottom-end'] .popover__arrow_dqu0o:after {
90
78
  left: -6px;
91
79
  border-bottom: none;
92
80
  border-right: none;
93
- } .popover__component_1btnx[data-popper-placement='bottom-start'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
94
- left: -17px;
95
- } .popover__component_1btnx[data-popper-placement='bottom-end'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
96
- left: 5px;
97
- } .popover__enter_1btnx .popover__inner_1btnx {
81
+ } .popover__enter_dqu0o .popover__inner_dqu0o {
98
82
  opacity: 0;
99
83
  transform: scale(0.98);
100
- } .popover__enterActive_1btnx .popover__inner_1btnx {
84
+ } .popover__enterActive_dqu0o .popover__inner_dqu0o {
101
85
  opacity: 1;
102
86
  transform: scale(1);
103
87
  transition-property: opacity, transform;
104
88
  transition-timing-function: ease-in-out;
105
89
  transition-duration: 150ms;
106
- } .popover__exit_1btnx .popover__inner_1btnx {
90
+ } .popover__exit_dqu0o .popover__inner_dqu0o {
107
91
  opacity: 1;
108
92
  transform: scale(1);
109
- } .popover__exitActive_1btnx .popover__inner_1btnx {
93
+ } .popover__exitActive_dqu0o .popover__inner_dqu0o {
110
94
  opacity: 0;
111
95
  transform: scale(0.98);
112
96
  transition-property: opacity, transform;
package/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /* hash: m7e7m */
1
+ /* hash: 1f2q9 */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-modal-bg-primary: #fff;
@@ -20,23 +20,23 @@
20
20
  } :root {
21
21
  } :root {
22
22
  --popover-border-color: transparent;
23
- } .popover__component_1btnx {
23
+ } .popover__component_dqu0o {
24
24
  background-color: transparent;
25
25
  color: var(--color-light-text-primary);
26
- } .popover__inner_1btnx {
26
+ } .popover__inner_dqu0o {
27
27
  position: relative;
28
28
  background-color: var(--color-light-modal-bg-primary);
29
29
  box-shadow: var(--shadow-m);
30
30
  border: 1px solid var(--popover-border-color);
31
31
  box-sizing: border-box;
32
32
  will-change: transform;
33
- } .popover__scrollableContent_1btnx {
33
+ } .popover__scrollableContent_dqu0o {
34
34
  position: relative;
35
35
  z-index: 2;
36
36
  overflow-y: auto;
37
- } .popover__arrow_1btnx {
37
+ } .popover__arrow_dqu0o {
38
38
  z-index: 1;
39
- } .popover__arrow_1btnx:after {
39
+ } .popover__arrow_dqu0o:after {
40
40
  content: '';
41
41
  display: block;
42
42
  position: absolute;
@@ -46,67 +46,51 @@
46
46
  border: 1px solid var(--popover-border-color);
47
47
  box-sizing: border-box;
48
48
  transform: rotate(45deg);
49
- } .popover__component_1btnx[data-popper-placement='left'] .popover__arrow_1btnx,
50
- .popover__component_1btnx[data-popper-placement='left-start'] .popover__arrow_1btnx,
51
- .popover__component_1btnx[data-popper-placement='left-end'] .popover__arrow_1btnx {
49
+ } .popover__component_dqu0o[data-popper-placement='left'] .popover__arrow_dqu0o,
50
+ .popover__component_dqu0o[data-popper-placement='left-start'] .popover__arrow_dqu0o,
51
+ .popover__component_dqu0o[data-popper-placement='left-end'] .popover__arrow_dqu0o {
52
52
  right: 5px
53
- } .popover__component_1btnx[data-popper-placement='left'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='left-start'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='left-end'] .popover__arrow_1btnx:after {
53
+ } .popover__component_dqu0o[data-popper-placement='left'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='left-start'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='left-end'] .popover__arrow_dqu0o:after {
54
54
  top: -6px;
55
55
  border-bottom: none;
56
56
  border-left: none;
57
- } .popover__component_1btnx[data-popper-placement='left-start'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
58
- top: -7px;
59
- } .popover__component_1btnx[data-popper-placement='left-end'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
60
- top: -5px;
61
- } .popover__component_1btnx[data-popper-placement='right'] .popover__arrow_1btnx,
62
- .popover__component_1btnx[data-popper-placement='right-start'] .popover__arrow_1btnx,
63
- .popover__component_1btnx[data-popper-placement='right-end'] .popover__arrow_1btnx {
57
+ } .popover__component_dqu0o[data-popper-placement='right'] .popover__arrow_dqu0o,
58
+ .popover__component_dqu0o[data-popper-placement='right-start'] .popover__arrow_dqu0o,
59
+ .popover__component_dqu0o[data-popper-placement='right-end'] .popover__arrow_dqu0o {
64
60
  left: -7px
65
- } .popover__component_1btnx[data-popper-placement='right'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='right-start'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='right-end'] .popover__arrow_1btnx:after {
61
+ } .popover__component_dqu0o[data-popper-placement='right'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='right-start'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='right-end'] .popover__arrow_dqu0o:after {
66
62
  top: -6px;
67
63
  border-top: none;
68
64
  border-right: none;
69
- } .popover__component_1btnx[data-popper-placement='right-start'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
70
- top: -7px;
71
- } .popover__component_1btnx[data-popper-placement='right-end'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
72
- top: -5px;
73
- } .popover__component_1btnx[data-popper-placement='top'] .popover__arrow_1btnx,
74
- .popover__component_1btnx[data-popper-placement='top-start'] .popover__arrow_1btnx,
75
- .popover__component_1btnx[data-popper-placement='top-end'] .popover__arrow_1btnx {
65
+ } .popover__component_dqu0o[data-popper-placement='top'] .popover__arrow_dqu0o,
66
+ .popover__component_dqu0o[data-popper-placement='top-start'] .popover__arrow_dqu0o,
67
+ .popover__component_dqu0o[data-popper-placement='top-end'] .popover__arrow_dqu0o {
76
68
  bottom: 5px
77
- } .popover__component_1btnx[data-popper-placement='top'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='top-start'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='top-end'] .popover__arrow_1btnx:after {
69
+ } .popover__component_dqu0o[data-popper-placement='top'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='top-start'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='top-end'] .popover__arrow_dqu0o:after {
78
70
  left: -6px;
79
71
  border-top: none;
80
72
  border-left: none;
81
- } .popover__component_1btnx[data-popper-placement='top-start'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
82
- left: -17px;
83
- } .popover__component_1btnx[data-popper-placement='top-end'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
84
- left: 5px;
85
- } .popover__component_1btnx[data-popper-placement='bottom'] .popover__arrow_1btnx,
86
- .popover__component_1btnx[data-popper-placement='bottom-start'] .popover__arrow_1btnx,
87
- .popover__component_1btnx[data-popper-placement='bottom-end'] .popover__arrow_1btnx {
73
+ } .popover__component_dqu0o[data-popper-placement='bottom'] .popover__arrow_dqu0o,
74
+ .popover__component_dqu0o[data-popper-placement='bottom-start'] .popover__arrow_dqu0o,
75
+ .popover__component_dqu0o[data-popper-placement='bottom-end'] .popover__arrow_dqu0o {
88
76
  top: -7px
89
- } .popover__component_1btnx[data-popper-placement='bottom'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='bottom-start'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='bottom-end'] .popover__arrow_1btnx:after {
77
+ } .popover__component_dqu0o[data-popper-placement='bottom'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='bottom-start'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='bottom-end'] .popover__arrow_dqu0o:after {
90
78
  left: -6px;
91
79
  border-bottom: none;
92
80
  border-right: none;
93
- } .popover__component_1btnx[data-popper-placement='bottom-start'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
94
- left: -17px;
95
- } .popover__component_1btnx[data-popper-placement='bottom-end'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
96
- left: 5px;
97
- } .popover__enter_1btnx .popover__inner_1btnx {
81
+ } .popover__enter_dqu0o .popover__inner_dqu0o {
98
82
  opacity: 0;
99
83
  transform: scale(0.98);
100
- } .popover__enterActive_1btnx .popover__inner_1btnx {
84
+ } .popover__enterActive_dqu0o .popover__inner_dqu0o {
101
85
  opacity: 1;
102
86
  transform: scale(1);
103
87
  transition-property: opacity, transform;
104
88
  transition-timing-function: ease-in-out;
105
89
  transition-duration: 150ms;
106
- } .popover__exit_1btnx .popover__inner_1btnx {
90
+ } .popover__exit_dqu0o .popover__inner_dqu0o {
107
91
  opacity: 1;
108
92
  transform: scale(1);
109
- } .popover__exitActive_1btnx .popover__inner_1btnx {
93
+ } .popover__exitActive_dqu0o .popover__inner_dqu0o {
110
94
  opacity: 0;
111
95
  transform: scale(0.98);
112
96
  transition-property: opacity, transform;
@@ -25,7 +25,7 @@ type PopoverProps = {
25
25
  position?: Position;
26
26
  /**
27
27
  * Запрещает поповеру менять свою позицию.
28
- * Например, если места снизу недостаточно,то он все равно будет показан снизу
28
+ * Например, если места снизу недостаточно, то он все равно будет показан снизу
29
29
  */
30
30
  preventFlip?: boolean;
31
31
  /**
@@ -9,7 +9,7 @@ import { Portal } from '@alfalab/core-components-portal/modern';
9
9
  import { Stack, stackingOrder } from '@alfalab/core-components-stack/modern';
10
10
  import { useLayoutEffect_SAFE_FOR_SSR } from '@alfalab/hooks';
11
11
 
12
- const styles = {"component":"popover__component_1btnx","inner":"popover__inner_1btnx","scrollableContent":"popover__scrollableContent_1btnx","arrow":"popover__arrow_1btnx","arrowShift":"popover__arrowShift_1btnx","enter":"popover__enter_1btnx","enterActive":"popover__enterActive_1btnx","exit":"popover__exit_1btnx","exitActive":"popover__exitActive_1btnx"};
12
+ const styles = {"component":"popover__component_dqu0o","inner":"popover__inner_dqu0o","scrollableContent":"popover__scrollableContent_dqu0o","arrow":"popover__arrow_dqu0o","enter":"popover__enter_dqu0o","enterActive":"popover__enterActive_dqu0o","exit":"popover__exit_dqu0o","exitActive":"popover__exitActive_dqu0o"};
13
13
  require('./index.css')
14
14
 
15
15
  const DEFAULT_TRANSITION = {
@@ -34,23 +34,41 @@ const availableHieghtModifier = {
34
34
  }
35
35
  },
36
36
  };
37
- /**
38
- * Минимальный размер anchorElement,
39
- * при котором возможно смещение стрелочки относительно центра
40
- */
41
- const MIN_ARROW_SHIFT_SIZE = 75;
42
- const Popover = forwardRef(({ children, getPortalContainer, transition = DEFAULT_TRANSITION, anchorElement, useAnchorWidth, offset = [0, 0], withArrow = false, withTransition = true, position = 'left', preventFlip, popperClassName, arrowClassName, className, open, dataTestId, update, transitionDuration = `${transition.timeout}ms`, zIndex = stackingOrder.POPOVER, fallbackPlacements, preventOverflow = true, availableHeight = false, }, ref) => {
37
+ const DEFAULT_OFFSET = [0, 0];
38
+ // Минимальное расстояние стрелки до края поповера
39
+ const MIN_DISTANCE_TO_EDGE = 24;
40
+ function getArrowPadding({ placement, }) {
41
+ if (placement === 'right-end' || placement === 'left-end') {
42
+ return { top: MIN_DISTANCE_TO_EDGE, right: 0, bottom: 0, left: 0 };
43
+ }
44
+ if (placement === 'top-start' || placement === 'bottom-start') {
45
+ return { top: 0, right: MIN_DISTANCE_TO_EDGE, bottom: 0, left: 0 };
46
+ }
47
+ if (placement === 'right-start' || placement === 'left-start') {
48
+ return { top: 0, right: 0, bottom: MIN_DISTANCE_TO_EDGE, left: 0 };
49
+ }
50
+ if (placement === 'top-end' || placement === 'bottom-end') {
51
+ return { top: 0, right: 0, bottom: 0, left: MIN_DISTANCE_TO_EDGE };
52
+ }
53
+ return 0;
54
+ }
55
+ const Popover = forwardRef(({ children, getPortalContainer, transition = DEFAULT_TRANSITION, anchorElement, useAnchorWidth, offset = DEFAULT_OFFSET, withArrow = false, withTransition = true, position = 'left', preventFlip, popperClassName, arrowClassName, className, open, dataTestId, update, transitionDuration = `${transition.timeout}ms`, zIndex = stackingOrder.POPOVER, fallbackPlacements, preventOverflow = true, availableHeight = false, }, ref) => {
43
56
  const [referenceElement, setReferenceElement] = useState(anchorElement);
44
57
  const [popperElement, setPopperElement] = useState(null);
45
58
  const [arrowElement, setArrowElement] = useState(null);
46
- const [arrowShift, setArrowShift] = useState(false);
47
59
  const updatePopperRef = useRef();
48
60
  const popperRef = useRef(null);
49
61
  const innerRef = useRef(null);
50
62
  const popperModifiers = useMemo(() => {
51
63
  const modifiers = [{ name: 'offset', options: { offset } }];
52
64
  if (withArrow) {
53
- modifiers.push({ name: 'arrow', options: { element: arrowElement } });
65
+ modifiers.push({
66
+ name: 'arrow',
67
+ options: {
68
+ element: arrowElement,
69
+ padding: getArrowPadding,
70
+ },
71
+ });
54
72
  }
55
73
  if (preventFlip) {
56
74
  modifiers.push({ name: 'flip', options: { fallbackPlacements: [] } });
@@ -110,28 +128,12 @@ const Popover = forwardRef(({ children, getPortalContainer, transition = DEFAULT
110
128
  }
111
129
  return () => ({});
112
130
  }, [anchorElement, useAnchorWidth]);
113
- /**
114
- * По дизайну, если у тултипа позиционирование -start/-end, то стрелочка немного сдвигается вбок.
115
- * Но если anchorElement слишком маленький, то стрелочка сдвигаться не должна.
116
- */
117
- useEffect(() => {
118
- const shiftedPosition = position.includes('-start') || position.includes('-end');
119
- if (shiftedPosition && referenceElement) {
120
- const { width, height } = referenceElement.getBoundingClientRect();
121
- const size = position.includes('left') || position.includes('right') ? height : width;
122
- if (size >= MIN_ARROW_SHIFT_SIZE) {
123
- setArrowShift(true);
124
- }
125
- }
126
- }, [referenceElement, position]);
127
131
  const renderContent = (computedZIndex) => (React.createElement("div", { ref: mergeRefs([ref, popperRef, setPopperElement]), style: {
128
132
  zIndex: computedZIndex,
129
133
  width: useAnchorWidth ? referenceElement?.offsetWidth : undefined,
130
134
  ...popperStyles.popper,
131
135
  ...(popperStyles.popper?.transform ? null : { visibility: 'hidden' }),
132
- }, "data-test-id": dataTestId, className: cn(styles.component, className, {
133
- [styles.arrowShift]: arrowShift,
134
- }), ...attributes.popper },
136
+ }, "data-test-id": dataTestId, className: cn(styles.component, className), ...attributes.popper },
135
137
  React.createElement("div", { className: cn(styles.inner, popperClassName), ref: innerRef },
136
138
  React.createElement("div", { className: cn({ [styles.scrollableContent]: availableHeight }) }, children),
137
139
  withArrow && (React.createElement("div", { ref: setArrowElement, style: popperStyles.arrow, className: cn(styles.arrow, arrowClassName) })))));
package/modern/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /* hash: m7e7m */
1
+ /* hash: 1f2q9 */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-modal-bg-primary: #fff;
@@ -20,23 +20,23 @@
20
20
  } :root {
21
21
  } :root {
22
22
  --popover-border-color: transparent;
23
- } .popover__component_1btnx {
23
+ } .popover__component_dqu0o {
24
24
  background-color: transparent;
25
25
  color: var(--color-light-text-primary);
26
- } .popover__inner_1btnx {
26
+ } .popover__inner_dqu0o {
27
27
  position: relative;
28
28
  background-color: var(--color-light-modal-bg-primary);
29
29
  box-shadow: var(--shadow-m);
30
30
  border: 1px solid var(--popover-border-color);
31
31
  box-sizing: border-box;
32
32
  will-change: transform;
33
- } .popover__scrollableContent_1btnx {
33
+ } .popover__scrollableContent_dqu0o {
34
34
  position: relative;
35
35
  z-index: 2;
36
36
  overflow-y: auto;
37
- } .popover__arrow_1btnx {
37
+ } .popover__arrow_dqu0o {
38
38
  z-index: 1;
39
- } .popover__arrow_1btnx:after {
39
+ } .popover__arrow_dqu0o:after {
40
40
  content: '';
41
41
  display: block;
42
42
  position: absolute;
@@ -46,67 +46,51 @@
46
46
  border: 1px solid var(--popover-border-color);
47
47
  box-sizing: border-box;
48
48
  transform: rotate(45deg);
49
- } .popover__component_1btnx[data-popper-placement='left'] .popover__arrow_1btnx,
50
- .popover__component_1btnx[data-popper-placement='left-start'] .popover__arrow_1btnx,
51
- .popover__component_1btnx[data-popper-placement='left-end'] .popover__arrow_1btnx {
49
+ } .popover__component_dqu0o[data-popper-placement='left'] .popover__arrow_dqu0o,
50
+ .popover__component_dqu0o[data-popper-placement='left-start'] .popover__arrow_dqu0o,
51
+ .popover__component_dqu0o[data-popper-placement='left-end'] .popover__arrow_dqu0o {
52
52
  right: 5px
53
- } .popover__component_1btnx[data-popper-placement='left'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='left-start'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='left-end'] .popover__arrow_1btnx:after {
53
+ } .popover__component_dqu0o[data-popper-placement='left'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='left-start'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='left-end'] .popover__arrow_dqu0o:after {
54
54
  top: -6px;
55
55
  border-bottom: none;
56
56
  border-left: none;
57
- } .popover__component_1btnx[data-popper-placement='left-start'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
58
- top: -7px;
59
- } .popover__component_1btnx[data-popper-placement='left-end'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
60
- top: -5px;
61
- } .popover__component_1btnx[data-popper-placement='right'] .popover__arrow_1btnx,
62
- .popover__component_1btnx[data-popper-placement='right-start'] .popover__arrow_1btnx,
63
- .popover__component_1btnx[data-popper-placement='right-end'] .popover__arrow_1btnx {
57
+ } .popover__component_dqu0o[data-popper-placement='right'] .popover__arrow_dqu0o,
58
+ .popover__component_dqu0o[data-popper-placement='right-start'] .popover__arrow_dqu0o,
59
+ .popover__component_dqu0o[data-popper-placement='right-end'] .popover__arrow_dqu0o {
64
60
  left: -7px
65
- } .popover__component_1btnx[data-popper-placement='right'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='right-start'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='right-end'] .popover__arrow_1btnx:after {
61
+ } .popover__component_dqu0o[data-popper-placement='right'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='right-start'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='right-end'] .popover__arrow_dqu0o:after {
66
62
  top: -6px;
67
63
  border-top: none;
68
64
  border-right: none;
69
- } .popover__component_1btnx[data-popper-placement='right-start'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
70
- top: -7px;
71
- } .popover__component_1btnx[data-popper-placement='right-end'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
72
- top: -5px;
73
- } .popover__component_1btnx[data-popper-placement='top'] .popover__arrow_1btnx,
74
- .popover__component_1btnx[data-popper-placement='top-start'] .popover__arrow_1btnx,
75
- .popover__component_1btnx[data-popper-placement='top-end'] .popover__arrow_1btnx {
65
+ } .popover__component_dqu0o[data-popper-placement='top'] .popover__arrow_dqu0o,
66
+ .popover__component_dqu0o[data-popper-placement='top-start'] .popover__arrow_dqu0o,
67
+ .popover__component_dqu0o[data-popper-placement='top-end'] .popover__arrow_dqu0o {
76
68
  bottom: 5px
77
- } .popover__component_1btnx[data-popper-placement='top'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='top-start'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='top-end'] .popover__arrow_1btnx:after {
69
+ } .popover__component_dqu0o[data-popper-placement='top'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='top-start'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='top-end'] .popover__arrow_dqu0o:after {
78
70
  left: -6px;
79
71
  border-top: none;
80
72
  border-left: none;
81
- } .popover__component_1btnx[data-popper-placement='top-start'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
82
- left: -17px;
83
- } .popover__component_1btnx[data-popper-placement='top-end'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
84
- left: 5px;
85
- } .popover__component_1btnx[data-popper-placement='bottom'] .popover__arrow_1btnx,
86
- .popover__component_1btnx[data-popper-placement='bottom-start'] .popover__arrow_1btnx,
87
- .popover__component_1btnx[data-popper-placement='bottom-end'] .popover__arrow_1btnx {
73
+ } .popover__component_dqu0o[data-popper-placement='bottom'] .popover__arrow_dqu0o,
74
+ .popover__component_dqu0o[data-popper-placement='bottom-start'] .popover__arrow_dqu0o,
75
+ .popover__component_dqu0o[data-popper-placement='bottom-end'] .popover__arrow_dqu0o {
88
76
  top: -7px
89
- } .popover__component_1btnx[data-popper-placement='bottom'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='bottom-start'] .popover__arrow_1btnx:after, .popover__component_1btnx[data-popper-placement='bottom-end'] .popover__arrow_1btnx:after {
77
+ } .popover__component_dqu0o[data-popper-placement='bottom'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='bottom-start'] .popover__arrow_dqu0o:after, .popover__component_dqu0o[data-popper-placement='bottom-end'] .popover__arrow_dqu0o:after {
90
78
  left: -6px;
91
79
  border-bottom: none;
92
80
  border-right: none;
93
- } .popover__component_1btnx[data-popper-placement='bottom-start'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
94
- left: -17px;
95
- } .popover__component_1btnx[data-popper-placement='bottom-end'].popover__arrowShift_1btnx .popover__arrow_1btnx:after {
96
- left: 5px;
97
- } .popover__enter_1btnx .popover__inner_1btnx {
81
+ } .popover__enter_dqu0o .popover__inner_dqu0o {
98
82
  opacity: 0;
99
83
  transform: scale(0.98);
100
- } .popover__enterActive_1btnx .popover__inner_1btnx {
84
+ } .popover__enterActive_dqu0o .popover__inner_dqu0o {
101
85
  opacity: 1;
102
86
  transform: scale(1);
103
87
  transition-property: opacity, transform;
104
88
  transition-timing-function: ease-in-out;
105
89
  transition-duration: 150ms;
106
- } .popover__exit_1btnx .popover__inner_1btnx {
90
+ } .popover__exit_dqu0o .popover__inner_dqu0o {
107
91
  opacity: 1;
108
92
  transform: scale(1);
109
- } .popover__exitActive_1btnx .popover__inner_1btnx {
93
+ } .popover__exitActive_dqu0o .popover__inner_dqu0o {
110
94
  opacity: 0;
111
95
  transform: scale(0.98);
112
96
  transition-property: opacity, transform;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-popover",
3
- "version": "6.2.0",
3
+ "version": "6.2.1",
4
4
  "description": "Popover component",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -19,7 +19,7 @@
19
19
  "@alfalab/core-components-stack": "^4.1.0",
20
20
  "@alfalab/hooks": "^1.13.0",
21
21
  "@juggle/resize-observer": "^3.3.1",
22
- "@popperjs/core": "^2.3.3",
22
+ "@popperjs/core": "^2.11.8",
23
23
  "classnames": "^2.3.1",
24
24
  "popper-max-size-modifier": "^0.2.0",
25
25
  "react-merge-refs": "^1.1.0",
package/src/Component.tsx CHANGED
@@ -55,7 +55,7 @@ export type PopoverProps = {
55
55
 
56
56
  /**
57
57
  * Запрещает поповеру менять свою позицию.
58
- * Например, если места снизу недостаточно,то он все равно будет показан снизу
58
+ * Например, если места снизу недостаточно, то он все равно будет показан снизу
59
59
  */
60
60
  preventFlip?: boolean;
61
61
 
@@ -176,11 +176,36 @@ const availableHieghtModifier = {
176
176
  },
177
177
  };
178
178
 
179
- /**
180
- * Минимальный размер anchorElement,
181
- * при котором возможно смещение стрелочки относительно центра
182
- */
183
- const MIN_ARROW_SHIFT_SIZE = 75;
179
+ const DEFAULT_OFFSET = [0, 0];
180
+
181
+ // Минимальное расстояние стрелки до края поповера
182
+ const MIN_DISTANCE_TO_EDGE = 24;
183
+
184
+ function getArrowPadding({
185
+ placement,
186
+ }: {
187
+ popper: { height: number; width: number };
188
+ reference: { height: number; width: number };
189
+ placement: Position;
190
+ }) {
191
+ if (placement === 'right-end' || placement === 'left-end') {
192
+ return { top: MIN_DISTANCE_TO_EDGE, right: 0, bottom: 0, left: 0 };
193
+ }
194
+
195
+ if (placement === 'top-start' || placement === 'bottom-start') {
196
+ return { top: 0, right: MIN_DISTANCE_TO_EDGE, bottom: 0, left: 0 };
197
+ }
198
+
199
+ if (placement === 'right-start' || placement === 'left-start') {
200
+ return { top: 0, right: 0, bottom: MIN_DISTANCE_TO_EDGE, left: 0 };
201
+ }
202
+
203
+ if (placement === 'top-end' || placement === 'bottom-end') {
204
+ return { top: 0, right: 0, bottom: 0, left: MIN_DISTANCE_TO_EDGE };
205
+ }
206
+
207
+ return 0;
208
+ }
184
209
 
185
210
  export const Popover = forwardRef<HTMLDivElement, PopoverProps>(
186
211
  (
@@ -190,7 +215,7 @@ export const Popover = forwardRef<HTMLDivElement, PopoverProps>(
190
215
  transition = DEFAULT_TRANSITION,
191
216
  anchorElement,
192
217
  useAnchorWidth,
193
- offset = [0, 0],
218
+ offset = DEFAULT_OFFSET,
194
219
  withArrow = false,
195
220
  withTransition = true,
196
221
  position = 'left',
@@ -212,7 +237,6 @@ export const Popover = forwardRef<HTMLDivElement, PopoverProps>(
212
237
  const [referenceElement, setReferenceElement] = useState<RefElement>(anchorElement);
213
238
  const [popperElement, setPopperElement] = useState<RefElement>(null);
214
239
  const [arrowElement, setArrowElement] = useState<RefElement>(null);
215
- const [arrowShift, setArrowShift] = useState(false);
216
240
 
217
241
  const updatePopperRef = useRef<() => void>();
218
242
 
@@ -223,7 +247,13 @@ export const Popover = forwardRef<HTMLDivElement, PopoverProps>(
223
247
  const modifiers: PopperModifier[] = [{ name: 'offset', options: { offset } }];
224
248
 
225
249
  if (withArrow) {
226
- modifiers.push({ name: 'arrow', options: { element: arrowElement } });
250
+ modifiers.push({
251
+ name: 'arrow',
252
+ options: {
253
+ element: arrowElement,
254
+ padding: getArrowPadding,
255
+ },
256
+ });
227
257
  }
228
258
 
229
259
  if (preventFlip) {
@@ -302,25 +332,6 @@ export const Popover = forwardRef<HTMLDivElement, PopoverProps>(
302
332
  return () => ({});
303
333
  }, [anchorElement, useAnchorWidth]);
304
334
 
305
- /**
306
- * По дизайну, если у тултипа позиционирование -start/-end, то стрелочка немного сдвигается вбок.
307
- * Но если anchorElement слишком маленький, то стрелочка сдвигаться не должна.
308
- */
309
- useEffect(() => {
310
- const shiftedPosition = position.includes('-start') || position.includes('-end');
311
-
312
- if (shiftedPosition && referenceElement) {
313
- const { width, height } = referenceElement.getBoundingClientRect();
314
-
315
- const size =
316
- position.includes('left') || position.includes('right') ? height : width;
317
-
318
- if (size >= MIN_ARROW_SHIFT_SIZE) {
319
- setArrowShift(true);
320
- }
321
- }
322
- }, [referenceElement, position]);
323
-
324
335
  const renderContent = (computedZIndex: number) => (
325
336
  <div
326
337
  ref={mergeRefs([ref, popperRef, setPopperElement])}
@@ -331,9 +342,7 @@ export const Popover = forwardRef<HTMLDivElement, PopoverProps>(
331
342
  ...(popperStyles.popper?.transform ? null : { visibility: 'hidden' }),
332
343
  }}
333
344
  data-test-id={dataTestId}
334
- className={cn(styles.component, className, {
335
- [styles.arrowShift]: arrowShift,
336
- })}
345
+ className={cn(styles.component, className)}
337
346
  {...attributes.popper}
338
347
  >
339
348
  <div className={cn(styles.inner, popperClassName)} ref={innerRef}>
@@ -52,14 +52,6 @@
52
52
  }
53
53
  }
54
54
 
55
- .component[data-popper-placement='left-start'].arrowShift .arrow:after {
56
- top: -7px;
57
- }
58
-
59
- .component[data-popper-placement='left-end'].arrowShift .arrow:after {
60
- top: -5px;
61
- }
62
-
63
55
  .component[data-popper-placement='right'] .arrow,
64
56
  .component[data-popper-placement='right-start'] .arrow,
65
57
  .component[data-popper-placement='right-end'] .arrow {
@@ -72,14 +64,6 @@
72
64
  }
73
65
  }
74
66
 
75
- .component[data-popper-placement='right-start'].arrowShift .arrow:after {
76
- top: -7px;
77
- }
78
-
79
- .component[data-popper-placement='right-end'].arrowShift .arrow:after {
80
- top: -5px;
81
- }
82
-
83
67
  .component[data-popper-placement='top'] .arrow,
84
68
  .component[data-popper-placement='top-start'] .arrow,
85
69
  .component[data-popper-placement='top-end'] .arrow {
@@ -92,14 +76,6 @@
92
76
  }
93
77
  }
94
78
 
95
- .component[data-popper-placement='top-start'].arrowShift .arrow:after {
96
- left: -17px;
97
- }
98
-
99
- .component[data-popper-placement='top-end'].arrowShift .arrow:after {
100
- left: 5px;
101
- }
102
-
103
79
  .component[data-popper-placement='bottom'] .arrow,
104
80
  .component[data-popper-placement='bottom-start'] .arrow,
105
81
  .component[data-popper-placement='bottom-end'] .arrow {
@@ -112,14 +88,6 @@
112
88
  }
113
89
  }
114
90
 
115
- .component[data-popper-placement='bottom-start'].arrowShift .arrow:after {
116
- left: -17px;
117
- }
118
-
119
- .component[data-popper-placement='bottom-end'].arrowShift .arrow:after {
120
- left: 5px;
121
- }
122
-
123
91
  .enter .inner {
124
92
  opacity: 0;
125
93
  transform: scale(0.98);