12 changed files with 375 additions and 285 deletions
			
			
		- 
					1build/optimize.ts
 - 
					29package.json
 - 
					509pnpm-lock.yaml
 - 
					2public/serverConfig.json
 - 
					17src/components/RePureTableBar/src/bar.tsx
 - 
					2src/directives/auth/index.ts
 - 
					2src/directives/copy/index.ts
 - 
					1src/directives/index.ts
 - 
					63src/directives/longpress/index.ts
 - 
					2src/directives/optimize/index.ts
 - 
					22src/layout/components/search/components/SearchModal.vue
 - 
					8src/layout/components/search/components/SearchResult.vue
 
						
							
						
						
							509
	
						
						pnpm-lock.yaml
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						@ -1,3 +1,4 @@ | 
			
		|||||
export * from "./auth"; | 
				export * from "./auth"; | 
			
		||||
export * from "./copy"; | 
				export * from "./copy"; | 
			
		||||
 | 
				export * from "./longpress"; | 
			
		||||
export * from "./optimize"; | 
				export * from "./optimize"; | 
			
		||||
@ -0,0 +1,63 @@ | 
			
		|||||
 | 
				import { useEventListener } from "@vueuse/core"; | 
			
		||||
 | 
				import type { Directive, DirectiveBinding } from "vue"; | 
			
		||||
 | 
				import { subBefore, subAfter, isFunction } from "@pureadmin/utils"; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				export const longpress: Directive = { | 
			
		||||
 | 
				  mounted(el: HTMLElement, binding: DirectiveBinding) { | 
			
		||||
 | 
				    const cb = binding.value; | 
			
		||||
 | 
				    if (cb && isFunction(cb)) { | 
			
		||||
 | 
				      let timer = null; | 
			
		||||
 | 
				      let interTimer = null; | 
			
		||||
 | 
				      let num = 500; | 
			
		||||
 | 
				      let interNum = null; | 
			
		||||
 | 
				      const isInter = binding?.arg?.includes(":") ?? false; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				      if (isInter) { | 
			
		||||
 | 
				        num = Number(subBefore(binding.arg, ":")); | 
			
		||||
 | 
				        interNum = Number(subAfter(binding.arg, ":")); | 
			
		||||
 | 
				      } else if (binding.arg) { | 
			
		||||
 | 
				        num = Number(binding.arg); | 
			
		||||
 | 
				      } | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				      const clear = () => { | 
			
		||||
 | 
				        if (timer) { | 
			
		||||
 | 
				          clearTimeout(timer); | 
			
		||||
 | 
				          timer = null; | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				        if (interTimer) { | 
			
		||||
 | 
				          clearInterval(interTimer); | 
			
		||||
 | 
				          interTimer = null; | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				      }; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				      const onDownInter = (ev: PointerEvent) => { | 
			
		||||
 | 
				        ev.preventDefault(); | 
			
		||||
 | 
				        if (interTimer === null) { | 
			
		||||
 | 
				          interTimer = setInterval(() => cb(), interNum); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				      }; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				      const onDown = (ev: PointerEvent) => { | 
			
		||||
 | 
				        clear(); | 
			
		||||
 | 
				        ev.preventDefault(); | 
			
		||||
 | 
				        if (timer === null) { | 
			
		||||
 | 
				          timer = isInter | 
			
		||||
 | 
				            ? setTimeout(() => { | 
			
		||||
 | 
				                cb(); | 
			
		||||
 | 
				                onDownInter(ev); | 
			
		||||
 | 
				              }, num) | 
			
		||||
 | 
				            : setTimeout(() => cb(), num); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				      }; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				      // Register using addEventListener on mounted, and removeEventListener automatically on unmounted
 | 
			
		||||
 | 
				      useEventListener(el, "pointerdown", onDown); | 
			
		||||
 | 
				      useEventListener(el, "pointerup", clear); | 
			
		||||
 | 
				      useEventListener(el, "pointerleave", clear); | 
			
		||||
 | 
				    } else { | 
			
		||||
 | 
				      throw new Error( | 
			
		||||
 | 
				        '[Directive: longpress]: need callback and callback must be a function! Like v-longpress="callback"' | 
			
		||||
 | 
				      ); | 
			
		||||
 | 
				    } | 
			
		||||
 | 
				  } | 
			
		||||
 | 
				}; | 
			
		||||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue