mqbe 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/assets/javascripts/mqbe.js +57 -0
- data/assets/stylesheets/mqbe.scss +32 -0
- data/lib/MQBE.rb +44 -0
- data/lib/mqbe/engine.rb +11 -0
- data/lib/mqbe/version.rb +3 -0
- metadata +80 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a93b49dfd86eba023d305386160cadd9285b86a3
|
4
|
+
data.tar.gz: f8ae94914063fbe5944db1f66c6385c041b101b7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7f0ce7dd918a268e98be73d79b35391854dbbcc5b1e58f94e099d9f8a822679e8f32bcb5313c64c7c75431118b08fa98c30e3512bfc5f1999057b74bcb10ac2d
|
7
|
+
data.tar.gz: bde0f6d91dc7dc1cdd68b45d3e3c0002ab65043ed2d5bbaca14bbfa1a66f54527ab6ea75da661fdd966e64cb6f6ca06b210533347563a2c87300f347d1d0b725
|
@@ -0,0 +1,57 @@
|
|
1
|
+
(function($, undefined) {
|
2
|
+
'use strict';
|
3
|
+
|
4
|
+
var $doc = $(document),
|
5
|
+
current_state;
|
6
|
+
|
7
|
+
// If state changed sets the data vars and tries to launch the callback (if exists)
|
8
|
+
function check_state() {
|
9
|
+
var previous_state = current_state;
|
10
|
+
current_state = get_current_state();
|
11
|
+
|
12
|
+
if ( previous_state !== current_state) {
|
13
|
+
$doc.trigger('mqbe');
|
14
|
+
$doc.trigger('leave.' + previous_state + '.mqbe');
|
15
|
+
$doc.trigger('enter.' + current_state + '.mqbe');
|
16
|
+
}
|
17
|
+
return current_state;
|
18
|
+
}
|
19
|
+
|
20
|
+
// Get state from body:after content
|
21
|
+
function get_current_state() {
|
22
|
+
var state = window.getComputedStyle(document.body,':after').getPropertyValue('content');
|
23
|
+
return state.replace( /["']/g,''); // Firefox / Chrome 43 bugfix
|
24
|
+
}
|
25
|
+
|
26
|
+
// Has the browser mediaqueries support?
|
27
|
+
function detect_mq_support() {
|
28
|
+
return (typeof window.matchMedia !== 'undefined' || typeof window.msMatchMedia !== 'undefined');
|
29
|
+
}
|
30
|
+
|
31
|
+
// Debounced resize
|
32
|
+
// https://github.com/louisremi/jquery-smartresize/
|
33
|
+
function on_resize(c,t){
|
34
|
+
window.onresize = function(){
|
35
|
+
clearTimeout(t);
|
36
|
+
t = setTimeout(c,250);
|
37
|
+
};
|
38
|
+
return c;
|
39
|
+
}
|
40
|
+
|
41
|
+
if (detect_mq_support()) {
|
42
|
+
$(function() {
|
43
|
+
check_state();
|
44
|
+
|
45
|
+
// Start listener ASAP if mq are supported
|
46
|
+
on_resize(function() {
|
47
|
+
check_state();
|
48
|
+
});
|
49
|
+
});
|
50
|
+
}
|
51
|
+
|
52
|
+
window.MQBE = {
|
53
|
+
supported: detect_mq_support,
|
54
|
+
current_state: get_current_state
|
55
|
+
};
|
56
|
+
|
57
|
+
})(jQuery);
|
@@ -0,0 +1,32 @@
|
|
1
|
+
// Vars
|
2
|
+
$mobile: 767px;
|
3
|
+
$tablet: 1023px;
|
4
|
+
$small-desktop: 1200px;
|
5
|
+
|
6
|
+
|
7
|
+
/* DESKTOP */
|
8
|
+
body:after {
|
9
|
+
content: 'desktop';
|
10
|
+
display: none;
|
11
|
+
}
|
12
|
+
|
13
|
+
/* SMALL DESKTOP */
|
14
|
+
@media only screen and (max-width: $small-desktop) {
|
15
|
+
body:after {
|
16
|
+
content: 'small-desktop';
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
/* TABLET */
|
21
|
+
@media only screen and (max-width: $tablet) {
|
22
|
+
body:after {
|
23
|
+
content: 'tablet';
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
/* MOBILE */
|
28
|
+
@media only screen and (max-width: $mobile) {
|
29
|
+
body:after {
|
30
|
+
content: 'mobile';
|
31
|
+
}
|
32
|
+
}
|
data/lib/MQBE.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require "mqbe/version"
|
2
|
+
|
3
|
+
module Mqbe
|
4
|
+
class << self
|
5
|
+
def load!
|
6
|
+
if defined?(::Rails)
|
7
|
+
register_rails_engine
|
8
|
+
elsif defined?(::Sprockets)
|
9
|
+
register_sprockets
|
10
|
+
end
|
11
|
+
configure_sass
|
12
|
+
end
|
13
|
+
|
14
|
+
def assets_path
|
15
|
+
@gem_path ||= File.expand_path "../assets", File.dirname(__FILE__)
|
16
|
+
end
|
17
|
+
|
18
|
+
def stylesheets_path
|
19
|
+
File.join assets_path, 'stylesheets'
|
20
|
+
end
|
21
|
+
|
22
|
+
def javascripts_path
|
23
|
+
File.join assets_path, 'javascripts'
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def configure_sass
|
29
|
+
require 'sass'
|
30
|
+
::Sass.load_paths << stylesheets_path
|
31
|
+
end
|
32
|
+
|
33
|
+
def register_rails_engine
|
34
|
+
require "mqbe/engine"
|
35
|
+
end
|
36
|
+
|
37
|
+
def register_sprockets
|
38
|
+
Sprockets.append_path(stylesheets_path)
|
39
|
+
Sprockets.append_path(javascripts_path)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
Mqbe.load!
|
data/lib/mqbe/engine.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
module Mqbe
|
2
|
+
module Rails
|
3
|
+
class Engine < ::Rails::Engine
|
4
|
+
initializer 'mqbe' do |app|
|
5
|
+
app.config.assets.paths << Mqbe.javascripts_path
|
6
|
+
app.config.assets.paths << Mqbe.stylesheets_path
|
7
|
+
app.middleware.use ::ActionDispatch::Static, Mqbe.assets_path
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
data/lib/mqbe/version.rb
ADDED
metadata
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mqbe
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.4
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- carloscabo
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-08-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.11'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.11'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
description: This small javascript library creates JQuery events that are fired when
|
42
|
+
you enter or leave a CSS media query state, for instance from desktop to tablet...
|
43
|
+
etc. It's useful when you need to start or stop some JS functionallity depending
|
44
|
+
on MediaQuery changes / states.
|
45
|
+
email:
|
46
|
+
- carloscabo@gmail.com
|
47
|
+
executables: []
|
48
|
+
extensions: []
|
49
|
+
extra_rdoc_files: []
|
50
|
+
files:
|
51
|
+
- assets/javascripts/mqbe.js
|
52
|
+
- assets/stylesheets/mqbe.scss
|
53
|
+
- lib/MQBE.rb
|
54
|
+
- lib/mqbe/engine.rb
|
55
|
+
- lib/mqbe/version.rb
|
56
|
+
homepage: https://github.com/carloscabo/MQBE
|
57
|
+
licenses:
|
58
|
+
- MIT
|
59
|
+
metadata: {}
|
60
|
+
post_install_message:
|
61
|
+
rdoc_options: []
|
62
|
+
require_paths:
|
63
|
+
- lib
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
requirements: []
|
75
|
+
rubyforge_project:
|
76
|
+
rubygems_version: 2.5.1
|
77
|
+
signing_key:
|
78
|
+
specification_version: 4
|
79
|
+
summary: Small JS lib that fires events when you enter / leave a CSS mediaquery
|
80
|
+
test_files: []
|