light_mobile 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e6900551f3d587dd6fb345fc83df56013e115bed
4
- data.tar.gz: 1da7ad64139204a9ae106207204ab8e187affb34
3
+ metadata.gz: fccd16ca88cb142929c239c8337d9155be9bc53a
4
+ data.tar.gz: 003903363eb21e6c0b9148472a90665cd7265ccd
5
5
  SHA512:
6
- metadata.gz: fe0275b97ac67d27d77672ba18c3e2d2a2506f40ad58e76a6825fddc19356d95d7e74057bcf7115809f651ef7188c8298da945505efcceb3bc32cc80d9676bc1
7
- data.tar.gz: a521eff34366bdfa929c583614c8518e90aff0c351f21032fedfcabdcf095dde84e28ff9fc927fff2aa7de82fef6a49a89b407a4d34e8e314ecc0bf8148d0608
6
+ metadata.gz: 5e4c17a8d4614bee9ac566fd6a0c9bd3d2fe6b300f474d41f39bb7f1f3ffd2e572f5b23f66f5425a0eba90ae6d42b4269c5ba76444870713ba536c49eb801371
7
+ data.tar.gz: ca123691596a97685cc2b2b74eaa2699770dcb44d3fac4a7db52525827602059a6aeb89819ff024020dc1176815eb8abcb362a8836a0d8e9414631503ebf1ec5
@@ -0,0 +1,69 @@
1
+ # LightMobile
2
+
3
+ ## Installation
4
+
5
+
6
+ ### Gemfile
7
+
8
+ Add to your Gemfile and bundle.
9
+
10
+ ```ruby
11
+ gem "light_mobile"
12
+ ```
13
+
14
+ ### ApplicationController
15
+
16
+ Add this include to your ApplicationController.
17
+
18
+ ```ruby
19
+ class ApplicationController < ActionController::Base
20
+ include LightMobile::DynamicRenderer
21
+ end
22
+ ```
23
+
24
+ ### MimeTypes
25
+
26
+ Add this to "config/initializers/mime_types.rb":
27
+
28
+ ```ruby
29
+ require "light_mobile/mime_types"
30
+ ```
31
+
32
+ ### CSS
33
+
34
+ Add a new file "app/assets/stylesheets/application_mobile.css.scss":
35
+
36
+ ```scss
37
+ /*
38
+ *= require light_mobile/buttons
39
+ *= require light_mobile/menu
40
+ *= require light_mobile/simple_form
41
+ *= require light_mobile/tables
42
+ */
43
+ ```
44
+
45
+ ### JavaScript
46
+
47
+ Add a new file "app/assets/javascripts/application_mobile.js.coffee":
48
+ ```coffee
49
+ #= require light_mobile/menu
50
+ ```
51
+
52
+ ## Usage
53
+
54
+ ### Tabs
55
+
56
+ ```haml
57
+ = mobile_tabs do |tabs|
58
+ - tabs.tab label: "Details", id: "tab-details", active: true
59
+ - tabs.tab label: "Comments", id: "tab-comments"
60
+ - tabs.tab label: "Assigned Users", id: "tab-assigned-users"
61
+
62
+ #tab-details This is the details
63
+ #tab-comments This is the comments
64
+ #tab-assigned-users This is the assigned users
65
+ ```
66
+
67
+ ## License
68
+
69
+ This project rocks and uses MIT-LICENSE.
@@ -0,0 +1,43 @@
1
+ $ ->
2
+ $("table.mobile-tabs").each ->
3
+ lightMobileInitTabs($(this))
4
+
5
+ lightMobileInitTabs = (tabs) ->
6
+ tds = $("tbody > tr > td", tabs)
7
+
8
+ tds.click (e) ->
9
+ lightMobileActivateTab(tabs, $(this))
10
+
11
+ if match = location.hash.match(/^#mobile-tab-(.+)$/)
12
+ mobile_tab_active = match[1]
13
+
14
+ tds.each ->
15
+ tab = $(this)
16
+ active_tab = false
17
+
18
+ container = $("#" + tab.data("tab"))
19
+ container.addClass("mobile-tabs-container")
20
+
21
+ if mobile_tab_active
22
+ active_tab = true if mobile_tab_active == tab.data("tab")
23
+ else if tab.hasClass("mobile-tab-active")
24
+ active_tab = true
25
+
26
+ if active_tab
27
+ tab.addClass("mobile-tab-active")
28
+ container.addClass("mobile-tabs-container-active")
29
+ else
30
+ tab.removeClass("mobile-tab-active")
31
+
32
+ lightMobileActivateTab = (tabs, tab) ->
33
+ active_tab = $("> tbody > tr > td.mobile-tab-active", tabs)
34
+ active_tab.removeClass("mobile-tab-active")
35
+ tab.addClass("mobile-tab-active")
36
+
37
+ active_container = $("#" + active_tab.data("tab"))
38
+ active_container.removeClass("mobile-tabs-container-active")
39
+
40
+ new_container = $("#" + tab.data("tab"))
41
+ new_container.addClass("mobile-tabs-container-active")
42
+
43
+ location.hash = "mobile-tab-" + tab.data("tab")
@@ -10,4 +10,4 @@
10
10
  *
11
11
  *= require_self
12
12
  *= require_tree .
13
- */
13
+ */
@@ -4,7 +4,6 @@ a.mobile-button:link, a.mobile-button:visited, a.mobile-button:hover, a.mobile-b
4
4
  text-decoration: none;
5
5
  display: block;
6
6
  color: #000000;
7
- cursor: default;
8
7
  }
9
8
 
10
9
  .mobile-button {
@@ -16,6 +15,8 @@ a.mobile-button:link, a.mobile-button:visited, a.mobile-button:hover, a.mobile-b
16
15
  text-align: center;
17
16
  height: 41px;
18
17
  white-space: nowrap;
18
+ cursor: pointer;
19
+ margin-bottom: 10px;
19
20
 
20
21
  &.mobile-button-primary {
21
22
  border-color: #006486;
@@ -25,13 +26,14 @@ a.mobile-button:link, a.mobile-button:visited, a.mobile-button:hover, a.mobile-b
25
26
 
26
27
  &.mobile-button-dark {
27
28
  border-color: #7c7c7c;
28
- background-image: url("/gfx/mobile/buttons/button_dark_bg.png");
29
+ background-image: url("/assets/light_mobile/buttons/button_dark_bg.png");
29
30
  color: #ffffff !important;
30
31
  }
31
32
 
32
33
  &.mobile-button-danger {
33
34
  border-color: #761c18;
34
35
  background: linear-gradient(#aa363b, #8d1f23);
36
+ color: #ffffff !important;
35
37
  }
36
38
 
37
39
  &.mobile-button-small {
@@ -3,14 +3,14 @@
3
3
  top: 8px;
4
4
  left: 8px;
5
5
  border: 1px solid #7c7c7c;
6
- background-image: url("/gfx/mobile/buttons/button_dark_bg.png");
6
+ background-image: url("/assets/light_mobile/buttons/button_dark_bg.png");
7
7
  border-radius: 3px;
8
8
  width: 24px;
9
9
  height: 24px;
10
10
  cursor: pointer;
11
11
 
12
12
  .mobile-menu-button-icon {
13
- background-image: url("/gfx/icons/menu_icon.png");
13
+ background-image: url("/assets/light_mobile/buttons/menu_icon.png");
14
14
  background-size: 19px 19px;
15
15
  background-repeat: no-repeat;
16
16
  background-position: 2px 2px;
@@ -47,6 +47,11 @@
47
47
  td:not(:first-child):not(:last-child) {
48
48
  border-top: 1px solid #ababab;
49
49
  }
50
+
51
+ /* If there is only one row, then the top border should still be shown */
52
+ td:first-child:last-child {
53
+ border-top: 1px solid #ababab;
54
+ }
50
55
  }
51
56
 
52
57
  /* If a thead is present, the border of the first td row should not have radius. */
@@ -0,0 +1,47 @@
1
+ table.mobile-tabs {
2
+ width: 100%;
3
+ border-spacing: 0px;
4
+ border-collapse: separate;
5
+ margin-bottom: 15px;
6
+ table-layout: fixed;
7
+
8
+ > tbody {
9
+ > tr {
10
+ > td {
11
+ border: 1px solid #ababab;
12
+ border-right: none;
13
+ background-color: #f6f6f6;
14
+ list-style-type: none;
15
+ padding: 10px;
16
+ text-align: center;
17
+ cursor: pointer;
18
+ width: auto;
19
+ }
20
+
21
+ > td.mobile-tab-active {
22
+ font-weight: bold;
23
+ background-color: #5595bf;
24
+ color: #ffffff;
25
+ }
26
+
27
+ > td:first-child {
28
+ border-top-left-radius: 10px;
29
+ border-bottom-left-radius: 10px;
30
+ }
31
+
32
+ > td:last-child {
33
+ border-top-right-radius: 10px;
34
+ border-bottom-right-radius: 10px;
35
+ border-right: 1px solid #ababab;
36
+ }
37
+ }
38
+ }
39
+ }
40
+
41
+ .mobile-tabs-container {
42
+ display: none;
43
+
44
+ &.mobile-tabs-container-active {
45
+ display: block;
46
+ }
47
+ }
@@ -0,0 +1,7 @@
1
+ module LightMobile::TabsHelper
2
+ def mobile_tabs(args = {})
3
+ tabs = LightMobile::Tabs.new(args)
4
+ yield tabs
5
+ return tabs.to_html
6
+ end
7
+ end
@@ -1,4 +1,15 @@
1
1
  require "light_mobile/engine"
2
+ require "html_gen"
2
3
 
3
4
  module LightMobile
5
+ def self.const_missing(name)
6
+ file_name = "#{::File.dirname(__FILE__)}/light_mobile/#{::StringCases.camel_to_snake(name)}.rb"
7
+
8
+ if ::File.exists?(file_name)
9
+ require file_name
10
+ return ::LightMobile.const_get(name) if ::LightMobile.const_defined?(name)
11
+ end
12
+
13
+ super
14
+ end
4
15
  end
@@ -0,0 +1,22 @@
1
+ module LightMobile::DynamicRenderer
2
+ # In order to only render mobile views if they exist.
3
+ def render(*args, &blk)
4
+ if request.user_agent && view_context.agent_mobile? && (session[:light_mobile_version].to_s == "mobile" || !session[:light_mobile_version].present?)
5
+ name = args[0]
6
+ name = action_name.to_sym if !name.is_a?(Symbol) && !name.is_a?(String)
7
+
8
+ if name.is_a? Symbol
9
+ view_paths.each do |view_path|
10
+ ActionView::Template::Handlers.extensions.each do |handler|
11
+ full_path = "#{view_path}/#{controller_path}/#{name}.mobile.#{handler}"
12
+ next unless File.exists? full_path
13
+ request.format = :mobile
14
+ self.formats = [:mobile, :html]
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ super
21
+ end
22
+ end
@@ -0,0 +1 @@
1
+ Mime::Type.register "text/html", :mobile
@@ -0,0 +1,24 @@
1
+ class LightMobile::Tabs
2
+ def initialize(args)
3
+ @tabs = []
4
+ end
5
+
6
+ def tab(args)
7
+ @tabs << args
8
+ end
9
+
10
+ def to_html
11
+ table = ::HtmlGen::Element.new(:table, classes: ["mobile-tabs"])
12
+ tr = table.add_ele(:tbody).add_ele(:tr)
13
+
14
+ @tabs.each do |tab|
15
+ td = tr.add_ele(:td)
16
+
17
+ td.classes << "mobile-tab-active" if tab[:active]
18
+ td.data[:tab] = tab[:id]
19
+ td.add_str tab[:label]
20
+ end
21
+
22
+ table.html.html_safe
23
+ end
24
+ end
@@ -1,3 +1,3 @@
1
1
  module LightMobile
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: light_mobile
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kasper Johansen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-12 00:00:00.000000000 Z
11
+ date: 2015-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 4.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: html_gen
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.6
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.6
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: sqlite3
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -46,21 +60,30 @@ extensions: []
46
60
  extra_rdoc_files: []
47
61
  files:
48
62
  - MIT-LICENSE
49
- - README.rdoc
63
+ - README.md
50
64
  - Rakefile
65
+ - app/assets/images/light_mobile/buttons/button_dark_bg.png
66
+ - app/assets/images/light_mobile/buttons/menu_icon.png
67
+ - app/assets/images/light_mobile/layout/header_bar_bg.png
51
68
  - app/assets/javascripts/light_mobile/application.js
52
69
  - app/assets/javascripts/light_mobile/menu.js.coffee
53
- - app/assets/stylesheets/light_mobile/application.css
70
+ - app/assets/javascripts/light_mobile/tabs.js.coffee
71
+ - app/assets/stylesheets/light_mobile/application.css.scss
54
72
  - app/assets/stylesheets/light_mobile/buttons.css.scss
55
73
  - app/assets/stylesheets/light_mobile/menu.css.scss
56
74
  - app/assets/stylesheets/light_mobile/simple_form.css.scss
57
75
  - app/assets/stylesheets/light_mobile/tables.css.scss
76
+ - app/assets/stylesheets/light_mobile/tabs.css.scss
58
77
  - app/controllers/light_mobile/application_controller.rb
59
78
  - app/helpers/light_mobile/application_helper.rb
79
+ - app/helpers/light_mobile/tabs_helper.rb
60
80
  - app/views/layouts/light_mobile/application.html.erb
61
81
  - config/routes.rb
62
82
  - lib/light_mobile.rb
83
+ - lib/light_mobile/dynamic_renderer.rb
63
84
  - lib/light_mobile/engine.rb
85
+ - lib/light_mobile/mime_types.rb
86
+ - lib/light_mobile/tabs.rb
64
87
  - lib/light_mobile/version.rb
65
88
  - lib/tasks/light_mobile_tasks.rake
66
89
  - test/dummy/README.rdoc
@@ -1,3 +0,0 @@
1
- = LightMobile
2
-
3
- This project rocks and uses MIT-LICENSE.