visits-style 1.2.0 → 1.3.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.
@@ -23,6 +23,8 @@ interface Props extends HTMLAttributes<HTMLDivElement> {
23
23
  timeout?: number;
24
24
  /** モーダル外に表示するElements */
25
25
  external?: React.ReactNode;
26
+ /** モーダルのtransition exitが完了した時に発火されるcallback */
27
+ onExited?: () => void;
26
28
  }
27
- export default function Modal({ show, children, timeout, color, closeModal, external, className, closeOnOverlay, closeOnEsc, ...rest }: Props): JSX.Element;
29
+ export default function Modal({ show, children, timeout, color, closeModal, external, className, closeOnOverlay, closeOnEsc, onExited, ...rest }: Props): JSX.Element;
28
30
  export {};
@@ -1,5 +1,5 @@
1
1
  import React, { HTMLAttributes } from 'react';
2
- import { Placement } from '@popperjs/core';
2
+ import { Placement } from '@floating-ui/core';
3
3
  interface Props extends HTMLAttributes<HTMLDivElement> {
4
4
  /** ボタンの内容 */
5
5
  label: React.ReactElement;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { Placement } from '@popperjs/core';
2
+ import { Placement } from '@floating-ui/core';
3
3
  import { ColorType } from '../../types';
4
4
  interface TooltipProps {
5
5
  /** 吹き出しとして表示したい内容 */
@@ -9,8 +9,8 @@ var React__default = _interopDefault(React);
9
9
  var styled = require('styled-components');
10
10
  var styled__default = _interopDefault(styled);
11
11
  var polished = require('polished');
12
- var reactDom = require('react-dom');
13
- var core = require('@popperjs/core');
12
+ var reactDom = require('@floating-ui/react-dom');
13
+ var reactDom$1 = require('react-dom');
14
14
  var reactTransitionGroup = require('react-transition-group');
15
15
 
16
16
  function _defineProperty(obj, key, value) {
@@ -1190,70 +1190,10 @@ React__default.forwardRef(function (_ref, ref) {
1190
1190
  }, [container, disabled]);
1191
1191
  return mountNode ?
1192
1192
  /*#__PURE__*/
1193
- reactDom.createPortal(children, mountNode) : mountNode;
1193
+ reactDom$1.createPortal(children, mountNode) : mountNode;
1194
1194
  });
1195
1195
  Portal.displayName = 'Portal';
1196
1196
 
1197
- function usePopper(referenceElement, popperElement, options) {
1198
- if (options === void 0) {
1199
- options = {};
1200
- }
1201
-
1202
- var instance = React.useRef(null);
1203
- var popperOptions = React.useMemo(function () {
1204
- return {
1205
- placement: options.placement || 'bottom',
1206
- strategy: options.strategy || 'absolute',
1207
- modifiers: [{
1208
- name: 'preventOverflow',
1209
- enabled: true
1210
- }, options.offset && {
1211
- name: 'offset',
1212
- options: {
1213
- offset: [options.offset.x, options.offset.y]
1214
- }
1215
- }].filter(Boolean)
1216
- };
1217
- }, [options.placement, options.strategy, options.offset]);
1218
- useIsomorphicLayoutEffect(function () {
1219
- if (instance.current) {
1220
- instance.current.setOptions(popperOptions);
1221
- }
1222
- }, [popperOptions]);
1223
- useIsomorphicLayoutEffect(function () {
1224
- return function () {
1225
- if (instance.current) {
1226
- instance.current.destroy();
1227
- instance.current = null;
1228
- }
1229
- };
1230
- }, []);
1231
- var open = React.useCallback(function () {
1232
- if (instance.current) {
1233
- instance.current.destroy();
1234
- instance.current = null;
1235
- }
1236
-
1237
- if (referenceElement == null || popperElement == null) {
1238
- return;
1239
- }
1240
-
1241
- var refEl = // @ts-ignore
1242
- 'current' in referenceElement ? referenceElement.current : referenceElement; // @ts-ignore
1243
-
1244
- var pEl = 'current' in popperElement ? popperElement.current : popperElement;
1245
- if (refEl === null || pEl === null) return;
1246
- instance.current = core.createPopper(refEl, pEl, popperOptions); // eslint-disable-next-line react-hooks/exhaustive-deps
1247
- }, [popperOptions]);
1248
- var close = React.useCallback(function () {
1249
- if (instance.current) {
1250
- instance.current.destroy();
1251
- instance.current = null;
1252
- }
1253
- }, []);
1254
- return [open, close];
1255
- }
1256
-
1257
1197
  function wrapEvent(child, handlerName, ourHandler) {
1258
1198
  return function (event) {
1259
1199
  if (typeof child !== 'string' && child.props[handlerName]) {
@@ -1280,30 +1220,32 @@ function Tooltip(_ref) {
1280
1220
  x: 0,
1281
1221
  y: 6
1282
1222
  } : _ref$offset;
1283
- var parent = React.useRef(null);
1284
- var tooltip = React.useRef(null);
1223
+
1224
+ var _useFloating = reactDom.useFloating({
1225
+ placement: position,
1226
+ middleware: [reactDom.shift(), reactDom.flip(), reactDom.offset({
1227
+ mainAxis: offset.y,
1228
+ crossAxis: offset.x
1229
+ })],
1230
+ whileElementsMounted: reactDom.autoUpdate
1231
+ }),
1232
+ reference = _useFloating.reference,
1233
+ floating = _useFloating.floating,
1234
+ strategy = _useFloating.strategy,
1235
+ x = _useFloating.x,
1236
+ y = _useFloating.y;
1285
1237
 
1286
1238
  var _useState = React.useState(false),
1287
1239
  _useState2 = _slicedToArray(_useState, 2),
1288
1240
  open = _useState2[0],
1289
1241
  setOpen = _useState2[1];
1290
1242
 
1291
- var _usePopper = usePopper(parent, tooltip, {
1292
- placement: position,
1293
- offset: offset
1294
- }),
1295
- _usePopper2 = _slicedToArray(_usePopper, 2),
1296
- openPopper = _usePopper2[0],
1297
- closePopper = _usePopper2[1];
1298
-
1299
1243
  var handleOpen = function handleOpen() {
1300
1244
  setOpen(true);
1301
- requestAnimationFrame(openPopper);
1302
1245
  };
1303
1246
 
1304
1247
  var handleClose = function handleClose() {
1305
1248
  setOpen(false);
1306
- closePopper();
1307
1249
  };
1308
1250
 
1309
1251
  var child = typeof children === 'string' ?
@@ -1314,7 +1256,7 @@ function Tooltip(_ref) {
1314
1256
  React__default.createElement(React__default.Fragment, null,
1315
1257
  /*#__PURE__*/
1316
1258
  React.cloneElement(React.Children.only(child), {
1317
- ref: parent,
1259
+ ref: reference,
1318
1260
  onMouseEnter: wrapEvent(child, 'onMouseEnter', handleOpen),
1319
1261
  onMouseLeave: wrapEvent(child, 'onMouseLeave', handleClose),
1320
1262
  onFocus: wrapEvent(child, 'onFocus', handleOpen),
@@ -1325,9 +1267,14 @@ function Tooltip(_ref) {
1325
1267
  /*#__PURE__*/
1326
1268
  React__default.createElement(TooltipWrapper, {
1327
1269
  className: className,
1328
- ref: tooltip,
1270
+ ref: floating,
1329
1271
  role: "tooltip",
1330
- color: color
1272
+ color: color,
1273
+ style: {
1274
+ position: strategy,
1275
+ top: y || 0,
1276
+ left: x || 0
1277
+ }
1331
1278
  }, label)))
1332
1279
  );
1333
1280
  }
@@ -1486,42 +1433,42 @@ React.forwardRef(function (_ref, ref) {
1486
1433
  } : _ref$offset,
1487
1434
  rest = _objectWithoutProperties(_ref, _excluded$a);
1488
1435
 
1489
- var parent = React.useRef(null);
1490
- var popover = React.useRef(null);
1491
-
1492
1436
  var _useState = React.useState(false),
1493
1437
  _useState2 = _slicedToArray(_useState, 2),
1494
1438
  open = _useState2[0],
1495
1439
  setOpen = _useState2[1];
1496
1440
 
1497
- var _usePopper = usePopper(parent, popover, {
1441
+ var _useFloating = reactDom.useFloating({
1498
1442
  placement: position,
1499
- offset: offset
1443
+ middleware: [reactDom.shift(), reactDom.flip(), reactDom.offset({
1444
+ mainAxis: offset.y,
1445
+ crossAxis: offset.x
1446
+ })],
1447
+ whileElementsMounted: reactDom.autoUpdate
1500
1448
  }),
1501
- _usePopper2 = _slicedToArray(_usePopper, 2),
1502
- openPopper = _usePopper2[0],
1503
- closePopper = _usePopper2[1];
1449
+ reference = _useFloating.reference,
1450
+ floating = _useFloating.floating,
1451
+ strategy = _useFloating.strategy,
1452
+ x = _useFloating.x,
1453
+ y = _useFloating.y;
1504
1454
 
1505
1455
  var handleFocus = function handleFocus(e) {
1506
1456
  stopPropagation(e);
1507
1457
  setOpen(true);
1508
- requestAnimationFrame(openPopper);
1509
1458
  if (onOpen) onOpen();
1510
1459
  };
1511
1460
 
1512
1461
  var handleBlur = function handleBlur(e) {
1513
1462
  stopPropagation(e);
1514
- closePopper();
1515
1463
  setOpen(false);
1516
1464
  if (onClose) onClose();
1517
1465
  };
1518
1466
 
1519
1467
  React.useEffect(function () {
1520
1468
  if (disabled && open) {
1521
- closePopper();
1522
1469
  setOpen(false);
1523
1470
  }
1524
- }, [disabled, open, closePopper]);
1471
+ }, [disabled, open]);
1525
1472
  React.useImperativeHandle(ref, function () {
1526
1473
  return {
1527
1474
  open: handleFocus,
@@ -1533,7 +1480,7 @@ React.forwardRef(function (_ref, ref) {
1533
1480
  React__default.createElement(React__default.Fragment, null,
1534
1481
  /*#__PURE__*/
1535
1482
  React.cloneElement(React.Children.only(label), {
1536
- ref: parent,
1483
+ ref: reference,
1537
1484
  tabIndex: 0,
1538
1485
  role: 'button',
1539
1486
  onClick: wrapEvent(label, 'onClick', handleFocus),
@@ -1545,9 +1492,14 @@ React.forwardRef(function (_ref, ref) {
1545
1492
  React__default.createElement(Tooltip$1, Object.assign({
1546
1493
  role: "tooltip",
1547
1494
  className: className,
1548
- ref: popover,
1495
+ ref: floating,
1549
1496
  color: color,
1550
- onClick: stopPropagation
1497
+ onClick: stopPropagation,
1498
+ style: {
1499
+ position: strategy,
1500
+ top: y || 0,
1501
+ left: x || 0
1502
+ }
1551
1503
  }, rest), children),
1552
1504
  /*#__PURE__*/
1553
1505
  React__default.createElement(Shadow, {
@@ -1588,7 +1540,7 @@ function useScrollFix(show) {
1588
1540
  }, [show]);
1589
1541
  }
1590
1542
 
1591
- var _excluded$b = ["show", "children", "timeout", "color", "closeModal", "external", "className", "closeOnOverlay", "closeOnEsc"];
1543
+ var _excluded$b = ["show", "children", "timeout", "color", "closeModal", "external", "className", "closeOnOverlay", "closeOnEsc", "onExited"];
1592
1544
 
1593
1545
  var _templateObject$i, _templateObject2$a, _templateObject3$5;
1594
1546
 
@@ -1621,6 +1573,7 @@ function Modal(_ref2) {
1621
1573
  external = _ref2.external,
1622
1574
  className = _ref2.className,
1623
1575
  closeOnOverlay = _ref2.closeOnOverlay,
1576
+ onExited = _ref2.onExited,
1624
1577
  rest = _objectWithoutProperties(_ref2, _excluded$b);
1625
1578
 
1626
1579
  useScrollFix(show);
@@ -1631,6 +1584,7 @@ function Modal(_ref2) {
1631
1584
  React__default.createElement(reactTransitionGroup.Transition, {
1632
1585
  "in": show,
1633
1586
  timeout: timeout,
1587
+ onExited: onExited,
1634
1588
  unmountOnExit: true,
1635
1589
  mountOnEnter: true
1636
1590
  }, function (state) {