Skip to content

Commit ff6016f

Browse files
authored
fix: deprecated useClientEffect$ and createContext hooks (#187)
1 parent 9fdbeef commit ff6016f

File tree

12 files changed

+133
-105
lines changed

12 files changed

+133
-105
lines changed

apps/website/src/constants.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createContext } from '@builder.io/qwik';
1+
import { createContextId } from '@builder.io/qwik';
22
import { AppState } from './types';
33

4-
export const APP_STATE = createContext<AppState>('app_state');
4+
export const APP_STATE = createContextId<AppState>('app_state');

apps/website/src/routes/layout.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import {
22
component$,
33
Slot,
44
useBrowserVisibleTask$,
5-
useClientEffect$,
65
useContextProvider,
76
useStore,
87
} from '@builder.io/qwik';

packages/daisy/src/components/rating/rating.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {
22
component$,
3-
createContext,
3+
createContextId,
44
useContext,
55
useContextProvider,
66
useStore,
@@ -17,7 +17,7 @@ export type DaisyRatingProps = {
1717
mask?: string;
1818
} & RatingProps;
1919

20-
export const ContextService = createContext<{ mask: string }>('my-context');
20+
export const ContextService = createContextId<{ mask: string }>('my-context');
2121

2222
export const Rating = component$((props: DaisyRatingProps) => {
2323
useStyles$(styles);

packages/headless/src/components/drawer/drawer.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {
22
component$,
3-
createContext,
3+
createContextId,
44
Signal,
55
Slot,
66
useContextProvider,
@@ -13,7 +13,7 @@ export interface DrawerContext {
1313
randomId: string;
1414
}
1515

16-
export const drawerContext = createContext<DrawerContext>('DrawerContext');
16+
export const drawerContext = createContextId<DrawerContext>('DrawerContext');
1717

1818
export interface DrawerProps {
1919
class?: string;

packages/headless/src/components/menu/menu.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import {
22
$,
33
component$,
4-
createContext,
4+
createContextId,
55
QRL,
66
QwikKeyboardEvent,
77
Signal,
88
Slot,
9-
useClientEffect$,
9+
useBrowserVisibleTask$,
1010
useContext,
1111
useContextProvider,
1212
useId,
@@ -30,7 +30,7 @@ interface MenuContextService {
3030

3131
const MENU_CONTEXT_NAME = 'qui-menu';
3232
export const quiMenuContext =
33-
createContext<MenuContextService>(MENU_CONTEXT_NAME);
33+
createContextId<MenuContextService>(MENU_CONTEXT_NAME);
3434

3535
export enum KEYBOARD_KEY_NAME {
3636
ARROW_UP = 'ArrowUp',
@@ -61,15 +61,15 @@ export const Menu = component$((props: MenuProps) => {
6161

6262
useContextProvider(quiMenuContext, menuContextService);
6363

64-
useClientEffect$(({ track }) => {
64+
useBrowserVisibleTask$(({ track }) => {
6565
track(() => isExpanded.value);
6666
if (!isExpanded.value) {
6767
currentButtonInFocusIndex.value = -1;
6868
currentId.value = '';
6969
}
7070
});
7171

72-
useClientEffect$(() => {
72+
useBrowserVisibleTask$(() => {
7373
const options = container.value?.querySelectorAll<HTMLElement>('button');
7474
if (options?.length) {
7575
options.forEach((option) => children.push(option));
Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
1-
import { component$, Slot, useClientEffect$, useContext, useSignal, useStylesScoped$ } from '@builder.io/qwik';
1+
import {
2+
component$,
3+
Slot,
4+
useBrowserVisibleTask$,
5+
useContext,
6+
useSignal,
7+
useStylesScoped$,
8+
} from '@builder.io/qwik';
29
import styles from './popover-content.css?inline';
310
import { PopoverContext } from './popover-context';
411

5-
export const PopoverContent = component$(
6-
() => {
7-
const ref = useSignal<HTMLElement>();
8-
const contextService = useContext(PopoverContext);
9-
useStylesScoped$(styles);
12+
export const PopoverContent = component$(() => {
13+
const ref = useSignal<HTMLElement>();
14+
const contextService = useContext(PopoverContext);
15+
useStylesScoped$(styles);
1016

11-
useClientEffect$(() => {
12-
contextService.setOverlayRef$(ref);
13-
});
14-
15-
return (
16-
<div
17-
ref={ref}
18-
class="popover-content">
19-
<Slot />
20-
</div>
21-
);
22-
}
23-
);
17+
useBrowserVisibleTask$(() => {
18+
contextService.setOverlayRef$(ref);
19+
});
2420

21+
return (
22+
<div ref={ref} class="popover-content">
23+
<Slot />
24+
</div>
25+
);
26+
});
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import { createContext, QRL, Signal } from '@builder.io/qwik';
1+
import { createContextId, QRL, Signal } from '@builder.io/qwik';
22

3-
interface PopoverContextProps {
4-
isOpen: boolean,
3+
interface PopoverContextProps {
4+
isOpen: boolean;
55
triggerEvent?: 'click' | 'mouseOver';
66
// NEW
77
setTriggerRef$: QRL<(ref: Signal<HTMLElement | undefined>) => void>;
88
setOverlayRef$: QRL<(ref: Signal<HTMLElement | undefined>) => void>;
99
}
10-
export const PopoverContext = createContext<PopoverContextProps>('popover-context');
10+
export const PopoverContext =
11+
createContextId<PopoverContextProps>('popover-context');
Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,39 @@
1-
import { $, component$, Slot, useClientEffect$, useContext, useSignal, useStylesScoped$ } from '@builder.io/qwik';
1+
import {
2+
$,
3+
component$,
4+
Slot,
5+
useBrowserVisibleTask$,
6+
useContext,
7+
useSignal,
8+
useStylesScoped$,
9+
} from '@builder.io/qwik';
210
import { PopoverContext } from './popover-context';
311
import styles from './popover-trigger.css?inline';
412

5-
export const PopoverTrigger = component$(
6-
() => {
7-
const ref = useSignal<HTMLElement>();
8-
const contextService = useContext(PopoverContext);
9-
useStylesScoped$(styles);
13+
export const PopoverTrigger = component$(() => {
14+
const ref = useSignal<HTMLElement>();
15+
const contextService = useContext(PopoverContext);
16+
useStylesScoped$(styles);
1017

11-
useClientEffect$(() => {
12-
contextService.setTriggerRef$(ref);
13-
});
18+
useBrowserVisibleTask$(() => {
19+
contextService.setTriggerRef$(ref);
20+
});
1421

15-
const mouseOverHandler = $(() => {
16-
contextService.isOpen = true
17-
})
18-
19-
return (
20-
<span
21-
ref={ref}
22-
class="popover-trigger"
23-
onMouseOver$={contextService.triggerEvent === 'mouseOver' ? mouseOverHandler : undefined}
24-
>
25-
<Slot />
26-
</span>
27-
);
28-
}
29-
);
22+
const mouseOverHandler = $(() => {
23+
contextService.isOpen = true;
24+
});
3025

26+
return (
27+
<span
28+
ref={ref}
29+
class="popover-trigger"
30+
onMouseOver$={
31+
contextService.triggerEvent === 'mouseOver'
32+
? mouseOverHandler
33+
: undefined
34+
}
35+
>
36+
<Slot />
37+
</span>
38+
);
39+
});

0 commit comments

Comments
 (0)