StackedRouter: add replace: all
This commit is contained in:
		
							parent
							
								
									4c717a0cb7
								
							
						
					
					
						commit
						83e2e6e169
					
				
					 2 changed files with 15 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -64,7 +64,7 @@ export function useSessions() {
 | 
			
		|||
    if (sessions().length > 0) return;
 | 
			
		||||
    push(
 | 
			
		||||
      "/accounts/sign-in?back=" + encodeURIComponent(location.pathname),
 | 
			
		||||
      { replace: true },
 | 
			
		||||
      { replace: "all" },
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,9 +36,9 @@ export type NewFrameOptions<T> = (T extends undefined
 | 
			
		|||
    }
 | 
			
		||||
  : { state: T }) & {
 | 
			
		||||
  /**
 | 
			
		||||
   * The new frame should replace the current frame.
 | 
			
		||||
   * The new frame should replace the current frame or all the stack.
 | 
			
		||||
   */
 | 
			
		||||
  replace?: boolean;
 | 
			
		||||
  replace?: boolean | "all";
 | 
			
		||||
  /**
 | 
			
		||||
   * The animatedOpen phase of the life cycle.
 | 
			
		||||
   *
 | 
			
		||||
| 
						 | 
				
			
			@ -427,11 +427,19 @@ const StackedRouter: Component<StackedRouterProps> = (oprops) => {
 | 
			
		|||
        animateClose: opts?.animateClose,
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      mutStack(opts?.replace ? stack.length - 1 : stack.length, frame);
 | 
			
		||||
      if (opts?.replace) {
 | 
			
		||||
        window.history.replaceState(serializableStack(stack), "", path);
 | 
			
		||||
      const replace = opts?.replace;
 | 
			
		||||
      if (replace === "all") {
 | 
			
		||||
        mutStack([frame]);
 | 
			
		||||
      } else {
 | 
			
		||||
        window.history.pushState(serializableStack(stack), "", path);
 | 
			
		||||
        mutStack(replace ? stack.length - 1 : stack.length, frame);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      const savedStack = serializableStack(stack);
 | 
			
		||||
 | 
			
		||||
      if (replace) {
 | 
			
		||||
        window.history.replaceState(savedStack, "", path);
 | 
			
		||||
      } else {
 | 
			
		||||
        window.history.pushState(savedStack, "", path);
 | 
			
		||||
      }
 | 
			
		||||
      return frame;
 | 
			
		||||
    });
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue