Skip to content

Commit 9641094

Browse files
Merge pull request #1680 from MichalBryxi/Add-example-of-passing-down-argument-components
feat: Arg Components
2 parents 300cdeb + f26b4b4 commit 9641094

File tree

3 files changed

+117
-8
lines changed

3 files changed

+117
-8
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,35 @@
1-
<template>
2-
This tutorial chapter needs to be written!
1+
// Renders: 🐹 + 🧑‍💻 = 🧡
2+
3+
import { hash } from '@ember/helper';
4+
5+
const Hamster = <template>
6+
🐹
7+
</template>;
8+
9+
const Computer = <template>
10+
🧑‍💻
11+
</template>;
312

4-
It could be written by you!, if you want &lt;3
13+
const BlueHeart = <template>💙</template>;
14+
const GreenHeart = <template>💚</template>;
15+
const OrangeHeart = <template>🧡</template>;
16+
17+
const Love = <template>
18+
{{yield
19+
(hash
20+
blue=BlueHeart
21+
green=GreenHeart
22+
orange=OrangeHeart
23+
)
24+
}}
25+
</template>;
26+
27+
const Ember = <template>
28+
<@hamster /> + <@computer /> = <@love />
29+
</template>;
30+
31+
<template>
32+
<Love as |love|>
33+
<Ember @hamster={{Hamster}} @computer={{Computer}} @love={{love.orange}} />
34+
</Love>
535
</template>
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
1-
<template>
2-
This tutorial chapter needs to be written!
1+
// Renders: 🐹 + 🧑‍💻 = 🧡
2+
3+
import { hash } from '@ember/helper';
4+
5+
const Hamster = <template>
6+
🐹
7+
</template>;
8+
9+
const Computer = <template>
10+
🧑‍💻
11+
</template>;
312

4-
It could be written by you!, if you want &lt;3
13+
const BlueHeart = <template>💙</template>;
14+
const GreenHeart = <template>💚</template>;
15+
const OrangeHeart = <template>🧡</template>;
16+
17+
const Love = <template>
18+
{{yield
19+
(hash
20+
blue=BlueHeart
21+
green=GreenHeart
22+
orange=OrangeHeart
23+
)
24+
}}
25+
</template>;
26+
27+
const Ember = <template>
28+
<@hamster /> + <@computer /> = <@love />
29+
</template>;
30+
31+
<template>
32+
<Ember />
533
</template>
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,54 @@
1-
This tutorial chapter needs to be written!
1+
Argument components are components passed down as arguments.
22

3-
It could be written by you!, if you want &lt;3
3+
Here is an example of a `Greeter` component being passed down `Me` component as `@person` argument:
4+
5+
```gjs
6+
const Me = <template>
7+
NullVoxPopuli
8+
</template>;
9+
10+
const Greeter = <template>
11+
Hello <@person />!
12+
</template>;
13+
14+
<template>
15+
<Greeter @person={{Me}} />
16+
</template>
17+
```
18+
19+
This pattern can be also used in cases where a _component A_ `yields` _component B_ and this one then needs to be used in _component C_:
20+
21+
```gjs
22+
import { hash } from '@ember/helper';
23+
24+
const Button = <template>
25+
<button type="button">Close</button>
26+
</template>;
27+
28+
const Sidebar = <template>
29+
<side>
30+
{{yield (hash closeButton=Button)}}
31+
</side>
32+
</template>;
33+
34+
const Menu = <template>
35+
<nav>
36+
<ul>
37+
<li>Home</li>
38+
<li>About</li>
39+
</ul>
40+
</nav>
41+
42+
<@closeMenu />
43+
</template>;
44+
45+
<template>
46+
<Sidebar as |side|>
47+
<Menu @closeMenu={{side.closeButton}} />
48+
</Sidebar>
49+
</template>;
50+
```
51+
52+
[Documentation on rendering values][docs]
53+
54+
[docs]: https://guides.emberjs.com/release/in-depth-topics/rendering-values/

0 commit comments

Comments
 (0)