logo polydile dile-components

dile-media-query

Web Component to make media queries and recive events when its state changes.

Installation

npm i @dile/utils

Usage

Import the component.

  import '@dile/utils/components/media-query/media-query.js';

Use the component.

<dile-media-query query="(max-width: 1000px)"></dile-media-query>

Properties

Events

dile-media-query demos

<script type="module">

import { LitElement, html } from 'lit';
import '@dile/utils/components/media-query/media-query.js';

class MyComponent extends LitElement {

  render() {
    return html`
      <dile-media-query 
        @dile-media-query-changed=${this.mqChanged} 
        query="(min-width: 460px)"
      ></dile-media-query>
      <div id="message"></div>
    `
  }

  mqChanged(e) {
    let message = this.shadowRoot.getElementById("message");
    message.innerHTML = 
      "The media query (min-width: 460px) state is <b>" + (e.detail.value ? 'matched' : 'not matched') + "</b>"
  }
}
customElements.define('my-component', MyComponent);
</script>
<my-component></my-component>

Credits

This component is based on an abandoned project from Victor Bernabé: https://github.com/Victor-Bernabe/lit-media-query. We have updated the component to use Lit instead of Lit-Element and a refactoring to take advantage of the component lifecycle methods.