Skip to content

Commit 8ed5b34

Browse files
committed
Update example to use colors
1 parent ce8ea65 commit 8ed5b34

File tree

4 files changed

+21
-24
lines changed

4 files changed

+21
-24
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {createContext} from '@lit/context';
22

3-
export type Level = {level: number; prefix: string};
3+
export type Level = {level: number; color: string};
44

5-
export const levelContext = createContext<Level>(Symbol('prefix'));
5+
export const levelContext = createContext<Level>(Symbol('level'));

packages/lit-dev-content/samples/examples/context-consume-provide/my-app.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ export class MyApp extends LitElement {
5151
<my-heading>Heading level 3</my-heading>
5252
<my-section>
5353
<my-heading>Heading level 4</my-heading>
54+
<my-section>
55+
<my-heading>Heading level 5</my-heading>
56+
</my-section>
5457
</my-section>
5558
</my-section>
5659
</my-section>
Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {LitElement} from 'lit';
22
import {html, literal} from 'lit/static-html.js';
33
import {customElement} from 'lit/decorators.js';
4+
import {styleMap} from 'lit/directives/style-map.js';
45
import {consume} from '@lit/context';
56
import {levelContext, type Level} from './level-context.js';
67

@@ -11,24 +12,26 @@ export class MyHeading extends LitElement {
1112

1213
private get _tag() {
1314
switch (this._level?.level) {
14-
case 1:
15+
case 0:
1516
return literal`h1`;
16-
case 2:
17+
case 1:
1718
return literal`h2`;
18-
case 3:
19+
case 2:
1920
return literal`h3`;
20-
case 4:
21+
case 3:
2122
return literal`h4`;
22-
case 5:
23+
case 4:
2324
return literal`h5`;
24-
case 6:
25+
case 5:
2526
return literal`h6`;
2627
default:
2728
return literal`p`;
2829
}
2930
}
3031

3132
render() {
32-
return html`<${this._tag}>${this._level?.prefix} <slot></slot></${this._tag}>`;
33+
return html`<${this._tag} style=${styleMap({
34+
color: this._level?.color,
35+
})}><slot></slot></${this._tag}>`;
3336
}
3437
}

packages/lit-dev-content/samples/examples/context-consume-provide/my-section.ts

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,47 +3,38 @@ import {customElement} from 'lit/decorators.js';
33
import {ContextProvider, ContextConsumer} from '@lit/context';
44
import {levelContext} from './level-context.js';
55

6+
const COLORS = ['blue', 'orange', 'green', 'purple'];
7+
68
@customElement('my-section')
79
export class MySection extends LitElement {
810
// Serve as a context provider with an initial level 1 and numbering prefix
911
// based on its numbering among siblings.
1012
private _provider = new ContextProvider(this, {
1113
context: levelContext,
12-
initialValue: {
13-
level: 1,
14-
prefix: String(this._siblingNumber) + '.',
15-
},
14+
initialValue: {level: 0, color: COLORS[0]},
1615
});
1716

1817
// Consumes level context from a parent provider. If a parent provider is
1918
// found, update own provider level to be 1 greater than provided value and
2019
// append its sibling number.
2120
private _consumer = new ContextConsumer(this, {
2221
context: levelContext,
23-
callback: ({level, prefix}) => {
22+
callback: ({level}) => {
2423
this._provider.setValue({
2524
level: level + 1,
26-
prefix: prefix + String(this._siblingNumber) + '.',
25+
color: COLORS[(level + 1) % COLORS.length],
2726
});
2827
},
2928
});
3029

31-
private get _siblingNumber() {
32-
return (
33-
Array.from(this.parentNode!.children)
34-
.filter((el) => el instanceof MySection)
35-
.indexOf(this) + 1
36-
);
37-
}
38-
3930
render() {
4031
return html`<section><slot></slot></section>`;
4132
}
4233

4334
static styles = css`
4435
:host {
4536
display: block;
46-
margin-left: 1rem;
37+
text-align: center;
4738
}
4839
`;
4940
}

0 commit comments

Comments
 (0)