You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.4 KiB

1 month ago
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var index = require('../use-timeout/index.js');
  5. var runtime = require('../../utils/vue/props/runtime.js');
  6. var types = require('../../utils/types.js');
  7. const useDelayedToggleProps = runtime.buildProps({
  8. showAfter: {
  9. type: Number,
  10. default: 0
  11. },
  12. hideAfter: {
  13. type: Number,
  14. default: 200
  15. },
  16. autoClose: {
  17. type: Number,
  18. default: 0
  19. }
  20. });
  21. const useDelayedToggle = ({
  22. showAfter,
  23. hideAfter,
  24. autoClose,
  25. open,
  26. close
  27. }) => {
  28. const { registerTimeout } = index.useTimeout();
  29. const {
  30. registerTimeout: registerTimeoutForAutoClose,
  31. cancelTimeout: cancelTimeoutForAutoClose
  32. } = index.useTimeout();
  33. const onOpen = (event) => {
  34. registerTimeout(() => {
  35. open(event);
  36. const _autoClose = vue.unref(autoClose);
  37. if (types.isNumber(_autoClose) && _autoClose > 0) {
  38. registerTimeoutForAutoClose(() => {
  39. close(event);
  40. }, _autoClose);
  41. }
  42. }, vue.unref(showAfter));
  43. };
  44. const onClose = (event) => {
  45. cancelTimeoutForAutoClose();
  46. registerTimeout(() => {
  47. close(event);
  48. }, vue.unref(hideAfter));
  49. };
  50. return {
  51. onOpen,
  52. onClose
  53. };
  54. };
  55. exports.useDelayedToggle = useDelayedToggle;
  56. exports.useDelayedToggleProps = useDelayedToggleProps;
  57. //# sourceMappingURL=index.js.map