Research
Security News
Kill Switch Hidden in npm Packages Typosquatting Chalk and Chokidar
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
vue-window-size
Advanced tools
Provides reactivity window size properties for Vue.js.
The following command installs vue-window-size v1.
$ yarn add vue-window-size
// or
$ npm i vue-window-size
The following command installs vue-window-seize v0.
$ yarn add vue-window-size@0.6.2
// or
$ npm i vue-window-size@0.6.2
You can install v1 using the following command.
note: v1.1.0 or later is for vue3 only
When using with vue-window-size v1.0.6 it depends on the @vue/composition-api. And requires Vue.js v2.6.
$ yarn add vue-window-size@1.0.6 @vue/composition-api
// or
$ npm i vue-window-size@1.0.6 @vue/composition-api
For Vue.js v2.7, please use vue-window-size v1.0.8 or higher.
$ yarn add vue-window-size@1.0.x
// or
$ npm i vue-window-size@1.0.x
Composition API or Plugin or Mixin.
Composition API | Plugin | Mixin | |
---|---|---|---|
has window sizes properties | only in use | all components | only in use |
handle resize event | only in use | all times | all times |
Use with component.
<template>
<div>
<p>window width: {{ windowWidth }}</p>
<p>window height: {{ windowHeight }}</p>
</div>
</template>
<script>
import { useWindowSize } from 'vue-window-size';
export default {
setup() {
const { width, height } = useWindowSize();
return {
windowWidth: width,
windowHeight: height,
};
},
};
</script>
note: useWindowSize handles a Resize Event only when it is in use. Even if it is called by multiple components, the Resize event is processed only once. If it is not used, it will not be handled.
Install plugin
import { createApp } from 'vue';
import App from "./App.vue"; // your App component
import { VueWindowSizePlugin } from 'vue-window-size/option-api';
const app = createApp(App);
app.use(VueWindowSizePlugin);
Use with component
<template>
<div>
<p>window width: {{ $windowWidth }}</p>
<p>window height: {{ $windowHeight }}</p>
</div>
</template>
Use with component
<template>
<div>
<p>window width: {{ $windowWidth }}</p>
<p>window height: {{ $windowHeight }}</p>
</div>
</template>
<script>
import { vueWindowSizeMixin } from 'vue-window-size/option-api';
export default {
mixins: [vueWindowSizeMixin()],
};
</script>
delay
(option)Number
33
Change delay time of resize event.
e.g.
import { createApp } from 'vue';
import App from "./App.vue"; // your App component
import { VueWindowSizePlugin } from 'vue-window-size/option-api';
const app = createApp(App);
app.use(VueWindowSizePlugin, {
delay: 100,
});
config(config: VueWindowSizeOptionApiConfig)
Same as config for Option API.
import { vueWindowSizeAPI } from 'vue-window-size/option-api';
vueWindowSizeAPI.config({
delay: 100,
});
init()
Initialize the plugin. Usually called automatically. Please call it if you want to use it again after destroy.
import { vueWindowSizeAPI } from 'vue-window-size/option-api';
vueWindowSizeAPI.init();
destroy()
Remove the resize event.
import { vueWindowSizeAPI } from 'vue-window-size/option-api';
vueWindowSizeAPI.destroy();
useWindowSize
is a singleton and handles the resize event.
Therefore, using useWindowSize(config)
will affect all components in used.
Due to the nature of the Composition API, this is not the desired behavior.
I also think that there are not many use cases that need to be set individually.
If requested, I will create a useAtomicWindowSize(config)
that can be set atomically, so please create an issue.
Or create a factory function for createUseWindowSize(config)
.
vue-window-size adds addEventListener only once, even if it is used in mixin. So basically you do not need to call removeEventListener. If you want to call removeEventListener please call destroy method.
If you find a bug or want to contribute to the code or documentation, you can help by submitting an issue or a pull request.
FAQs
Reactivity window size for Vue.js.
The npm package vue-window-size receives a total of 2,360 weekly downloads. As such, vue-window-size popularity was classified as popular.
We found that vue-window-size demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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.
Research
Security News
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.