simple_sidebar 0.0.1.pre → 0.0.2.pre

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
  SHA256:
3
- metadata.gz: 8fad6bb78024f4558c3143f3f0c1f7b10fb9fdbd1a01ae95ab04ce9dd62e3319
4
- data.tar.gz: e50593f52f64be048658dae81689eb3aad693d4168faf35fe81ea26ce13b9f24
3
+ metadata.gz: b6c8cfb26fe5f3067b7f90aa1877e35310286ec547953b8fe105b0347b872d53
4
+ data.tar.gz: e7cf4ec723265a31cae6b8a0a70e12fb2958fd1bde1b599b881c6d44e45b7b63
5
5
  SHA512:
6
- metadata.gz: ff9a4d0b9cdb66cf743837a76685d0ef8dc412b1f706aab2b0090e95c63f878938f86488771569671ab1515fecdae4730154863c368f795ed9a9aa381237e73b
7
- data.tar.gz: d9186df087cbcfc44d9164c41b66dcef4d90aede982128895ca1d7fe0dc177bde3af34e5c69ae603f39fe0c364e7e9fdabe901952656f9488604520b82e9d12d
6
+ metadata.gz: 86a5a613c1c626c439e518f2e1c5b0b2aaa60e9e6ece42999b9f13b86dca8047eea533d48a6ac69fee2ae74b25631293f0a3df478fe9d1b014f3c6c41ca19790
7
+ data.tar.gz: 3d7d44cec8e331f42cb22da8baf120d486860db960edb355de5f4c07fefc4a36a1ba9faa4750de4e20b7d5e44a65970ef4442a927d064bbd93ea90e612ce8f3e
data/Rakefile CHANGED
@@ -17,3 +17,5 @@ RDoc::Task.new(:rdoc) do |rdoc|
17
17
  end
18
18
 
19
19
  Bundler::GemHelper.install_tasks
20
+
21
+ require 'rails/dummy/tasks'
@@ -9,12 +9,12 @@
9
9
  # </button>
10
10
  # </div>
11
11
  # <aside
12
- # id="example-sidebar">
12
+ # id="example-sidebar"
13
13
  # data-sidebar-load="/de/backend/authentifizierung/user_sidebar.html"
14
14
  # data-sidebar-mode="overlay"
15
15
  # data-sidebar-position="right"
16
16
  # data-sidebar-size="20rem"
17
- # data-sidebar-state="closed"
17
+ # data-sidebar-state="closed">
18
18
  # <h3>Hello from the example sidebar!</h3>
19
19
  # </aside>
20
20
  # </body>
@@ -30,75 +30,99 @@
30
30
  # size: size that the sidebar will take up (width for left and right, height for top and bottom). Pass any css size in px, rem or whatever you like.
31
31
  #
32
32
  $ ->
33
- $('body').on 'click', '#sidebar-modal-background', ->
34
- target = $("##{$(@).data('sidebar-target')}")
35
- closeModal(target)
36
-
37
- $('[data-sidebar-position]').each (_, e) ->
38
- position = $(@).data('sidebar-position')
39
- $(e).addClass("sidebar sidebar-#{position}")
40
- if $(@).data('sidebar-state') == 'opened'
41
- openModal($(@))
42
-
43
- $('[data-sidebar-trigger]').on 'click', ->
44
- target = $($(@).data('sidebar-trigger'))
45
- state = target.data('sidebar-state')
33
+ initializeSidebars = ->
34
+ $('[data-sidebar-position]').each (_, e) ->
35
+ # add css classes
36
+ position = $(@).data('sidebar-position')
37
+ mode = $(@).data('sidebar-mode')
38
+ size = $(@).data('sidebar-size')
39
+ $(e).addClass("sidebar sidebar-#{position} sidebar-#{mode}")
40
+
41
+ # set correct size
42
+ if position in ['top', 'bottom']
43
+ $(e).outerHeight(size)
44
+ else
45
+ $(e).outerWidth(size)
46
+
47
+ # position outside of viewport
48
+ outer_width = $(e).outerWidth()
49
+ $(e).css(position, "-#{outer_width}px")
50
+
51
+ # display it
52
+ $(e).css("display", "inherit")
53
+
54
+ initializeSidebars()
55
+
56
+ initializeModalBackground = ->
57
+ $('body').on 'click', '#sidebar-modal-background', ->
58
+ target = $("##{$(@).data('sidebar-target')}")
59
+ closeSidebar(target)
60
+
61
+ initializeModalBackground()
62
+
63
+ initializeTriggers = ->
64
+ $('[data-sidebar-trigger]').on 'click', ->
65
+ target = $($(@).data('sidebar-trigger'))
66
+ state = target.data('sidebar-state')
67
+
68
+ if state == 'closed'
69
+ openSidebar(target)
70
+ else
71
+ closeSidebar(target)
72
+
73
+ initializeTriggers()
74
+
75
+ openSidebar = (target) ->
76
+ main_content = $('#main-content')
77
+
78
+ position = target.data('sidebar-position')
79
+ mode = target.data('sidebar-mode')
80
+ size = target.data('sidebar-size')
81
+
82
+ # Move sidebar into viewport
83
+ target.css(position, 0)
84
+
85
+ # Add margin equal to sidebar width/height to main content to make room
86
+ # for the sidebar if in push mode
87
+ main_content.css("margin-#{position}", size) if mode == 'push'
88
+
89
+
90
+ # add modal if in modal mode
91
+ if mode == 'modal'
92
+ $("body").append("<div id=\"sidebar-modal-background\" data-sidebar-target=\"#{target.attr('id')}\"></div>")
93
+ $('#sidebar-modal-background').fadeIn()
94
+
95
+ # load content via ajay if the load option was given
96
+ if target.data('sidebar-load')
97
+ url = target.data('sidebar-load')
98
+ $.ajax
99
+ type: 'GET'
100
+ url: url
101
+ success: (response) ->
102
+ $(target).html(response)
103
+ return
104
+
105
+ # set state
106
+ target.data('sidebar-state', 'opened')
107
+
108
+ closeSidebar = (target) ->
109
+ main_content = $('#main-content')
110
+
111
+ position = target.data('sidebar-position')
112
+ mode = target.data('sidebar-mode')
113
+ size_attribute = if position in ['top', 'bottom'] then 'height' else 'width'
114
+ size = target.data('sidebar-size')
46
115
 
47
- if state == 'closed'
48
- openModal(target)
49
- else
50
- closeModal(target)
51
-
52
- openModal = (target) ->
53
- main_content = $('#main-content')
54
-
55
- position = target.data('sidebar-position')
56
- mode = target.data('sidebar-mode')
57
- size_attribute = if position in ['top', 'bottom'] then 'height' else 'width'
58
- size = target.data('sidebar-size')
59
-
60
- target.css("display", "inherit")
61
- target.css(size_attribute, size)
62
- main_content.css("margin-#{position}", size) if mode == 'push'
63
-
64
-
65
- # modal
66
- if mode == 'modal'
67
- $("body").append("<div id=\"sidebar-modal-background\" data-sidebar-target=\"#{target.attr('id')}\"></div>")
68
-
69
- # load
70
- if target.data('sidebar-load')
71
- url = target.data('sidebar-load')
72
- $.ajax
73
- type: 'GET'
74
- url: url
75
- success: (response) ->
76
- $(target).html(response)
77
- return
78
-
79
- # set state
80
- target.data('sidebar-state', 'opened')
81
-
82
- closeModal = (target) ->
83
- main_content = $('#main-content')
84
-
85
- position = target.data('sidebar-position')
86
- mode = target.data('sidebar-mode')
87
- size_attribute = if position in ['top', 'bottom'] then 'height' else 'width'
88
- size = target.data('sidebar-size')
89
-
90
- # push
91
- if mode == 'push'
92
- main_content.css("margin-#{position}", size)
93
-
94
- # modal
95
- if mode == 'modal'
96
- $("#sidebar-modal-background").remove()
97
-
98
- target.css(size_attribute, '0px')
99
-
100
- if mode == 'push'
101
- main_content.css("margin-#{position}", '0px')
102
-
103
- # set state
104
- target.data('sidebar-state', 'closed')
116
+ # push
117
+ if mode == 'push'
118
+ # main_content.css("margin-#{position}", size)
119
+ main_content.css("margin-#{position}", '0px')
120
+
121
+ # modal
122
+ if mode == 'modal'
123
+ $("#sidebar-modal-background").remove()
124
+
125
+ target.css(position, "-#{target.outerWidth()}px")
126
+
127
+ # set state
128
+ target.data('sidebar-state', 'closed')
@@ -1,51 +1,49 @@
1
- .sidebar {
1
+ .sidebar, [data-sidebar-position] {
2
2
  position: fixed;
3
+ display: none;
3
4
  z-index: 3000;
4
- overflow-x: hidden;
5
- transition: 0.5s;
6
5
  }
6
+ .sidebar {}
7
+
8
+ .sidebar-push {}
9
+ .sidebar-overlay {}
10
+ .sidebar-modal {}
11
+
12
+ .sidebar-closed {}
13
+ .sidebar-opened {}
7
14
 
8
15
  .sidebar-left {
9
16
  height: 100%;
10
- width: 0;
11
17
  top: 0;
12
- left: 0;
18
+ transition: left .5s;
13
19
  }
14
20
  .sidebar-right {
15
21
  height: 100%;
16
- width: 0;
17
22
  top: 0;
18
- right: 0;
23
+ transition: right .5s;
19
24
  }
20
25
  .sidebar-top {
21
26
  width: 100%;
22
- height: 0;
23
27
  left: 0;
24
- top: 0;
28
+ transition: top .5s;
25
29
  }
26
30
  .sidebar-bottom {
27
31
  width: 100%;
28
- height: 0;
29
32
  left: 0;
30
- bottom: 0;
33
+ transition: bottom .5s;
34
+ }
35
+
36
+ #main-content {
37
+ transition: margin .5s;
31
38
  }
32
39
 
33
40
  #sidebar-modal-background {
41
+ display: none;
34
42
  position: fixed;
35
43
  z-index: 2000;
36
44
  left: 0;
37
45
  top: 0;
38
46
  width: 100%;
39
47
  height: 100%;
40
- background-color: rgb(0,0,0);
41
- background-color: rgba(0,0,0,0.4);
42
- }
43
-
44
- #main-content {
45
- transition: margin .5s;
48
+ background: rgba(0,0,0,0.4);
46
49
  }
47
-
48
- /* @media screen and (max-height: 450px) {
49
- .sidebar {padding-top: 15px;}
50
- .sidebar a {font-size: 18px;}
51
- } */
@@ -0,0 +1,4 @@
1
+ .sidebar {
2
+ background-color: lightgrey;
3
+ padding: 1rem;
4
+ }
@@ -0,0 +1,71 @@
1
+ module SimpleSidebar
2
+ # Usage:
3
+ #
4
+ # # app/controllers/application_controller.rb
5
+ # class ApplicationController < AcitonController::Base
6
+ # view_helper SimpleSidebar::ApplicationViewHelper, as: :simple_sidebar_helper
7
+ # end
8
+ #
9
+ class ApplicationViewHelper < Rao::ViewHelper::Base
10
+ # Usage
11
+ #
12
+ # Adding a sidebar:
13
+ #
14
+ #
15
+ # This will add a sidebar on the left in push mode and add some custom html to the
16
+ # sidebar container:
17
+ #
18
+ # <div id="main-content">
19
+ # <button data-sidebar-trigger="#sidebar1">Sidebar 1</button>
20
+ # </div>
21
+ #
22
+ # <%= simple_sidebar_helper(self).render_sidebar(:sidebar1, position: :left, mode: :push, container_html: { style: 'padding: 20px; overflow: scroll;'}) do %>
23
+ # <h3>This is sidebar 1</h3>
24
+ # <button data-sidebar-trigger="#sidebar1">Close me</button>
25
+ # <% end %>
26
+ #
27
+ # This will add a sidebar to the right in default mode (overlay):
28
+ #
29
+ # <div id="main-content">
30
+ # <button data-sidebar-trigger="#sidebar2">Sidebar 2</button>
31
+ # </div>
32
+ # <%= simple_sidebar_helper(self).render_sidebar(:sidebar2, position: :right) do %>
33
+ # <h3>This is sidebar 2</h3>
34
+ # <button data-sidebar-trigger="#sidebar2">Close me</button>
35
+ # <% end %>
36
+ #
37
+ # This will add a sidebar to the top, loading custom content into the sidebar via ajax:
38
+ #
39
+ # <div id="main-content">
40
+ # <button data-sidebar-trigger="#sidebar3">Sidebar 3</button>
41
+ # </div>
42
+ # <%= simple_sidebar_helper(self).render_sidebar(:sidebar3, position: :top, load: '/current_user_profile') do %>
43
+ # <h3>This is sidebar 3</h3>
44
+ # <button data-sidebar-trigger="#sidebar3">Close me</button>
45
+ # <% end %>
46
+ #
47
+ # If you want to load content from external urls you will have to add the correct policies to the cors settings.
48
+ #
49
+ # This will render a sidebar to the bottom in modal mode:
50
+ #
51
+ # <div id="main-content">
52
+ # <button data-sidebar-trigger="#sidebar4">Sidebar 4</button>
53
+ # </div>
54
+ # <%= simple_sidebar_helper(self).render_sidebar(:sidebar4, position: :bottom, mode: :modal) do %>
55
+ # <h3>This is sidebar 4</h3>
56
+ # <button data-sidebar-trigger="#sidebar4">Close me</button>
57
+ # <% end %>
58
+ #
59
+ def render_sidebar(name, options = {}, &block)
60
+ options.reverse_merge!(
61
+ load: nil,
62
+ mode: :overlay,
63
+ position: :left,
64
+ size: '25rem',
65
+ state: :closed,
66
+ container_html: {}
67
+ )
68
+ c.render partial: '/simple_sidebar/application_view_helper/render_sidebar', locals: { name: name, options: options, block: block }
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,9 @@
1
+ <aside
2
+ id="<%= name %>"
3
+ data-sidebar-load="<%= options[:load] %>"
4
+ data-sidebar-mode="<%= options[:mode] %>"
5
+ data-sidebar-position="<%= options[:position] %>"
6
+ data-sidebar-size="<%= options[:size] %>"
7
+ data-sidebar-state="<%= options[:state] %>" <%= options[:container_html].collect { |k,v| "#{k}=\"#{v}\"" }.join(' ').html_safe %>>
8
+ <%= capture(&block) %>
9
+ </aside>
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- Rails.application.config.assets.precompile += %w( simple_sidebar.css )
3
+ Rails.application.config.assets.precompile += %w( simple_sidebar.css simple_sidebar/default_theme.css )
4
4
  Rails.application.config.assets.precompile += %w( simple_sidebar.js )
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SimpleSidebar
4
- VERSION = "0.0.1.pre".freeze
4
+ VERSION = "0.0.2.pre".freeze
5
5
  end
@@ -1,3 +1,6 @@
1
+ require "coffee-rails"
2
+ require "rao-view_helper"
3
+
1
4
  require "simple_sidebar/engine"
2
5
 
3
6
  module SimpleSidebar
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_sidebar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.pre
4
+ version: 0.0.2.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roberto Vasquez Angel
@@ -9,7 +9,105 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2019-04-03 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 5.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 5.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: coffee-rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rao-view_helper
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 0.0.17.pre
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.0.17.pre
55
+ - !ruby/object:Gem::Dependency
56
+ name: sqlite3
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.3.6
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.3.6
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard-rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rails-dummy
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-rails
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
13
111
  description:
14
112
  email:
15
113
  - roberto@vasquez-angel.de
@@ -25,6 +123,9 @@ files:
25
123
  - app/assets/stylesheets/simple_sidebar.css
26
124
  - app/assets/stylesheets/simple_sidebar/application.css
27
125
  - app/assets/stylesheets/simple_sidebar/application/core.css
126
+ - app/assets/stylesheets/simple_sidebar/default_theme.css
127
+ - app/view_helpers/simple_sidebar/application_view_helper.rb
128
+ - app/views/simple_sidebar/application_view_helper/_render_sidebar.html.erb
28
129
  - config/initializers/assets.rb
29
130
  - lib/simple_sidebar.rb
30
131
  - lib/simple_sidebar/engine.rb
@@ -41,7 +142,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
41
142
  requirements:
42
143
  - - ">="
43
144
  - !ruby/object:Gem::Version
44
- version: '0'
145
+ version: 2.5.0
45
146
  required_rubygems_version: !ruby/object:Gem::Requirement
46
147
  requirements:
47
148
  - - ">"
@@ -49,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
49
150
  version: 1.3.1
50
151
  requirements: []
51
152
  rubyforge_project:
52
- rubygems_version: 2.7.7
153
+ rubygems_version: 2.7.6
53
154
  signing_key:
54
155
  specification_version: 4
55
156
  summary: Simple sidebar.