Skip to content

Commit d093cc3

Browse files
full basket example
1 parent cb81320 commit d093cc3

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

readme.md

+56
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,59 @@ export class BasketStorage extends EventTarget {
147147
const basketStorage = BasketStorage.getInstance();
148148
export default basketStorage;
149149
```
150+
151+
with lit component
152+
153+
```js
154+
import { html, css, LitElement } from "https://cdn.jsdelivr.net/npm/lit@2/+esm";
155+
import basketStorage from "./basketStorage.js";
156+
157+
export class Basket extends LitElement {
158+
static get properties() {
159+
return {
160+
items: { type: Array },
161+
};
162+
}
163+
164+
constructor() {
165+
super();
166+
}
167+
168+
connectedCallback() {
169+
super.connectedCallback();
170+
basketStorage.addEventListener("updated", (i) => {
171+
this.items = basketStorage.getItems();
172+
});
173+
}
174+
175+
submit(e) {
176+
e.preventDefault();
177+
178+
const searchNode = this.renderRoot.querySelector("#search");
179+
if (searchNode) {
180+
const v = searchNode.value;
181+
basketStorage.addItem(v);
182+
}
183+
searchNode.value = "";
184+
}
185+
186+
render() {
187+
return html`
188+
<form @submit=${this.submit}>
189+
<div>
190+
<input type="text" id="search" />
191+
<button type="submit">Submit</button>
192+
</div>
193+
<div>
194+
${this.items
195+
? html`${this.items.map((i) => {
196+
return html`<div>${i}</div>`;
197+
})}`
198+
: html`<h2>No items</h2>`}
199+
</div>
200+
</form>
201+
`;
202+
}
203+
}
204+
customElements.define("app-basket", Basket);
205+
```

0 commit comments

Comments
 (0)