Skip to content

Commit c51ddd0

Browse files
Inline comp docs (#931)
* allow people to pass handlers to modal close * docs: improve contributor guide * docs: mention inline components
1 parent 6ba4b36 commit c51ddd0

File tree

9 files changed

+342
-129
lines changed

9 files changed

+342
-129
lines changed

apps/website/src/components/navigation-docs/navigation-docs.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const defaultLinksGroups: LinkGroup[] = [
2727
children: [
2828
{
2929
name: 'Contributing',
30-
href: '/contributing/',
30+
href: '/docs/contributing/',
3131
},
3232
{
3333
name: 'Headless',
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { component$, PropsOf, useSignal } from '@builder.io/qwik';
2+
import { findComponent, processChildren } from '@qwik-ui/utils';
3+
4+
export default component$(() => {
5+
const isRenderedSig = useSignal(false);
6+
7+
return (
8+
<div>
9+
<button onClick$={() => (isRenderedSig.value = true)}>render on the client</button>
10+
{isRenderedSig.value && (
11+
<ExampleRoot>
12+
<Item />
13+
<Item />
14+
<Item />
15+
<Item />
16+
</ExampleRoot>
17+
)}
18+
</div>
19+
);
20+
});
21+
22+
const ExampleRoot = ({ children }: PropsOf<'div'>) => {
23+
let currItemIndex = 0;
24+
25+
findComponent(Item, (itemProps) => {
26+
itemProps._index = currItemIndex;
27+
currItemIndex++;
28+
});
29+
30+
processChildren(children);
31+
32+
return <div>{children}</div>;
33+
};
34+
35+
const Item = component$(({ _index }: { _index?: number }) => {
36+
if (_index === undefined) {
37+
throw new Error('Qwik UI: Example inline component cannot find its proper index.');
38+
}
39+
40+
return <div>Item {_index + 1}</div>;
41+
});
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { component$, Signal, useSignal, useTask$ } from '@builder.io/qwik';
2+
3+
export default component$(() => {
4+
const countSig = useSignal(0);
5+
6+
return (
7+
<div>
8+
rendered on the server
9+
<Item countSig={countSig} />
10+
<Item countSig={countSig} />
11+
<Item countSig={countSig} />
12+
<Item countSig={countSig} />
13+
</div>
14+
);
15+
});
16+
17+
const Item = component$(({ countSig }: { countSig: Signal<number> }) => {
18+
const itemNum = useSignal(0);
19+
20+
useTask$(() => {
21+
itemNum.value = ++countSig.value;
22+
});
23+
24+
return <div>Item {itemNum.value}</div>;
25+
});
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { component$, Signal, useSignal, useTask$ } from '@builder.io/qwik';
2+
3+
export default component$(() => {
4+
const isItemsRenderedSig = useSignal(false);
5+
const countSig = useSignal(0);
6+
7+
return (
8+
<div>
9+
<button onClick$={() => (isItemsRenderedSig.value = true)}>
10+
render on the client
11+
</button>
12+
{isItemsRenderedSig.value && (
13+
<>
14+
<Item countSig={countSig} />
15+
<Item countSig={countSig} />
16+
<Item countSig={countSig} />
17+
<Item countSig={countSig} />
18+
</>
19+
)}
20+
</div>
21+
);
22+
});
23+
24+
const Item = component$(({ countSig }: { countSig: Signal<number> }) => {
25+
const itemNum = useSignal(0);
26+
27+
useTask$(() => {
28+
itemNum.value = ++countSig.value;
29+
});
30+
31+
return <div>Item {itemNum.value}</div>;
32+
});

0 commit comments

Comments
 (0)