Skip to content

Instantly share code, notes, and snippets.

@Westbrook
Westbrook / lit-use-effect-element.js
Last active September 3, 2023 23:18
useEffect() for `LitElement`... because everyone's doing it?
import {LitElement, html} from '@polymer/lit-element';
import {UseEffectMixin} from './use-effect.js';
class MyElement extends UseEffectMixin(LitElement) {
static get properties() {
return {
mood: {type: String},
expression: {type: String}
}
}
import { css } from "lit";
export const style = css`
:host {
border: 1px solid black;
display: block;
width: 100%;
padding: 10px;
}
`;
<!DOCTYPE html>
<head>
<script type="module" src="./simple-greeting.js"></script>
</head>
<body>
<simple-greeting name="World"></simple-greeting>
</body>
import htm from 'https://unpkg.com/htm?module'; // for parity of renderer plus access to element properties
const handler = (e) => console.log("You've got an event at the parent level:",e);
const eventToComponent = htm`<MyComponent onSomething=${handler} />`;
const eventToCustomElement = htm`<my-component onSomething=${handler} />`;
// OR, you can use capturing to manage this sort of thing via central data store
document.body.addEventListener('something', e => {
@Westbrook
Westbrook / SassMeister-input.scss
Created April 23, 2014 19:43
Generated by SassMeister.com.
// ----
// libsass (v0.7.0)
// ----
%extended {
border: none;
}
%extend {
width: 100%;
@Westbrook
Westbrook / SassMeister-input.scss
Created April 22, 2014 14:49
Generated by SassMeister.com.
// ----
// libsass (v0.7.0)
// ----
%extend {
@media only screen and (max-width: 600px) {
width:100%;
}
}