simple_sidebar 0.0.4.pre → 0.0.5.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aebaac8e3e6cc1e73ae62d30e4e6c46bf2ac854864b3e2fb4d7806a87af13cb0
4
- data.tar.gz: 528927b63e00292f69bd2cbd126bcdcd2a80c6df66c344ab10a214f4066b973a
3
+ metadata.gz: 2e7a64b43e41a0c5e8329c8a7ea796c2f48dd99ead237f91f3709ebd2b523aea
4
+ data.tar.gz: b53501cea0aeeceaa9715559dfb6359fed536e636662426aeb8b0f2d2340f618
5
5
  SHA512:
6
- metadata.gz: 6ceeba101cfee8f105bd7f5eed55272c92e60274ac744d8ec0465b19934e1bf784b320504681aecd7c4c66e81c16fa3ff124a33d9b684787dacab2a5b681061d
7
- data.tar.gz: 9f6767bfc1a85b18143be4ba06b469afc10bac76e27b4fca8f59a833525a19deb49e81c1837e868e7c593654bd5cda02e10b13d292709dd891c4eb8cdbcc890b
6
+ metadata.gz: 119cc66208ea5e6f7f4930fff4d69d10a8ac2cc2da9659682e3015e0ba7c136fc49de45e352423fc937d5ad45d0cb875e1a4abb76f6f121d6e17fa9ebf449156
7
+ data.tar.gz: c4461c81889535cac550f56f3d51757214e7b73939d862a14602497e5522c9293e6ba57e10278389bdbec93b4c0830dbfccfec8a4bc24b95513c0b8165b97d51
@@ -28,6 +28,7 @@
28
28
  # modal: Like overlay, but with a modal background.
29
29
  # position: left|right|top|bottom
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
+ # state: open|closed
31
32
  #
32
33
  $ ->
33
34
  initializeSidebars = ->
@@ -36,6 +37,8 @@ $ ->
36
37
  position = $(@).data('sidebar-position')
37
38
  mode = $(@).data('sidebar-mode')
38
39
  size = $(@).data('sidebar-size')
40
+ state = $(@).data('sidebar-state')
41
+
39
42
  $(e).addClass("sidebar sidebar-#{position} sidebar-#{mode}")
40
43
 
41
44
  # set correct size
@@ -51,14 +54,16 @@ $ ->
51
54
  # display it
52
55
  $(e).css("display", "inherit")
53
56
 
54
- initializeSidebars()
57
+ # set initial state
58
+ if state == 'open'
59
+ openSidebar($(@), false)
60
+
55
61
 
56
62
  initializeModalBackground = ->
57
63
  $('body').on 'click', '#sidebar-modal-background', ->
58
64
  target = $("##{$(@).data('sidebar-target')}")
59
65
  closeSidebar(target)
60
66
 
61
- initializeModalBackground()
62
67
 
63
68
  initializeTriggers = ->
64
69
  $('[data-sidebar-trigger]').on 'click', ->
@@ -66,13 +71,12 @@ $ ->
66
71
  state = target.data('sidebar-state')
67
72
 
68
73
  if state == 'closed'
69
- openSidebar(target)
74
+ openSidebar(target, true)
70
75
  else
71
- closeSidebar(target)
76
+ closeSidebar(target, true)
72
77
 
73
- initializeTriggers()
74
78
 
75
- openSidebar = (target) ->
79
+ openSidebar = (target, animate = false) ->
76
80
  main_content = $('#main-content')
77
81
 
78
82
  position = target.data('sidebar-position')
@@ -80,12 +84,17 @@ $ ->
80
84
  size = target.data('sidebar-size')
81
85
 
82
86
  # Move sidebar into viewport
83
- target.css(position, 0)
87
+ if(animate == true)
88
+ target.animate({ "#{position}": 0 }, 500);
89
+ else
90
+ target.css(position, 0)
84
91
 
85
92
  # Add margin equal to sidebar width/height to main content to make room
86
93
  # for the sidebar if in push mode
87
- main_content.css("margin-#{position}", size) if mode == 'push'
88
-
94
+ if(animate == true)
95
+ main_content.animate({ "margin-#{position}": size }, 500);
96
+ else
97
+ main_content.css("margin-#{position}", size) if mode == 'push'
89
98
 
90
99
  # add modal if in modal mode
91
100
  if mode == 'modal'
@@ -103,9 +112,9 @@ $ ->
103
112
  return
104
113
 
105
114
  # set state
106
- target.data('sidebar-state', 'opened')
115
+ target.data('sidebar-state', 'open')
107
116
 
108
- closeSidebar = (target) ->
117
+ closeSidebar = (target, animate = false) ->
109
118
  main_content = $('#main-content')
110
119
 
111
120
  position = target.data('sidebar-position')
@@ -115,14 +124,23 @@ $ ->
115
124
 
116
125
  # push
117
126
  if mode == 'push'
118
- # main_content.css("margin-#{position}", size)
119
- main_content.css("margin-#{position}", '0px')
127
+ if(animate == true)
128
+ main_content.animate({ 'marginLeft': 0 }, 500);
129
+ else
130
+ main_content.css("margin-#{position}", '0px')
120
131
 
121
132
  # modal
122
133
  if mode == 'modal'
123
134
  $("#sidebar-modal-background").remove()
124
135
 
125
- target.css(position, "-#{target.outerWidth()}px")
136
+ if(animate == true)
137
+ target.animate({ "#{position}": "-#{target.outerWidth()}px" }, 500);
138
+ else
139
+ target.css(position, "-#{target.outerWidth()}px")
126
140
 
127
141
  # set state
128
142
  target.data('sidebar-state', 'closed')
143
+
144
+ initializeSidebars()
145
+ initializeModalBackground()
146
+ initializeTriggers()
@@ -0,0 +1,151 @@
1
+ # Usage:
2
+ #
3
+ # Put all the content that is not in the sidebar in a container with the id #main-content a trigger button and add a sidebar.
4
+ #
5
+ # <body>
6
+ # <div id="main-content">
7
+ # <button data-sidebar-trigger="#example-sidebar">
8
+ # Toggle the example sidebar!
9
+ # </button>
10
+ # </div>
11
+ # <aside
12
+ # id="example-sidebar"
13
+ # data-sidebar-load="/de/backend/authentifizierung/user_sidebar.html"
14
+ # data-sidebar-mode="overlay"
15
+ # data-sidebar-position="right"
16
+ # data-sidebar-size="20rem"
17
+ # data-sidebar-state="closed">
18
+ # <h3>Hello from the example sidebar!</h3>
19
+ # </aside>
20
+ # </body>
21
+ #
22
+ # Options:
23
+ #
24
+ # load: Passing an url to load will load the content of the url via ajax and display it in the sidebar.
25
+ # mode:
26
+ # push: This will decrease the size of the main content, making room for the sidebar.
27
+ # overlay: This will show the sidebar on top of the content, without moving it.
28
+ # modal: Like overlay, but with a modal background.
29
+ # position: left|right|top|bottom
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
+ #
32
+ $ ->
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
+ state = $(@).data('sidebar-state')
40
+ console.log(state)
41
+ $(e).addClass("sidebar sidebar-#{position} sidebar-#{mode}")
42
+
43
+ # set correct size
44
+ if position in ['top', 'bottom']
45
+ $(e).outerHeight(size)
46
+ else
47
+ $(e).outerWidth(size)
48
+
49
+ # position outside of viewport
50
+ outer_width = $(e).outerWidth()
51
+ $(e).css(position, "-#{outer_width}px")
52
+
53
+ # display it
54
+ $(e).css("display", "inherit")
55
+
56
+ # set initial state
57
+ if state == 'opened'
58
+ openSidebar($(@), false)
59
+
60
+
61
+ initializeModalBackground = ->
62
+ $('body').on 'click', '#sidebar-modal-background', ->
63
+ target = $("##{$(@).data('sidebar-target')}")
64
+ closeSidebar(target)
65
+
66
+
67
+ initializeTriggers = ->
68
+ $('[data-sidebar-trigger]').on 'click', ->
69
+ target = $($(@).data('sidebar-trigger'))
70
+ state = target.data('sidebar-state')
71
+
72
+ if state == 'closed'
73
+ openSidebar(target)
74
+ else
75
+ closeSidebar(target)
76
+
77
+
78
+ openSidebar = (target, fadeIn = true) ->
79
+ main_content = $('#main-content')
80
+
81
+ position = target.data('sidebar-position')
82
+ mode = target.data('sidebar-mode')
83
+ size = target.data('sidebar-size')
84
+
85
+ # Add margin equal to sidebar width/height to main content to make room
86
+ # for the sidebar if in push mode
87
+ if(mode == 'push')
88
+ if(fadeIn == true)
89
+ # main_content.toggleClass('transition-none')
90
+ main_content.css("transition", "margin .5s")
91
+
92
+ # Move sidebar into viewport
93
+ target.css(position, 0)
94
+
95
+ main_content.css("margin-#{position}", size)
96
+
97
+ if(fadeIn == true)
98
+ main_content.offsetHeight;
99
+ target.offsetHeight;
100
+ # main_content.toggleClass('transition-none')
101
+ main_content.css("transition", "none")
102
+ else
103
+ # Move sidebar into viewport
104
+ target.css(position, 0)
105
+
106
+ # add modal if in modal mode
107
+ if mode == 'modal'
108
+ $("body").append("<div id=\"sidebar-modal-background\" data-sidebar-target=\"#{target.attr('id')}\"></div>")
109
+ if(fadeIn == true)
110
+ $('#sidebar-modal-background').fadeIn()
111
+ else
112
+ $('#sidebar-modal-background').show()
113
+
114
+ # load content via ajax if the load option was given
115
+ if target.data('sidebar-load')
116
+ url = target.data('sidebar-load')
117
+ $.ajax
118
+ type: 'GET'
119
+ url: url
120
+ success: (response) ->
121
+ $(target).html(response)
122
+ return
123
+
124
+ # set state
125
+ target.data('sidebar-state', 'opened')
126
+
127
+ closeSidebar = (target) ->
128
+ main_content = $('#main-content')
129
+
130
+ position = target.data('sidebar-position')
131
+ mode = target.data('sidebar-mode')
132
+ size_attribute = if position in ['top', 'bottom'] then 'height' else 'width'
133
+ size = target.data('sidebar-size')
134
+
135
+ # push
136
+ if mode == 'push'
137
+ # main_content.css("margin-#{position}", size)
138
+ main_content.css("margin-#{position}", '0px')
139
+
140
+ # modal
141
+ if mode == 'modal'
142
+ $("#sidebar-modal-background").remove()
143
+
144
+ target.css(position, "-#{target.outerWidth()}px")
145
+
146
+ # set state
147
+ target.data('sidebar-state', 'closed')
148
+
149
+ initializeSidebars()
150
+ initializeModalBackground()
151
+ initializeTriggers()
@@ -15,29 +15,23 @@
15
15
  .sidebar-left {
16
16
  height: 100%;
17
17
  top: 0;
18
- transition: left .5s;
19
18
  overflow-y: auto;
20
19
  }
21
20
  .sidebar-right {
22
21
  height: 100%;
23
22
  top: 0;
24
- transition: right .5s;
25
23
  overflow-y: auto;
26
24
  }
27
25
  .sidebar-top {
28
26
  width: 100%;
29
27
  left: 0;
30
- transition: top .5s;
31
28
  }
32
29
  .sidebar-bottom {
33
30
  width: 100%;
34
31
  left: 0;
35
- transition: bottom .5s;
36
32
  }
37
33
 
38
- #main-content {
39
- transition: margin .5s;
40
- }
34
+ #main-content {}
41
35
 
42
36
  #sidebar-modal-background {
43
37
  display: none;
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SimpleSidebar
4
- VERSION = "0.0.4.pre".freeze
4
+ VERSION = "0.0.5.pre".freeze
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_sidebar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4.pre
4
+ version: 0.0.5.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roberto Vasquez Angel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-03 00:00:00.000000000 Z
11
+ date: 2021-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -120,6 +120,7 @@ files:
120
120
  - app/assets/javascripts/simple_sidebar.js
121
121
  - app/assets/javascripts/simple_sidebar/application.js
122
122
  - app/assets/javascripts/simple_sidebar/application/core.js.coffee
123
+ - app/assets/javascripts/simple_sidebar/application/core.js.coffee~
123
124
  - app/assets/stylesheets/simple_sidebar.css
124
125
  - app/assets/stylesheets/simple_sidebar/application.css
125
126
  - app/assets/stylesheets/simple_sidebar/application/core.css
@@ -149,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
150
  - !ruby/object:Gem::Version
150
151
  version: 1.3.1
151
152
  requirements: []
152
- rubygems_version: 3.0.3
153
+ rubygems_version: 3.0.8
153
154
  signing_key:
154
155
  specification_version: 4
155
156
  summary: Simple sidebar.