partystreusel 1.0.8 → 1.1.0pre1

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.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v1.1.0pre1
4
+ * Refactored Readmore
5
+ * Add Offcanvas
6
+
3
7
  ## v1.0.8
4
8
  * IE8 fixes (readmore, ie_fixes did not work in IE8)
5
9
 
data/Gemfile CHANGED
@@ -19,5 +19,4 @@ group :development, :test do
19
19
  gem 'jquery-rails'
20
20
  gem 'i18n-js'
21
21
  gem 'guard-jasmine'
22
- gem 'guard-jslint-on-rails'
23
22
  end
data/Guardfile CHANGED
@@ -8,13 +8,3 @@ guard :jasmine, console: :always do
8
8
  watch(%r{app/assets/stylesheets/.+$})
9
9
  watch(%r{app/assets/javascripts/(.+?)\.(js\.coffee|js|coffee)(?:\.\w+)*$}) { |m| "spec/javascripts/#{ m[1] }_spec.#{ m[2] }" }
10
10
  end
11
-
12
-
13
- # verify that application Javascript files are lintable
14
- # see https://github.com/psionides/jslint_on_rails
15
- guard 'jslint-on-rails' do
16
- # watch for changes to application javascript files
17
- watch(%r{^app/assets/javascripts/.*\.js$})
18
- # watch for changes to the JSLint configuration
19
- watch('config/jslint.yml')
20
- end
@@ -1,2 +1,3 @@
1
1
  #= require partystreusel/scroll_to
2
2
  #= require partystreusel/readmore
3
+ #= require partystreusel/offcanvas
@@ -6,10 +6,14 @@ class Partystreusel.Base
6
6
  @className = 'Base'
7
7
 
8
8
  @selector: ->
9
- "[data-streusel-#{@className.toLowerCase()}]"
9
+ prefix = Partystreusel.selectorPrefix || 'streusel'
10
+ if Streusel.selectorType == 'css_class'
11
+ ".#{prefix}-#{@className.toLowerCase()}"
12
+ else
13
+ "[data-#{prefix}-#{@className.toLowerCase()}]"
10
14
 
11
15
  @init: (element = $('body')) ->
12
- element.find(@selector())
16
+ element.find(@selector()).addBack(@selector())
13
17
  .filter (i, el) -> !($(el).data('object')?)
14
18
  .map (i, el) => new @(el)
15
19
 
@@ -0,0 +1,22 @@
1
+ #= require partystreusel/base
2
+
3
+ class Offcanvas extends Partystreusel.Base
4
+ @className = 'Offcanvas'
5
+
6
+ constructor: (el) ->
7
+ super
8
+ @$el.find('.js-offcanvas__toggler').on 'click', @toggle
9
+ @$el.find('.offcanvas__overlay').on 'click', @toggle
10
+ @$el.find('.offcanvas-nav__link').on 'click', @toggleNavLink
11
+
12
+ toggle: =>
13
+ @$el.toggleClass('offcanvas--open')
14
+
15
+ toggleNavLink: (e) =>
16
+ navLink = $(e.target).closest('.offcanvas-nav__link')
17
+ subNav = navLink.next('.offcanvas-nav__sub')
18
+ return if subNav.length == 0
19
+ e.preventDefault()
20
+ subNav.toggleClass('offcanvas-nav__sub--open')
21
+
22
+ Partystreusel.Offcanvas = Offcanvas
@@ -5,40 +5,38 @@ class Readmore extends Partystreusel.Base
5
5
 
6
6
  constructor: (el) ->
7
7
  super
8
+ return if $.trim(@$el.text()) == ''
8
9
 
9
- @contentDiv = $('<div/>')
10
- .append(@$el.contents())
11
- .addClass('hide')
12
- @$el.append(@contentDiv)
10
+ unless @$el.hasClass('readmore--opened') || @$el.hasClass('readmore--closed')
11
+ @$el.addClass('readmore--closed')
13
12
 
14
- return if $.trim(@contentDiv.text()) == ''
13
+ @button = @$el.next()
14
+ unless @button.hasClass('readmore__button')
15
+ @button = @renderButton()
16
+ @button.insertAfter(@$el)
15
17
 
16
- @button = @renderButton('open')
17
18
  $(@button).bind 'click', @toggle
18
- @$el.append(@button)
19
19
 
20
20
  toggle: (event) =>
21
- @button.toggleClass('open close')
22
21
  @button.text(@buttonText())
23
- @contentDiv.slideToggle =>
24
- @contentDiv.toggleClass('hide')
25
- @contentDiv.css('display', "")
26
- @contentDiv.removeAttr('style') if @contentDiv.attr('style') == ''
22
+ @$el.slideToggle =>
23
+ @$el.toggleClass('readmore--opened readmore--closed')
24
+ @$el.css('display', "")
25
+ @$el.removeAttr('style') if @$el.attr('style') == ''
27
26
  return false
28
27
 
29
28
  buttonState: ->
30
- classes = @button.attr('class').split(' ')
31
- classes = classes.filter (v) -> v != 'button'
32
- classes[0]
29
+ return 'close' if @$el.hasClass('readmore--opened')
30
+ 'open'
33
31
 
34
32
  buttonText: (state = @buttonState()) ->
35
33
  I18n.t("readmore.button_text.#{state}")
36
34
 
37
- renderButton: (state) =>
38
- text = @buttonText(state)
35
+ renderButton: =>
36
+ text = @buttonText()
39
37
 
40
38
  $('<a></a>')
41
- .addClass(state + ' button')
39
+ .addClass('readmore__button')
42
40
  .attr('href', '#')
43
41
  .html(text)
44
42
 
@@ -1,2 +1,2 @@
1
- .hide
1
+ .readmore--closed
2
2
  display: none
@@ -1,3 +1,3 @@
1
1
  module Partystreusel
2
- VERSION = "1.0.8"
2
+ VERSION = "1.1.0pre1"
3
3
  end
@@ -3,6 +3,8 @@ describe 'Base', ->
3
3
  describe 'class functions', ->
4
4
 
5
5
  beforeEach ->
6
+ Streusel.selectorPrefix = undefined
7
+ Streusel.selectorType = undefined
6
8
  initSpy = jasmine.createSpy('initSpy')
7
9
  @initSpy = initSpy
8
10
 
@@ -15,6 +17,11 @@ describe 'Base', ->
15
17
 
16
18
  @subject = MyClass
17
19
 
20
+ it 'computes selector based on class name', ->
21
+ Streusel.selectorPrefix = 'js'
22
+ Streusel.selectorType = 'css_class'
23
+ expect(@subject.selector()).toEqual('.js-myclass')
24
+
18
25
  it 'computes selector based on class name', ->
19
26
  expect(@subject.selector()).toEqual('[data-streusel-myclass]')
20
27
 
@@ -0,0 +1,24 @@
1
+ describe 'Offcanvas', ->
2
+
3
+ it 'Streusel.Offcanvas exist', ->
4
+ expect(Streusel.Offcanvas).toBeDefined()
5
+
6
+ describe 'Readmore object', ->
7
+
8
+ beforeEach ->
9
+ @el = affix('[data-streusel-offcanvas] .js-offcanvas__toggler+.offcanvas__overlay')
10
+ @subject = Partystreusel.Offcanvas.init()[0]
11
+
12
+ it 'toggles correcty with togger', ->
13
+ expect(@el).not.toHaveClass('offcanvas--open')
14
+ $('.js-offcanvas__toggler').trigger('click')
15
+ expect(@el).toHaveClass('offcanvas--open')
16
+ $('.js-offcanvas__toggler').trigger('click')
17
+ expect(@el).not.toHaveClass('offcanvas--open')
18
+
19
+ it 'closes correctly with overlay', ->
20
+ expect(@el).not.toHaveClass('offcanvas--open')
21
+ $('.js-offcanvas__toggler').trigger('click')
22
+ expect(@el).toHaveClass('offcanvas--open')
23
+ $('.offcanvas__overlay').trigger('click')
24
+ expect(@el).not.toHaveClass('offcanvas--open')
@@ -18,10 +18,9 @@ describe 'Readmore', ->
18
18
  @subject = Partystreusel.Readmore.init()[0]
19
19
 
20
20
  it 'renders an open button', ->
21
- @subject = @subject.renderButton('open')
21
+ @subject = @subject.renderButton()
22
22
  expect(@subject.text()).toEqual('Read more')
23
- expect(@subject).toHaveClass('button')
24
- expect(@subject).toHaveClass('open')
23
+ expect(@subject).toHaveClass('readmore__button')
25
24
 
26
25
  it 'toggles button state', ->
27
26
  expect(@subject.buttonState()).toEqual('open')
@@ -37,27 +36,22 @@ describe 'Readmore', ->
37
36
  @subject.html('Some Test text')
38
37
  Partystreusel.Readmore.init()
39
38
 
40
- it 'add a read more button to the div', ->
41
- expect(@subject).toContain('a.button')
42
-
43
- it 'moves text into a separate div', ->
44
- expect(@subject).toContain('div')
45
- expect(@subject.find('div')).toBeHidden()
46
- expect(@subject.find('div').html()).toEqual('Some Test text')
39
+ it 'add a read more button after readmore', ->
40
+ expect(@subject.next()).toHaveClass('readmore__button')
47
41
 
48
42
  it 'toggle button on click', ->
49
- @subject.find('.button').trigger('click')
50
- expect(@subject.find('.button')).toHaveClass('button')
51
- expect(@subject.find('.button')).toHaveClass('close')
52
- expect(@subject.find('div')).not.toHaveClass('hide')
53
- expect(@subject.find('div')).not.toHaveAttr('style')
54
- expect(@subject.find('div')).not.toBeHidden()
55
- @subject.find('.button').trigger('click')
56
- expect(@subject.find('.button')).toHaveClass('button')
57
- expect(@subject.find('.button')).toHaveClass('open')
58
- expect(@subject.find('div')).toHaveClass('hide')
59
- expect(@subject.find('div')).not.toHaveAttr('style')
60
- expect(@subject.find('div')).toBeHidden()
43
+ expect(@subject.next()).toHaveClass('readmore__button')
44
+ expect(@subject).toHaveClass('readmore--closed')
45
+ @subject.next().trigger('click')
46
+ expect(@subject.next()).toHaveClass('readmore__button')
47
+ expect(@subject).toHaveClass('readmore--opened')
48
+ expect(@subject).not.toHaveAttr('style')
49
+ expect(@subject).not.toBeHidden()
50
+ @subject.next().trigger('click')
51
+ expect(@subject.next()).toHaveClass('readmore__button')
52
+ expect(@subject).toHaveClass('readmore--closed')
53
+ expect(@subject).not.toHaveAttr('style')
54
+ expect(@subject).toBeHidden()
61
55
 
62
56
  describe 'without content', ->
63
57
 
@@ -69,4 +63,12 @@ describe 'Readmore', ->
69
63
  it 'removes element when no content available', ->
70
64
  expect(@subject).not.toContain('a.button')
71
65
 
66
+ describe 'with custom button', ->
67
+
68
+ beforeEach ->
69
+ @subject = affix('[data-streusel-readmore]+button.myclass.readmore__button').html('Some Test text')
70
+ Partystreusel.Readmore.init()
71
+
72
+ it 'uses custom button', ->
73
+ expect(@subject.next()).toHaveClass('myclass')
72
74
 
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: partystreusel
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.1.0pre1
5
+ prerelease: 5
5
6
  platform: ruby
6
7
  authors:
7
8
  - Flavio Pellanda
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-08-11 00:00:00.000000000 Z
12
+ date: 2015-02-26 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: railties
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ! '>='
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ! '>='
25
28
  - !ruby/object:Gem::Version
@@ -27,6 +30,7 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: i18n-js
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - ! '>='
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - ! '>='
39
44
  - !ruby/object:Gem::Version
@@ -60,6 +65,7 @@ files:
60
65
  - app/assets/javascripts/partystreusel/foundation_helpers.js.coffee
61
66
  - app/assets/javascripts/partystreusel/ie_fixes.js.coffee
62
67
  - app/assets/javascripts/partystreusel/namespace.js.coffee
68
+ - app/assets/javascripts/partystreusel/offcanvas.js.coffee
63
69
  - app/assets/javascripts/partystreusel/readmore.js.coffee
64
70
  - app/assets/javascripts/partystreusel/scroll_to.js.coffee
65
71
  - app/assets/javascripts/partystreusel/translations.js.coffee
@@ -74,6 +80,7 @@ files:
74
80
  - spec/javascripts/helpers/jasmine-fixture.js
75
81
  - spec/javascripts/helpers/jasmine-jquery.js
76
82
  - spec/javascripts/partystreusel/base_spec.js.coffee
83
+ - spec/javascripts/partystreusel/offcanvas_spec.js.coffee
77
84
  - spec/javascripts/partystreusel/readmore_spec.js.coffee
78
85
  - spec/javascripts/partystreusel/scroll_to_spec.js.coffee
79
86
  - spec/javascripts/spec.css
@@ -81,32 +88,34 @@ files:
81
88
  - spec/javascripts/support/jasmine_helper.rb
82
89
  homepage: http://www.screenconcept.ch
83
90
  licenses: []
84
- metadata: {}
85
91
  post_install_message:
86
92
  rdoc_options: []
87
93
  require_paths:
88
94
  - lib
89
95
  required_ruby_version: !ruby/object:Gem::Requirement
96
+ none: false
90
97
  requirements:
91
98
  - - ! '>='
92
99
  - !ruby/object:Gem::Version
93
100
  version: '0'
94
101
  required_rubygems_version: !ruby/object:Gem::Requirement
102
+ none: false
95
103
  requirements:
96
- - - ! '>='
104
+ - - ! '>'
97
105
  - !ruby/object:Gem::Version
98
- version: '0'
106
+ version: 1.3.1
99
107
  requirements: []
100
108
  rubyforge_project: partystreusel
101
- rubygems_version: 2.3.0
109
+ rubygems_version: 1.8.23
102
110
  signing_key:
103
- specification_version: 4
111
+ specification_version: 3
104
112
  summary: A collection uf reusable javascript components by Screen Concept
105
113
  test_files:
106
114
  - spec/javascripts/helpers/.gitkeep
107
115
  - spec/javascripts/helpers/jasmine-fixture.js
108
116
  - spec/javascripts/helpers/jasmine-jquery.js
109
117
  - spec/javascripts/partystreusel/base_spec.js.coffee
118
+ - spec/javascripts/partystreusel/offcanvas_spec.js.coffee
110
119
  - spec/javascripts/partystreusel/readmore_spec.js.coffee
111
120
  - spec/javascripts/partystreusel/scroll_to_spec.js.coffee
112
121
  - spec/javascripts/spec.css
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NzU5MDEwNTZhNTdlMWNhNjY5MjcwZWU1ZmU0N2Q1MzcyOGM1ZWUxOA==
5
- data.tar.gz: !binary |-
6
- ODY4OWVmYzg2ZjkwZDI4NGMyNGQzYjlhOGI4M2JjNzNiOGY4YTc3NA==
7
- SHA512:
8
- metadata.gz: !binary |-
9
- M2U5YmQ1ZTYxZWRkNTEzMTI0YjcwYjFmMWQxOWY4Yjg2MzY0YTY5Y2VjODE4
10
- MTQyMWM4YjMwNmRiYmFmN2E3NTIwZjFhNTYxOGQ0MWY3YTU1ZGM0OGJkNzRj
11
- ZjNmODM0ZTA2NGNjZWI5NWJlMGYwZGI2MTE4MDA0MDU3YjEwZGM=
12
- data.tar.gz: !binary |-
13
- NjZiYTlhMGY4ZDhiZjBhYzNkMjk5N2M5NTQ5ZDcyMjQ4ODUyYmRhMTE2NDFm
14
- MGQ1ZjVlMzQ4YmJkYjYwODc1OGY1MzAwODVmZmRkZjU0YzliNGZhZDQ1NWE5
15
- YmM3ZTk4ODc0Y2E2N2E0YjE2ZTM0N2YxM2EzOGI5MTY5ZmRiMDk=