28 lines
		
	
	
		
			784 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			784 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { ref } from 'valtio'
 | 
						|
import { AlertState, alertState } from '../../components/AlertDialog'
 | 
						|
 | 
						|
export const showAlert = (
 | 
						|
  title: string,
 | 
						|
  opts: Omit<Partial<AlertState>, 'title' | 'isOpen'> = {}
 | 
						|
) => {
 | 
						|
  const { body: _body, confirmPrefix: _confirmPrefix, ...rest } = opts
 | 
						|
  const body = _body && typeof _body === 'object' ? ref(_body) : _body
 | 
						|
  const confirmPrefix =
 | 
						|
    _confirmPrefix && typeof _confirmPrefix === 'object' ? ref(_confirmPrefix) : _confirmPrefix
 | 
						|
 | 
						|
  const nwState: AlertState = {
 | 
						|
    isOpen: true,
 | 
						|
    title,
 | 
						|
    body,
 | 
						|
    confirmPrefix,
 | 
						|
    cancelText: undefined,
 | 
						|
    confirmText: undefined,
 | 
						|
    onCancel: undefined,
 | 
						|
    onConfirm: undefined,
 | 
						|
    ...rest
 | 
						|
  }
 | 
						|
  Object.entries(nwState).forEach(([key, value]) => {
 | 
						|
    ;(alertState as any)[key] = value
 | 
						|
  })
 | 
						|
}
 |