@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
1 lines • 3.1 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-delayed-toggle/index.ts"],"sourcesContent":["import { unref } from 'vue'\nimport { buildProps, isNumber } from '@vuesax-alpha/utils'\nimport { useTimeout } from '../use-timeout'\n\nimport type { ExtractPropTypes, ToRefs } from 'vue'\n\nexport const useDelayedToggleProps = buildProps({\n showAfter: {\n type: Number,\n validator: (value: number) => isNumber(value) && value >= 0,\n default: 0,\n },\n hideAfter: {\n type: Number,\n validator: (value: number) => isNumber(value) && value >= 0,\n default: 200,\n },\n /**\n * @description disappear automatically, in millisecond\n */\n autoClose: {\n type: Number,\n default: 0,\n },\n} as const)\n\nexport type UseDelayedToggleProps = {\n open: (event?: Event) => void\n close: (event?: Event) => void\n} & ToRefs<ExtractPropTypes<typeof useDelayedToggleProps>>\n\nexport const useDelayedToggle = ({\n showAfter,\n hideAfter,\n autoClose,\n open,\n close,\n}: UseDelayedToggleProps) => {\n const { registerTimeout } = useTimeout()\n\n const {\n registerTimeout: registerTimeoutForAutoClose,\n cancelTimeout: cancelTimeoutForAutoClose,\n } = useTimeout()\n\n const onOpen = (event?: Event) => {\n registerTimeout(() => {\n open(event)\n\n const _autoClose = unref(autoClose)\n if (isNumber(_autoClose) && _autoClose > 0) {\n registerTimeoutForAutoClose(() => {\n close(event)\n }, _autoClose)\n }\n }, unref(showAfter))\n }\n\n const onClose = (event?: Event) => {\n cancelTimeoutForAutoClose()\n\n registerTimeout(() => {\n close(event)\n }, unref(hideAfter))\n }\n\n return {\n onOpen,\n onClose,\n }\n}\n"],"names":[],"mappings":";;;;;;AAMO,MAAM,wBAAwB,UAAW,CAAA;AAAA,EAC9C,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,IACN,WAAW,CAAC,KAAA,KAAkB,QAAS,CAAA,KAAK,KAAK,KAAS,IAAA,CAAA;AAAA,IAC1D,OAAS,EAAA,CAAA;AAAA,GACX;AAAA,EACA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,IACN,WAAW,CAAC,KAAA,KAAkB,QAAS,CAAA,KAAK,KAAK,KAAS,IAAA,CAAA;AAAA,IAC1D,OAAS,EAAA,GAAA;AAAA,GACX;AAAA,EAIA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,CAAA;AAAA,GACX;AACF,CAAU,EAAA;AAOH,MAAM,mBAAmB,CAAC;AAAA,EAC/B,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AACF,CAA6B,KAAA;AAC3B,EAAM,MAAA,EAAE,eAAgB,EAAA,GAAI,UAAW,EAAA,CAAA;AAEvC,EAAM,MAAA;AAAA,IACJ,eAAiB,EAAA,2BAAA;AAAA,IACjB,aAAe,EAAA,yBAAA;AAAA,MACb,UAAW,EAAA,CAAA;AAEf,EAAM,MAAA,MAAA,GAAS,CAAC,KAAkB,KAAA;AAChC,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AAEV,MAAM,MAAA,UAAA,GAAa,MAAM,SAAS,CAAA,CAAA;AAClC,MAAA,IAAI,QAAS,CAAA,UAAU,CAAK,IAAA,UAAA,GAAa,CAAG,EAAA;AAC1C,QAAA,2BAAA,CAA4B,MAAM;AAChC,UAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,WACV,UAAU,CAAA,CAAA;AAAA,OACf;AAAA,KACF,EAAG,KAAM,CAAA,SAAS,CAAC,CAAA,CAAA;AAAA,GACrB,CAAA;AAEA,EAAM,MAAA,OAAA,GAAU,CAAC,KAAkB,KAAA;AACjC,IAA0B,yBAAA,EAAA,CAAA;AAE1B,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,KACb,EAAG,KAAM,CAAA,SAAS,CAAC,CAAA,CAAA;AAAA,GACrB,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,OAAA;AAAA,GACF,CAAA;AACF;;;;"}