From 5b9b680e51c139f002a2048ebc93d37525988771 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 10 Feb 2022 08:03:08 -0800 Subject: [PATCH] hotfix(ui-shell): HeaderNavMenu is possibly undefined --- src/UIShell/GlobalHeader/HeaderNavItem.svelte | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/UIShell/GlobalHeader/HeaderNavItem.svelte b/src/UIShell/GlobalHeader/HeaderNavItem.svelte index 37e57af0..8492c1e6 100644 --- a/src/UIShell/GlobalHeader/HeaderNavItem.svelte +++ b/src/UIShell/GlobalHeader/HeaderNavItem.svelte @@ -17,13 +17,24 @@ /** Obtain a reference to the HTML anchor element */ export let ref = null; - import { getContext } from "svelte"; + import { getContext, onMount } from "svelte"; const id = "ccs-" + Math.random().toString(36); - const { selectedItems, updateSelectedItems, closeMenu } = - getContext("HeaderNavMenu"); + const ctx = getContext("HeaderNavMenu"); - $: updateSelectedItems({ id, isSelected }); + let selectedItemIds = []; + + const unsubSelectedItems = ctx?.selectedItems.subscribe((_selectedItems) => { + selectedItemIds = Object.keys(_selectedItems); + }); + + $: ctx?.updateSelectedItems({ id, isSelected }); + + onMount(() => { + return () => { + if (unsubSelectedItems) unsubSelectedItems(); + }; + });
  • @@ -45,8 +56,9 @@ on:focus on:blur on:blur="{() => { - const ids = Object.keys($selectedItems); - if (ids.indexOf(id) === ids.length - 1) closeMenu(); + if (selectedItemIds.indexOf(id) === selectedItemIds.length - 1) { + ctx?.closeMenu(); + } }}" > {text}