62 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
Object.defineProperty(exports, '__esModule', { value: true });
 | 
						|
 | 
						|
var vue = require('vue');
 | 
						|
var index = require('../use-timeout/index.js');
 | 
						|
var runtime = require('../../utils/vue/props/runtime.js');
 | 
						|
var types = require('../../utils/types.js');
 | 
						|
 | 
						|
const useDelayedToggleProps = runtime.buildProps({
 | 
						|
  showAfter: {
 | 
						|
    type: Number,
 | 
						|
    default: 0
 | 
						|
  },
 | 
						|
  hideAfter: {
 | 
						|
    type: Number,
 | 
						|
    default: 200
 | 
						|
  },
 | 
						|
  autoClose: {
 | 
						|
    type: Number,
 | 
						|
    default: 0
 | 
						|
  }
 | 
						|
});
 | 
						|
const useDelayedToggle = ({
 | 
						|
  showAfter,
 | 
						|
  hideAfter,
 | 
						|
  autoClose,
 | 
						|
  open,
 | 
						|
  close
 | 
						|
}) => {
 | 
						|
  const { registerTimeout } = index.useTimeout();
 | 
						|
  const {
 | 
						|
    registerTimeout: registerTimeoutForAutoClose,
 | 
						|
    cancelTimeout: cancelTimeoutForAutoClose
 | 
						|
  } = index.useTimeout();
 | 
						|
  const onOpen = (event, delay = vue.unref(showAfter)) => {
 | 
						|
    registerTimeout(() => {
 | 
						|
      open(event);
 | 
						|
      const _autoClose = vue.unref(autoClose);
 | 
						|
      if (types.isNumber(_autoClose) && _autoClose > 0) {
 | 
						|
        registerTimeoutForAutoClose(() => {
 | 
						|
          close(event);
 | 
						|
        }, _autoClose);
 | 
						|
      }
 | 
						|
    }, delay);
 | 
						|
  };
 | 
						|
  const onClose = (event, delay = vue.unref(hideAfter)) => {
 | 
						|
    cancelTimeoutForAutoClose();
 | 
						|
    registerTimeout(() => {
 | 
						|
      close(event);
 | 
						|
    }, delay);
 | 
						|
  };
 | 
						|
  return {
 | 
						|
    onOpen,
 | 
						|
    onClose
 | 
						|
  };
 | 
						|
};
 | 
						|
 | 
						|
exports.useDelayedToggle = useDelayedToggle;
 | 
						|
exports.useDelayedToggleProps = useDelayedToggleProps;
 | 
						|
//# sourceMappingURL=index.js.map
 |