Skip to content

🖥 Get easy and reactive access to the width and height of your screen, but in Typescript

License

Notifications You must be signed in to change notification settings

LittleBigBug/vue-screen-size-ts

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vue-screen-size-ts

Get easy and reactive access to the width and height of your screen. (But now in Typescript)

NPM Version NPM Downloads License Tweet

Links

View demo

View on npm

View on GitHub

Install

# npm
npm i vue-screen-size

# yarn
yarn add vue-screen-size

Or you can include it through the browser at the bottom of your page:

<script src="https://unpkg.com/vue-screen-size/dist/vue-screen-size.min.js"></script>

About

Sometimes when building an app you need to have access to the screen's dimensions. Usually that's going to be done in the css using @media - but sometimes you need to access that info right in your JavaScript.

The issue with this is you have to worry about adding event listeners and then removing them later. We wanted to just be able to import something quickly and then be able to forget about it later. So this mixin does just that - just use Vue.use() or mixins: [], and you're off.

There is something to consider - where and how you include this library. There are two ways, make sure to be aware of the differences:

Usage Example 1 - Whole app has access (Not Recommended)

In this usage - your whole app - and every child component - has access to the $vssWidth, $vssHeight, and $vssEvent variables. This is sorta pollutive though, as multiple instances of the mixin are initialized and it's kinda wasteful. The is due to the way Vue mixins are passed down to child components. You can read more about this here. The second example is recommended.

import VueScreenSize from 'vue-screen-size'
Vue.use(VueScreenSize)

// Access `this.$vssWidth`, `this.$vssHeight`, and `this.$vssEvent` anywhere in your app.

Usage Example 2 - Just the component you install it on has access - (Recommended)

In this usage - the component you install it on will have access to the $vssWidth, $vssHeight, and $vssEvent variables. This may be a bit more restrictive, but it's less wasteful and should give you better performance.

import VueScreenSize from 'vue-screen-size'

export default {
    ...
    mixins: [VueScreenSize.VueScreenSizeMixin],
    ...
}

// Access `this.$vssWidth`, `this.$vssHeight`, and `this.$vssEvent` in your component.

Equivalent Typescript:

import { Mixins } from 'vue-property-decorator'

@Component
export default class MyComponent extends Mixins(VueScreenSize.VueScreenSizeMixin) {
  name = 'Cool Component'

  myMethod() {
    const w = this.$vssWidth
    const h = this.$vssHeight
  }
}

Variables

name type description
$vssWidth Number The width of your screen
$vssHeight Number The height of your screen
$vssEvent UIEvent The event object data from the resizing event.

Methods

method parameters description
$vssDestroyListener none Force the removal of the attached event listener

Development

# install dependencies
npm install
# or yarn (recommended)
yarn

# serve with hot reload
npm run watch
yarn watch

# run the tests
npm run test
yarn test

# build demo page
npm run build:example
yarn build:example

# build library
npm run build:library
yarn build:library

# both
npm run build
yarn build

# publish to npm
npm publish
yarn publish

Other

Go ahead and fork the project! Submit an issue if needed. Have fun!

License

MIT

About

🖥 Get easy and reactive access to the width and height of your screen, but in Typescript

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Vue 40.1%
  • JavaScript 30.8%
  • TypeScript 23.3%
  • HTML 5.8%