New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

vue3-element-queries

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vue3-element-queries

Vue 3 resize observer with debounce

  • 0.0.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
decreased by-75%
Maintainers
1
Weekly downloads
 
Created
Source

This package is only a prototype for now. Let me know if you find this useful and I will continue to work on it.

Have you ever wanted to build a vue component that was responsive to the containing element, rather than the window size? Now you can :)

I built this directive from looking at the amazing package css-element-queries. I ran into some performance issues using css-element-queries with dynamic elements coming in and out of vue, so I rewrote some of the core implementation with Vue in mind.

I plan to replace ResizeSensor at some point, and there may be many, many bugs as it's not nearly as flexible as css-media-queries. Send me feedback please!

How To Use VueElementQuery

Take the package for a spin using the latest vue-cli vue serve ./example

Install the plugin as you normally would with Vue.use(VueElementQuery)

import VueElementQuery from 'vue-element-queries'

Vue.use(VueElementQuery)

This makes the directive v-query available to you. Add this directive to the containing element you want your components to respond to.

<div v-query class="grid">
  <div class="row">
    <panel class="item"></panel>
    <panel class="item"></panel>
    <panel class="item"></panel>
    <panel class="item"></panel>
    <panel class="item"></panel>
  </div>
</div>

This will watch the container and apply tags to the element for min-width and max-width. You can then target these tags in your css to make your components responsive.

<style scoped> // scoped is required

  .grid[min-width="500px"] .item {
    flex-basis: 50%;
  }

</style>

Note: stylesheets must be scoped for the current implementation of vue-element-queries.

Take a look at Example.vue in the example directory. You can use the sass mixins provided to clean up your css quite a bit.

<style lang="scss" scoped>
  @import './sass/grid';
  @import './sass/mixins';

  .grid {
    @include query(500) {
      .item {
        @include span(6)
      }
    }
    @include query(800) {
      .item {
        @include span(4)
      }
    }
  }
  </style>

Keywords

FAQs

Package last updated on 31 Dec 2023

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc