Dashboard sipadu mbip
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

Toast.js 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
  3. import React, { useEffect, useRef, useMemo, useCallback } from 'react';
  4. import classNames from 'classnames';
  5. import useTimeout from '@restart/hooks/useTimeout';
  6. import Fade from './Fade';
  7. import Header from './ToastHeader';
  8. import Body from './ToastBody';
  9. import { useBootstrapPrefix } from './ThemeProvider';
  10. import ToastContext from './ToastContext';
  11. var defaultProps = {
  12. animation: true,
  13. autohide: false,
  14. delay: 3000,
  15. show: true,
  16. transition: Fade
  17. };
  18. var Toast = React.forwardRef(function (_ref, ref) {
  19. var bsPrefix = _ref.bsPrefix,
  20. className = _ref.className,
  21. children = _ref.children,
  22. Transition = _ref.transition,
  23. show = _ref.show,
  24. animation = _ref.animation,
  25. delay = _ref.delay,
  26. autohide = _ref.autohide,
  27. onClose = _ref.onClose,
  28. props = _objectWithoutPropertiesLoose(_ref, ["bsPrefix", "className", "children", "transition", "show", "animation", "delay", "autohide", "onClose"]);
  29. bsPrefix = useBootstrapPrefix('toast');
  30. var delayRef = useRef(delay);
  31. var onCloseRef = useRef(onClose);
  32. useEffect(function () {
  33. // We use refs for these, because we don't want to restart the autohide
  34. // timer in case these values change.
  35. delayRef.current = delay;
  36. onCloseRef.current = onClose;
  37. }, [delay, onClose]);
  38. var autohideTimeout = useTimeout();
  39. var autohideFunc = useCallback(function () {
  40. if (!(autohide && show)) {
  41. return;
  42. }
  43. onCloseRef.current();
  44. }, [autohide, show]);
  45. autohideTimeout.set(autohideFunc, delayRef.current);
  46. var useAnimation = useMemo(function () {
  47. return Transition && animation;
  48. }, [Transition, animation]);
  49. var toast = React.createElement("div", _extends({}, props, {
  50. ref: ref,
  51. className: classNames(bsPrefix, className, !useAnimation && show && 'show'),
  52. role: "alert",
  53. "aria-live": "assertive",
  54. "aria-atomic": "true"
  55. }), children);
  56. var toastContext = {
  57. onClose: onClose
  58. };
  59. return React.createElement(ToastContext.Provider, {
  60. value: toastContext
  61. }, useAnimation ? React.createElement(Transition, {
  62. in: show
  63. }, toast) : toast);
  64. });
  65. Toast.defaultProps = defaultProps;
  66. Toast.displayName = 'Toast';
  67. Toast.Body = Body;
  68. Toast.Header = Header;
  69. export default Toast;