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
 |