index.mjs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { isNumber } from "../../utils/types.mjs";
  2. import { buildProps } from "../../utils/vue/props/runtime.mjs";
  3. import { useTimeout } from "../use-timeout/index.mjs";
  4. import { unref } from "vue";
  5. //#region ../../packages/hooks/use-delayed-toggle/index.ts
  6. /**
  7. * @deprecated Removed after 3.0.0, Use `UseDelayedToggleProps` instead.
  8. */
  9. const useDelayedToggleProps = buildProps({
  10. showAfter: {
  11. type: Number,
  12. default: 0
  13. },
  14. hideAfter: {
  15. type: Number,
  16. default: 200
  17. },
  18. autoClose: {
  19. type: Number,
  20. default: 0
  21. }
  22. });
  23. const useDelayedTogglePropsDefaults = {
  24. showAfter: 0,
  25. hideAfter: 200,
  26. autoClose: 0
  27. };
  28. const useDelayedToggle = ({ showAfter, hideAfter, autoClose, open, close }) => {
  29. const { registerTimeout } = useTimeout();
  30. const { registerTimeout: registerTimeoutForAutoClose, cancelTimeout: cancelTimeoutForAutoClose } = useTimeout();
  31. const onOpen = (event, delay = unref(showAfter)) => {
  32. registerTimeout(() => {
  33. open(event);
  34. const _autoClose = unref(autoClose);
  35. if (isNumber(_autoClose) && _autoClose > 0) registerTimeoutForAutoClose(() => {
  36. close(event);
  37. }, _autoClose);
  38. }, delay);
  39. };
  40. const onClose = (event, delay = unref(hideAfter)) => {
  41. cancelTimeoutForAutoClose();
  42. registerTimeout(() => {
  43. close(event);
  44. }, delay);
  45. };
  46. return {
  47. onOpen,
  48. onClose
  49. };
  50. };
  51. //#endregion
  52. export { useDelayedToggle, useDelayedToggleProps, useDelayedTogglePropsDefaults };
  53. //# sourceMappingURL=index.mjs.map