Security News
Cloudflare Adds Security.txt Setup Wizard
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
The lit npm package is a simple and fast library for building web components and web applications. It allows developers to create reusable, encapsulated, and interactive elements using modern JavaScript and Web Component standards. Lit is designed to be lightweight and efficient, focusing on speed and minimal overhead.
Creating Web Components
This feature allows developers to create custom web components using the LitElement base class. The example demonstrates defining a new element with a simple style and rendering method.
import { LitElement, html, css } from 'lit';
class MyElement extends LitElement {
static styles = css`p { color: blue; }`;
render() {
return html`<p>Hello, world!</p>`;
}
}
customElements.define('my-element', MyElement);
Reactive Properties
This feature showcases Lit's reactive property system. The example includes a counter component that updates its display whenever the 'count' property changes.
import { LitElement, html, css, property } from 'lit';
class MyCounter extends LitElement {
@property({ type: Number }) count = 0;
render() {
return html`
<button @click=${this._increment}>Increment</button>
<span>${this.count}</span>
`;
}
_increment() {
this.count++;
}
}
customElements.define('my-counter', MyCounter);
Styling Components
This feature demonstrates how to apply CSS styles to a Lit component. The example shows defining styles for the component itself and its internal elements.
import { LitElement, html, css } from 'lit';
class StyledElement extends LitElement {
static styles = css`
:host {
display: block;
border: 1px solid black;
padding: 16px;
max-width: 200px;
}
.highlight {
color: red;
}
`;
render() {
return html`<div class='highlight'>Styled Content</div>`;
}
}
customElements.define('styled-element', StyledElement);
React is a popular library for building user interfaces. It focuses on a component-based architecture similar to Lit but uses a virtual DOM for updates, which differs from Lit's direct DOM manipulation approach.
Vue is a progressive framework for building UIs. Like Lit, it emphasizes component-based development and reactivity. However, Vue offers a more comprehensive framework experience with options for routing and state management.
Svelte is a compiler that generates efficient JavaScript code from component declarations. Unlike Lit, which runs in the browser, Svelte shifts much of the work to compile time, resulting in smaller bundles and faster runtime execution.
Lit is a simple library for building fast, lightweight web components.
At Lit's core is a boilerplate-killing component base class that provides reactive state, scoped styles, and a declarative template system that's tiny, fast and expressive.
This is a pre-release of Lit 3.0, the next major version of Lit.
Lit 3.0 has very few breaking changes from Lit 2.0:
Lit 3.0 should require no changes to upgrade from Lit 2.0 for the vast majority of users. Once the full release is published, most apps and libraries will be able to extend their npm version ranges to include both 2.x and 3.x, like "^2.7.0 || ^3.0.0"
.
Lit 2.x and 3.0 are interoperable: templates, base classes, directives, decorators, etc., from one version of Lit will work with those from another.
Please file any issues you find on our issue tracker.
See the full documentation for Lit at lit.dev
Lit provides developers with just the right tools to build fast web components:
Lit builds on top of standard web components, and makes them easier to write:
import {LitElement, html, css} from 'lit';
import {customElement, property} from 'lit/decorators.js';
// Registers the element
@customElement('my-element')
export class MyElement extends LitElement {
// Styles are applied to the shadow root and scoped to this element
static styles = css`
span {
color: green;
}
`;
// Creates a reactive property that triggers rendering
@property()
mood = 'great';
// Render the component's DOM by returning a Lit template
render() {
return html`Web Components are <span>${this.mood}</span>!`;
}
}
Once you've defined your component, you can use it anywhere you use HTML:
<my-element mood="awesome"></my-element>
Please see CONTRIBUTING.md.
lit-element
- 3.0.0
Most users should no longer import directly from lit-element
, and instead prefer importing LitElement
from the lit
packages. The default entry point for lit-element
remains backward-compatible and includes all decorators. However, it's recommended to use import {LitElement} from 'lit';
and import decorators from lit/decorators
as necessary. See the Upgrade Guide for more details.
UpdatingElement
has been moved from the lit-element
package to the @lit/reactive-element
package and renamed to ReactiveElement
. See the ReactiveElement API documentation for more details. In addition, the source for css-tag
, and all decorators
have been moved to @lit/reactive-element
. However, all symbols are re-exported from both lit
and lit-element
packages.
The @internalProperty
decorator has been renamed to @state
.
Errors that occur during the update cycle were previously squelched to allow subsequent updates to proceed normally. Now errors are re-fired asynchronously so they can be detected. Errors can be observed via an unhandledrejection
event handler on window.
The lib
folder has been removed.
Rendering of renderRoot
/shadowRoot
) via createRenderRoot
and support for static styles
has moved from LitElement
to ReactiveElement
.
The createRenderRoot
method is now called just before the first update rather than in the constructor. Element code can not assume the renderRoot
exists before the element hasUpdated
. This change was made for compatibility with SSR.
ReactiveElement
's initialize
method has been removed. This work is now done in the element constructor.
The static render
has been removed.
For consistency, renamed _getUpdateComplete
to getUpdateComplete
.
When a property declaration is reflect: true
and its toAttribute
function returns undefined
the attribute is now removed where previously it was left unchanged (#872).
The dirty check in attributeChangedCallback
has been removed. While technically breaking, in practice it should very rarely be (#699).
LitElement's adoptStyles
method has been removed. Styling is now adopted in createRenderRoot
. This method may be overridden to customize this behavior.
LitElement's static getStyles
method has been renamed to static finalizeStyles
and now takes a list of styles the user provided and returns the styles which should be used in the element. If this method is overridden to integrate into a style management system, typically the super
implementation should be called.
Removed build support for TypeScript 3.4.
Decorators are no longer exported from the lit-element
module. Instead, import any decorators you use from lit/decorators/*
.
lit-html
has been updated to 2.x.
Support for running in older browsers has been removed from the default configuration. Import the platform-support
module to support Shady DOM. Note also that Lit parts inside <style>
elements are no longer supported. See Polyfills for more details.
For simplicity, requestUpdate
no longer returns a Promise. Instead await the updateComplete
Promise.
Removed requestUpdateInternal
. The requestUpdate
method is now identical to this method and should be used instead.
#2103 15a8356d
- Updates the exports
field of package.json
files to replace the subpath
folder
mapping
syntax with an explicit list of all exported files.
The /
-suffixed syntax for subpath folder mapping originally used in these
files is deprecated. Rather than update to the new syntax, this change replaces
these mappings with individual entries for all exported files so that (a) users
must import using extensions and (b) bundlers or other tools that don't resolve
subpath folder mapping exactly as Node.js does won't break these packages'
expectations around how they're imported.
renderOptions
class field now exists on LitElement
and can be set/overridden to modify the options passed to lit-html
.static shadowRootOptions
for customizing shadowRoot options. Rather than implementing createRenderRoot
, this property can be set. For example, to create a closed shadowRoot using delegates focus: static shadowRootOptions = {mode: 'closed', delegatesFocus: true}
.development
Node exports condition. See Development and production builds for more details.f43b811
- Don't publish src/ to npm.css
function now maintains a cache and will use a cached value if available when the same style text is requested.static get properties
on an undefined superclass with @property
on a subclass ([#890]https://github.com/Polymer/lit-element/issues/890));FAQs
A library for building fast, lightweight web components
The npm package lit receives a total of 1,576,528 weekly downloads. As such, lit popularity was classified as popular.
We found that lit demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 9 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
Security News
The Socket Research team breaks down a malicious npm package targeting the legitimate DOMPurify library. It uses obfuscated code to hide that it is exfiltrating browser and crypto wallet data.
Security News
ENISA’s 2024 report highlights the EU’s top cybersecurity threats, including rising DDoS attacks, ransomware, supply chain vulnerabilities, and weaponized AI.