Fix more TS errors in strict mode
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
$api.setTitleId(id);
|
$api.setTitleId(id);
|
||||||
return () => $api.setTitleId(null);
|
return () => $api.setTitleId(undefined);
|
||||||
});
|
});
|
||||||
$: propsWeControl = {
|
$: propsWeControl = {
|
||||||
id,
|
id,
|
||||||
|
|||||||
@@ -36,8 +36,8 @@
|
|||||||
|
|
||||||
export function useMenuContext(
|
export function useMenuContext(
|
||||||
componentName: string
|
componentName: string
|
||||||
): Writable<StateDefinition | undefined> {
|
): Writable<StateDefinition> {
|
||||||
let context: Writable<StateDefinition | undefined> | undefined =
|
let context: Writable<StateDefinition> | undefined =
|
||||||
getContext(MENU_CONTEXT_NAME);
|
getContext(MENU_CONTEXT_NAME);
|
||||||
|
|
||||||
if (context === undefined) {
|
if (context === undefined) {
|
||||||
@@ -58,10 +58,7 @@
|
|||||||
let searchQuery: StateDefinition["searchQuery"] = "";
|
let searchQuery: StateDefinition["searchQuery"] = "";
|
||||||
let activeItemIndex: StateDefinition["activeItemIndex"] = null;
|
let activeItemIndex: StateDefinition["activeItemIndex"] = null;
|
||||||
|
|
||||||
let api: Writable<StateDefinition | undefined> = writable();
|
let api: Writable<StateDefinition> = writable({
|
||||||
setContext(MENU_CONTEXT_NAME, api);
|
|
||||||
|
|
||||||
$: api.set({
|
|
||||||
menuState,
|
menuState,
|
||||||
buttonStore,
|
buttonStore,
|
||||||
itemsStore: itemsStore,
|
itemsStore: itemsStore,
|
||||||
@@ -125,6 +122,19 @@
|
|||||||
})();
|
})();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
setContext(MENU_CONTEXT_NAME, api);
|
||||||
|
|
||||||
|
$: api.update((obj) => {
|
||||||
|
return {
|
||||||
|
...obj,
|
||||||
|
menuState,
|
||||||
|
buttonStore,
|
||||||
|
itemsStore: itemsStore,
|
||||||
|
items,
|
||||||
|
searchQuery,
|
||||||
|
activeItemIndex,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
function handleWindowMousedown(event: MouseEvent): void {
|
function handleWindowMousedown(event: MouseEvent): void {
|
||||||
let target = event.target as HTMLElement;
|
let target = event.target as HTMLElement;
|
||||||
|
|||||||
@@ -28,9 +28,9 @@
|
|||||||
const POPOVER_CONTEXT_NAME = "PopoverContext";
|
const POPOVER_CONTEXT_NAME = "PopoverContext";
|
||||||
export function usePopoverContext(
|
export function usePopoverContext(
|
||||||
component: string
|
component: string
|
||||||
): Writable<StateDefinition | undefined> {
|
): Writable<StateDefinition> {
|
||||||
let context = getContext(POPOVER_CONTEXT_NAME) as
|
let context = getContext(POPOVER_CONTEXT_NAME) as
|
||||||
| Writable<StateDefinition | undefined>
|
| Writable<StateDefinition>
|
||||||
| undefined;
|
| undefined;
|
||||||
if (context === undefined) {
|
if (context === undefined) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
@@ -57,31 +57,18 @@
|
|||||||
|
|
||||||
let popoverState: PopoverStates = PopoverStates.Closed;
|
let popoverState: PopoverStates = PopoverStates.Closed;
|
||||||
|
|
||||||
let api: Writable<StateDefinition | undefined> = writable();
|
let panel: Writable<StateDefinition["panel"]> = writable(null);
|
||||||
setContext(POPOVER_CONTEXT_NAME, api);
|
setContext("PopoverPanelRef", panel);
|
||||||
|
|
||||||
let openClosedState: Writable<State> | undefined = writable();
|
let button: Writable<StateDefinition["button"]> = writable(null);
|
||||||
setContext("OpenClosed", openClosedState);
|
setContext("PopoverButtonRef", button);
|
||||||
|
|
||||||
$: $openClosedState = match(popoverState, {
|
let api: Writable<StateDefinition> = writable({
|
||||||
[PopoverStates.Open]: State.Open,
|
|
||||||
[PopoverStates.Closed]: State.Closed,
|
|
||||||
});
|
|
||||||
|
|
||||||
let panelStore = writable(null);
|
|
||||||
setContext("PopoverPanelRef", panelStore);
|
|
||||||
$: panel = $panelStore;
|
|
||||||
|
|
||||||
let buttonStore = writable(null);
|
|
||||||
setContext("PopoverButtonRef", buttonStore);
|
|
||||||
$: button = $buttonStore;
|
|
||||||
|
|
||||||
$: api.set({
|
|
||||||
popoverState,
|
popoverState,
|
||||||
buttonId,
|
buttonId,
|
||||||
panelId,
|
panelId,
|
||||||
panel,
|
panel: $panel,
|
||||||
button,
|
button: $button,
|
||||||
togglePopover() {
|
togglePopover() {
|
||||||
popoverState = match(popoverState, {
|
popoverState = match(popoverState, {
|
||||||
[PopoverStates.Open]: PopoverStates.Closed,
|
[PopoverStates.Open]: PopoverStates.Closed,
|
||||||
@@ -105,6 +92,26 @@
|
|||||||
restoreElement?.focus();
|
restoreElement?.focus();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
setContext(POPOVER_CONTEXT_NAME, api);
|
||||||
|
|
||||||
|
let openClosedState: Writable<State> | undefined = writable();
|
||||||
|
setContext("OpenClosed", openClosedState);
|
||||||
|
|
||||||
|
$: $openClosedState = match(popoverState, {
|
||||||
|
[PopoverStates.Open]: State.Open,
|
||||||
|
[PopoverStates.Closed]: State.Closed,
|
||||||
|
});
|
||||||
|
|
||||||
|
$: api.update((obj) => {
|
||||||
|
return {
|
||||||
|
...obj,
|
||||||
|
popoverState,
|
||||||
|
buttonId,
|
||||||
|
panelId,
|
||||||
|
panel: $panel,
|
||||||
|
button: $button,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
const registerBag = {
|
const registerBag = {
|
||||||
buttonId,
|
buttonId,
|
||||||
@@ -121,8 +128,8 @@
|
|||||||
function isFocusWithinPopoverGroup() {
|
function isFocusWithinPopoverGroup() {
|
||||||
return (
|
return (
|
||||||
groupContext?.isFocusWithinPopoverGroup() ??
|
groupContext?.isFocusWithinPopoverGroup() ??
|
||||||
(button?.contains(document.activeElement) ||
|
($button?.contains(document.activeElement) ||
|
||||||
panel?.contains(document.activeElement))
|
$panel?.contains(document.activeElement))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,14 +151,14 @@
|
|||||||
|
|
||||||
if (popoverState !== PopoverStates.Open) return;
|
if (popoverState !== PopoverStates.Open) return;
|
||||||
|
|
||||||
if (button?.contains(target)) return;
|
if ($button?.contains(target)) return;
|
||||||
if (panel?.contains(target)) return;
|
if ($panel?.contains(target)) return;
|
||||||
|
|
||||||
$api.closePopover();
|
$api.closePopover();
|
||||||
|
|
||||||
if (!isFocusableElement(target, FocusableMode.Loose)) {
|
if (!isFocusableElement(target, FocusableMode.Loose)) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
button?.focus();
|
$button?.focus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -29,9 +29,9 @@
|
|||||||
const RADIO_GROUP_CONTEXT_NAME = "RadioGroupContext";
|
const RADIO_GROUP_CONTEXT_NAME = "RadioGroupContext";
|
||||||
export function useRadioGroupContext(
|
export function useRadioGroupContext(
|
||||||
component: string
|
component: string
|
||||||
): Writable<StateDefinition | undefined> {
|
): Writable<StateDefinition> {
|
||||||
const context = getContext(RADIO_GROUP_CONTEXT_NAME) as
|
const context = getContext(RADIO_GROUP_CONTEXT_NAME) as
|
||||||
| Writable<StateDefinition | undefined>
|
| Writable<StateDefinition>
|
||||||
| undefined;
|
| undefined;
|
||||||
|
|
||||||
if (context === undefined) {
|
if (context === undefined) {
|
||||||
@@ -55,10 +55,7 @@
|
|||||||
|
|
||||||
const dispatch = createEventDispatcher();
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
let api: Writable<StateDefinition | undefined> = writable();
|
let api: Writable<StateDefinition> = writable({
|
||||||
setContext(RADIO_GROUP_CONTEXT_NAME, api);
|
|
||||||
|
|
||||||
$: api.set({
|
|
||||||
options,
|
options,
|
||||||
value,
|
value,
|
||||||
disabled,
|
disabled,
|
||||||
@@ -83,6 +80,20 @@
|
|||||||
options = options.filter((radio) => radio.id !== id);
|
options = options.filter((radio) => radio.id !== id);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
setContext(RADIO_GROUP_CONTEXT_NAME, api);
|
||||||
|
|
||||||
|
$: api.update((obj) => {
|
||||||
|
return {
|
||||||
|
...obj,
|
||||||
|
options,
|
||||||
|
value,
|
||||||
|
disabled,
|
||||||
|
firstOption: options.find((option) => !option.propsRef.disabled),
|
||||||
|
containsCheckedOption: options.some(
|
||||||
|
(option) => option.propsRef.value === value
|
||||||
|
),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
$: treeWalker({
|
$: treeWalker({
|
||||||
container: radioGroupRef,
|
container: radioGroupRef,
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { useSwitchContext } from "./SwitchGroup.svelte";
|
import { useSwitchContext } from "./SwitchGroup.svelte";
|
||||||
import type { LabelContext } from "$lib/components/label/LabelProvider.svelte";
|
import type { LabelContext } from "$lib/components/label/LabelProvider.svelte";
|
||||||
import {
|
import { useDescriptionContext } from "$lib/components/description/DescriptionProvider.svelte";
|
||||||
DescriptionContext,
|
|
||||||
useDescriptionContext,
|
|
||||||
} from "$lib/components/description/DescriptionProvider.svelte";
|
|
||||||
import { useId } from "$lib/hooks/use-id";
|
import { useId } from "$lib/hooks/use-id";
|
||||||
import { Keys } from "$lib/utils/keyboard";
|
import { Keys } from "$lib/utils/keyboard";
|
||||||
import { getContext, createEventDispatcher } from "svelte";
|
import { getContext, createEventDispatcher } from "svelte";
|
||||||
|
|||||||
@@ -4,9 +4,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
const SWITCH_CONTEXT_NAME = "SwitchContext";
|
const SWITCH_CONTEXT_NAME = "SwitchContext";
|
||||||
export function useSwitchContext():
|
export function useSwitchContext(): Writable<StateDefinition> | undefined {
|
||||||
| Writable<StateDefinition | undefined>
|
|
||||||
| undefined {
|
|
||||||
return getContext(SWITCH_CONTEXT_NAME);
|
return getContext(SWITCH_CONTEXT_NAME);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -19,18 +17,16 @@
|
|||||||
|
|
||||||
let switchStore: Writable<HTMLButtonElement | null> = writable(null);
|
let switchStore: Writable<HTMLButtonElement | null> = writable(null);
|
||||||
|
|
||||||
let api: Writable<StateDefinition | undefined> = writable();
|
let api: Writable<StateDefinition | undefined> = writable({
|
||||||
setContext("SwitchApi", api);
|
switchStore,
|
||||||
|
});
|
||||||
|
setContext(SWITCH_CONTEXT_NAME, api);
|
||||||
|
|
||||||
function onClick() {
|
function onClick() {
|
||||||
if (!$switchStore) return;
|
if (!$switchStore) return;
|
||||||
$switchStore.click();
|
$switchStore.click();
|
||||||
$switchStore.focus({ preventScroll: true });
|
$switchStore.focus({ preventScroll: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
$: api.set({
|
|
||||||
switchStore,
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div {...$$restProps}>
|
<div {...$$restProps}>
|
||||||
|
|||||||
@@ -27,10 +27,8 @@
|
|||||||
|
|
||||||
const TABS_CONTEXT_NAME = "TabsContext";
|
const TABS_CONTEXT_NAME = "TabsContext";
|
||||||
|
|
||||||
export function useTabsContext(
|
export function useTabsContext(component: string): Writable<StateDefinition> {
|
||||||
component: string
|
let context: Writable<StateDefinition> | undefined =
|
||||||
): Writable<StateDefinition | undefined> {
|
|
||||||
let context: Writable<StateDefinition | undefined> | undefined =
|
|
||||||
getContext(TABS_CONTEXT_NAME);
|
getContext(TABS_CONTEXT_NAME);
|
||||||
|
|
||||||
if (context === undefined) {
|
if (context === undefined) {
|
||||||
@@ -54,10 +52,7 @@
|
|||||||
|
|
||||||
const dispatch = createEventDispatcher();
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
let api: Writable<StateDefinition | undefined> = writable();
|
let api: Writable<StateDefinition> = writable({
|
||||||
setContext(TABS_CONTEXT_NAME, api);
|
|
||||||
|
|
||||||
$: api.set({
|
|
||||||
selectedIndex,
|
selectedIndex,
|
||||||
orientation: vertical ? "vertical" : "horizontal",
|
orientation: vertical ? "vertical" : "horizontal",
|
||||||
activation: manual ? "manual" : "auto",
|
activation: manual ? "manual" : "auto",
|
||||||
@@ -81,6 +76,18 @@
|
|||||||
panels = panels.filter((p) => p !== panel);
|
panels = panels.filter((p) => p !== panel);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
setContext(TABS_CONTEXT_NAME, api);
|
||||||
|
|
||||||
|
$: api.update((obj) => {
|
||||||
|
return {
|
||||||
|
...obj,
|
||||||
|
selectedIndex,
|
||||||
|
orientation: vertical ? "vertical" : "horizontal",
|
||||||
|
activation: manual ? "manual" : "auto",
|
||||||
|
tabs,
|
||||||
|
panels,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
if ($api.tabs.length <= 0) return;
|
if ($api.tabs.length <= 0) return;
|
||||||
|
|||||||
@@ -154,7 +154,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
setContext(NESTING_CONTEXT_NAME, nesting);
|
setContext(NESTING_CONTEXT_NAME, nesting);
|
||||||
let openClosedState: Writable<State> | undefined = writable(State.Closed);
|
let openClosedState: Writable<State> = writable(State.Closed);
|
||||||
setContext("OpenClosed", openClosedState);
|
setContext("OpenClosed", openClosedState);
|
||||||
|
|
||||||
$: openClosedState.set(
|
$: openClosedState.set(
|
||||||
|
|||||||
@@ -114,16 +114,16 @@
|
|||||||
import TransitionChild from "./TransitionChild.svelte";
|
import TransitionChild from "./TransitionChild.svelte";
|
||||||
import type { useId } from "$lib/hooks/use-id";
|
import type { useId } from "$lib/hooks/use-id";
|
||||||
|
|
||||||
export let show: boolean = null;
|
export let show: boolean | undefined = undefined;
|
||||||
export let unmount = true;
|
export let unmount = true;
|
||||||
export let appear = false;
|
export let appear = false;
|
||||||
|
|
||||||
let openClosedState: Writable<State> | undefined = getContext("OpenClosed");
|
let openClosedState: Writable<State> | undefined = getContext("OpenClosed");
|
||||||
|
|
||||||
function computeShow(
|
function computeShow(
|
||||||
show: boolean,
|
show: boolean | undefined,
|
||||||
openClosedState: State | undefined
|
openClosedState: State | undefined
|
||||||
): boolean {
|
): boolean | undefined {
|
||||||
if (show === null && openClosedState !== undefined) {
|
if (show === null && openClosedState !== undefined) {
|
||||||
return match(openClosedState, {
|
return match(openClosedState, {
|
||||||
[State.Open]: true,
|
[State.Open]: true,
|
||||||
@@ -161,7 +161,7 @@
|
|||||||
let initial = true;
|
let initial = true;
|
||||||
let transitionBag: Writable<TransitionContextValues> = writable();
|
let transitionBag: Writable<TransitionContextValues> = writable();
|
||||||
$: transitionBag.set({
|
$: transitionBag.set({
|
||||||
show: shouldShow,
|
show: !!shouldShow,
|
||||||
appear: appear || !initial,
|
appear: appear || !initial,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user