The Media Query Handler Plugin provides to you the possibility to get the current media query name from your css.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
scss
src
.gitignore
.npmignore
CHANGELOG.md
LICENSE
README.md
package-lock.json
package.json
tsconfig.json
yarn.lock

README.md

Veams Media Query Handler Plugin (@veams/plugin-media-query-handler)

The Media Query Handler Plugin provides to you the possibility to get the current media query name from your css.

TypeScript is supported.


Installation

NPM

npm install @veams/plugin-media-query-handler --save

Yarn

yarn add @veams/plugin-media-query-handler

Requirements

It makes sense to have the Veams Vent Plugin in place in order to work with that plugin. Otherwise you can not subscribe to a change of the media query handler and need to add this functionality manually.

Take a look at @veams/plugin-vent.


Usage

import Veams from '@veams/core';
import VeamsMediaQueryHandler from '@veams/plugin-media-query-handler';

// Intialize core of Veams
Veams.onInitialize(() => {
   	// Add plugins to the Veams system
	Veams.use(VeamsMediaQueryHandler, {
        delay: 200
    });
});

Options

You can pass a second parameter with an options object. Available options are:

Option Type Default Description
mediaQueryProp {String} ['font-family'] Define a media query property which you have added to the head element.
delay {Number} [300] Define the delay value for the throttle handling which is responsible to trigger an event and set the currentMedia value.

SCSS

If you want to use the media query support then you can choose from 3 different approaches:

1. Add the following lines to a custom scss file and modify it like you want:

head {
	font-family: desktop;

	@include bp(1024px) {
		font-family: tablet-l;
	}

	@include bp(768px) {
		font-family: tablet-p;
	}

	@include bp(657px) {
		font-family: mobile-l;
	}

	@include bp(480px) {
		font-family: mobile-p;
	}

	@include bp(360px) {
		font-family: mobile-s;
	}
}

2. Automate it like that:

head {

	@if ($min-width) {
		font-family: unquote(nth(nth($breakpoints, 1), 1));
	} @else {
		font-family: unquote(nth(nth($breakpoints, length($breakpoints)), 1));
	}

	@each $breakpoint in $breakpoints {
		$name: nth($breakpoint, 1);
		$size: nth($breakpoint, 2);

		@include bp($size) {
			font-family: unquote($name);
		}
	}
}

Be sure you have the Veams Core imported for variables, maps and includes.

3. Import the file from that library:

@import "~@veams/plugin-media-query-handler/scss/media-query-handler";

Api

With that in place you can access the current media query breakpoint in your JavaScipt:

console.log(Veams.currentMedia);