epi_js 0.0.21 → 0.0.22
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 +4 -4
- data/README.md +56 -14
- data/lib/epi_js/version.rb +1 -1
- data/vendor/assets/javascripts/ajax_modal.coffee +7 -6
- data/vendor/assets/javascripts/flash_message.coffee +13 -4
- data/vendor/assets/javascripts/option_filter.coffee +39 -0
- data/vendor/assets/javascripts/responsive_table.coffee +11 -0
- data/vendor/assets/stylesheets/epi_utilities.sass +37 -0
- data/vendor/assets/stylesheets/responsive_table.sass +41 -0
- metadata +22 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc857a298975eee6bc9d4d434d705b7e4e3a2e79
|
4
|
+
data.tar.gz: ca18662bf2e10f370660b61d527a80442dab5ede
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c715d378e65f514b37093f7e83300cf30850284db1f8a233f2e26381d9338554a951cdf219de6e94f3a951ea8d2ef50e3f1a690cf05fa543ff9dde8e081feed2
|
7
|
+
data.tar.gz: cd59faeed5a3071313c8c860a8082abe4ba8a2963f8f2e86166b0b56ca54b6698775d8d6400396592ec4af93bcb0ce1ec9826408e4af0993b2aa3b0a3976aaa4
|
data/README.md
CHANGED
@@ -25,42 +25,84 @@ Or install it yourself as:
|
|
25
25
|
### AJAX Modal
|
26
26
|
Add to your `app/assets/javascripts/application.js`
|
27
27
|
|
28
|
-
|
28
|
+
//= require ajax_modal
|
29
|
+
|
30
|
+
#### Via data attribute
|
31
|
+
Add `data-toggle=ajax-modal` to your link
|
29
32
|
#### Via class
|
30
33
|
Add `ajax-modal` class to your link
|
31
34
|
#### Via JavaScript
|
32
|
-
|
35
|
+
|
36
|
+
$.ajaxModal(url);
|
33
37
|
|
34
38
|
### Flash Message
|
35
39
|
Add to your `app/assets/javascripts/application.js`
|
36
40
|
|
37
|
-
|
38
|
-
And to your `app/assets/stylesheets/application.css`
|
41
|
+
//= require flash_message
|
39
42
|
|
40
|
-
*= require flash_message
|
41
43
|
#### For Rails flash fessage
|
42
44
|
Wrap your flash message in a div with `.flash_messages` class, e.g.
|
43
45
|
|
44
|
-
|
46
|
+
.flash-messages
|
45
47
|
- unless flash.blank?
|
46
48
|
- flash.each do |name, msg|
|
47
49
|
.alert.fade{ class: "alert-#{ name == :notice ? 'success' : 'error' }" }
|
48
50
|
%a.close{ data: { dismiss: :alert } } ×
|
49
51
|
= msg
|
52
|
+
|
50
53
|
#### Via JavaScript
|
51
|
-
|
54
|
+
|
55
|
+
$.flashAlert(message, alert_class);
|
56
|
+
|
52
57
|
`alert_class` is `alert-notice` etc.
|
53
58
|
|
59
|
+
#### Customisation
|
60
|
+
You can change the markup of the dismiss link by setting the following variable:
|
61
|
+
|
62
|
+
$.flashAlert.defaults.dismissLink
|
63
|
+
|
64
|
+
### Option Filter
|
65
|
+
Add to your `app/assets/javascripts/application.js`
|
66
|
+
|
67
|
+
//= require option_filter
|
68
|
+
|
69
|
+
#### Via data attributes
|
70
|
+
Add the jQuery selector of the target input as `data-option-filter-target` to the source input, e.g.
|
71
|
+
|
72
|
+
data-option-filter-target="#input-box-1"
|
73
|
+
|
74
|
+
To show an option in the target input when an option is selected in the source input, add the value of the source input as `data-option-filter-value`, e.g.
|
75
|
+
|
76
|
+
data-option-filter-value="1"
|
77
|
+
|
78
|
+
When the option with value 1 is selected in source input, only options with `data-option-filter-value="1"` will be displayed.
|
79
|
+
|
80
|
+
You can also add `data-option-filter-disable-empty` to the source input, so that when there is no options available for the current value, the target input will be disabled.
|
81
|
+
|
82
|
+
### Responsive Table
|
83
|
+
|
84
|
+
Add to your `app/assets/javascripts/application.js`
|
85
|
+
|
86
|
+
//= require responsive_table
|
87
|
+
|
88
|
+
And to your `app/assets/stylesheets/application.css`
|
89
|
+
|
90
|
+
*= require responsive_table
|
91
|
+
|
92
|
+
Then add `.table-responsive-xs` or `.table-responsive-sm` to tables.
|
93
|
+
You can override the label for each table cell by adding `data-label` to the `td` element.
|
94
|
+
|
54
95
|
### Visibility Map
|
55
96
|
Add to your `app/assets/javascripts/application.js`
|
56
97
|
|
57
|
-
|
98
|
+
//= require visibility_map
|
99
|
+
|
58
100
|
#### Via data attributes
|
59
|
-
Set `data-visibility-map` of a select box
|
60
|
-
|
61
|
-
|
101
|
+
Set `data-visibility-map` of a select box, radio button group or check boxes to a JSON string, e.g.
|
102
|
+
|
103
|
+
data-visibility-map='{"foo":"#foo","bar":"#bar"}'
|
62
104
|
Or for SimpleForm, use:
|
63
|
-
|
64
|
-
|
65
|
-
|
105
|
+
|
106
|
+
f.input :some_select, input_html: {data: {visibility_map: {foo: '#foo', bar: '#bar'}}}
|
107
|
+
|
66
108
|
When the value of the input element is `foo`, the element `#foo` will be visible and `#bar` will be hidden, and vice versa. The value of the JSON key value pair can be any jQuery selectors.
|
data/lib/epi_js/version.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
(($) ->
|
2
|
+
'use strict'
|
2
3
|
$.ajaxModal = (url, params) ->
|
3
4
|
$.get url, params, (data) ->
|
4
5
|
$modal = if $('#modalWindow').size() > 0 then $('#modalWindow') else $('<div>').addClass('modal fade').attr('id', 'modalWindow')
|
@@ -19,9 +20,9 @@
|
|
19
20
|
.on 'shown.bs.modal shown', (e) ->
|
20
21
|
setTimeout("$('#modalWindow [autofocus]').first().focus()", 0)
|
21
22
|
$(document).trigger('ajax-modal-shown')
|
22
|
-
|
23
|
-
|
24
|
-
$ ->
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
|
24
|
+
$ ->
|
25
|
+
$(document.body).on 'click', 'a.ajax-modal, a[data-toggle="ajax-modal"]', (e) ->
|
26
|
+
e.preventDefault()
|
27
|
+
$.ajaxModal $(@).attr('href'), $(@).data('params')
|
28
|
+
) jQuery
|
@@ -1,4 +1,5 @@
|
|
1
1
|
(($) ->
|
2
|
+
'use strict'
|
2
3
|
$.flashAlert = (message, type, timeout = 6000, dismissLink) ->
|
3
4
|
dismissLink ?= $.flashAlert.defaults.dismissLink
|
4
5
|
$alert = $('<div>').addClass("alert fade in #{type}").append(message).append(dismissLink)
|
@@ -11,10 +12,18 @@
|
|
11
12
|
true
|
12
13
|
$.flashAlert.defaults = {
|
13
14
|
dismissLink: '<a href="#" title="Hide this message" data-dismiss="alert" class="dismiss-flash">Dismiss</a>'
|
15
|
+
affix: false
|
14
16
|
}
|
17
|
+
|
18
|
+
$ ->
|
19
|
+
if $.flashAlert.defaults.affix and $('.navbar-static-top').size() > 0
|
20
|
+
$('.flash-messages').affix
|
21
|
+
offset:
|
22
|
+
top: ->
|
23
|
+
$('.navbar-static-top').outerHeight(true)
|
24
|
+
|
25
|
+
if $('.flash-messages .alert').size() > 0
|
26
|
+
$('.flash-messages .alert').addClass('in')
|
27
|
+
setTimeout("$('.flash-messages .alert').alert('close');", 6000)
|
15
28
|
) jQuery
|
16
29
|
|
17
|
-
$ ->
|
18
|
-
if $('.flash-messages .alert').size() > 0
|
19
|
-
$('.flash-messages .alert').addClass('in')
|
20
|
-
setTimeout("$('.flash-messages .alert').alert('close');", 6000)
|
@@ -0,0 +1,39 @@
|
|
1
|
+
(($) ->
|
2
|
+
'use strict'
|
3
|
+
class OptionFilter
|
4
|
+
constructor: (element) ->
|
5
|
+
@element = element
|
6
|
+
@filterTarget = $(@element.data('option-filter-target'))
|
7
|
+
@allOptions = $('[data-option-filter-value]', @filterTarget)
|
8
|
+
|
9
|
+
@disableEmpty = @element.data('option-filter-disable-empty')?
|
10
|
+
|
11
|
+
filter: ->
|
12
|
+
valueSelected = @element.val().toString()
|
13
|
+
|
14
|
+
filteredOptionsCount = 0
|
15
|
+
|
16
|
+
if valueSelected is ''
|
17
|
+
@allOptions.hide()
|
18
|
+
else
|
19
|
+
$toShow = @allOptions.filter("[data-option-filter-value='#{valueSelected}']").show()
|
20
|
+
@allOptions.not($toShow).hide()
|
21
|
+
filteredOptionsCount = $toShow.size()
|
22
|
+
|
23
|
+
@filterTarget.val('').trigger('change.option-filter')
|
24
|
+
@filterTarget.prop('disabled', @disableEmpty and (filteredOptionsCount is 0))
|
25
|
+
|
26
|
+
$.fn.optionFilter = ->
|
27
|
+
@each ->
|
28
|
+
data = $(this).data('option-filter')
|
29
|
+
unless data?
|
30
|
+
$(this).data('option-filter', data = new OptionFilter $(this))
|
31
|
+
data.filter()
|
32
|
+
|
33
|
+
$ ->
|
34
|
+
$('[data-option-filter-target]').optionFilter()
|
35
|
+
|
36
|
+
$(document.body).on 'change', '[data-option-filter-target]', (e) ->
|
37
|
+
$(this).optionFilter()
|
38
|
+
|
39
|
+
) jQuery
|
@@ -0,0 +1,11 @@
|
|
1
|
+
(($) ->
|
2
|
+
'use strict'
|
3
|
+
$(document).on('set-label', 'table.table-responsive-xs, .table-responsive-sm', ->
|
4
|
+
$('thead th', $(this)).each (index) ->
|
5
|
+
label = if $(this).data('label')? then $(this).data('label') else $(this).text()
|
6
|
+
$("tr td:nth-child(#{index + 1})", $(this).closest('thead').next('tbody')).attr('data-label', label)
|
7
|
+
)
|
8
|
+
|
9
|
+
$('table.table-responsive-xs, table..table-responsive-sm').each ->
|
10
|
+
$(this).trigger('set-label')
|
11
|
+
) jQuery
|
@@ -0,0 +1,37 @@
|
|
1
|
+
@import 'bootstrap/variables'
|
2
|
+
|
3
|
+
@mixin responsive-margins-and-paddings($gap-size, $screen-size-suffix: '')
|
4
|
+
$positions: top right bottom left
|
5
|
+
@each $position in $positions
|
6
|
+
.margin-#{$position}-#{$gap-size}#{$screen-size-suffix}
|
7
|
+
margin-#{$position}: #{$gap-size}px !important
|
8
|
+
|
9
|
+
.padding-#{$position}-#{$gap-size}#{$screen-size-suffix}
|
10
|
+
padding-#{$position}: #{$gap-size}px !important
|
11
|
+
|
12
|
+
@for $i from 0 through 12
|
13
|
+
@include responsive-margins-and-paddings(($i * 5))
|
14
|
+
@media (max-width: $screen-xs-max)
|
15
|
+
@include responsive-margins-and-paddings(($i * 5), '-xs')
|
16
|
+
@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max)
|
17
|
+
@include responsive-margins-and-paddings(($i * 5), '-sm')
|
18
|
+
@media (min-width: $screen-md-min) and (max-width: $screen-md-max)
|
19
|
+
@include responsive-margins-and-paddings(($i * 5), '-md')
|
20
|
+
@media (min-width: $screen-lg-min)
|
21
|
+
@include responsive-margins-and-paddings(($i * 5), '-lg')
|
22
|
+
|
23
|
+
.mini
|
24
|
+
width: 1px
|
25
|
+
|
26
|
+
.nowrap
|
27
|
+
white-space: nowrap
|
28
|
+
|
29
|
+
.display-none
|
30
|
+
display: none
|
31
|
+
|
32
|
+
@media print
|
33
|
+
.no-print
|
34
|
+
&:before
|
35
|
+
content: 'This page cannot be printed. Please view the document online.'
|
36
|
+
*
|
37
|
+
display: none !important
|
@@ -0,0 +1,41 @@
|
|
1
|
+
@import 'bootstrap/variables'
|
2
|
+
|
3
|
+
@mixin responsive-table()
|
4
|
+
&, thead, tbody, th, td, tr
|
5
|
+
display: block
|
6
|
+
td
|
7
|
+
border: none
|
8
|
+
thead
|
9
|
+
position: absolute
|
10
|
+
top: -9999px
|
11
|
+
left: -9999px
|
12
|
+
border: none
|
13
|
+
tr
|
14
|
+
border: none
|
15
|
+
td, th
|
16
|
+
border: none
|
17
|
+
tbody
|
18
|
+
tr
|
19
|
+
border: 1px solid $table-border-color
|
20
|
+
& + tr
|
21
|
+
margin-top: 5px
|
22
|
+
td, th
|
23
|
+
border-top: none
|
24
|
+
text-align: left
|
25
|
+
width: 100% !important
|
26
|
+
& + td
|
27
|
+
border-top: 1px dotted lighten($table-border-color, 8%)
|
28
|
+
&:before
|
29
|
+
display: block
|
30
|
+
white-space: nowrap
|
31
|
+
font-weight: bold
|
32
|
+
text-transform: uppercase
|
33
|
+
content: attr(data-label)
|
34
|
+
|
35
|
+
@media (max-width: $screen-xs-max)
|
36
|
+
table.table-responsive-xs
|
37
|
+
@include responsive-table()
|
38
|
+
|
39
|
+
@media (max-width: $screen-sm-max)
|
40
|
+
table.table-responsive-sm
|
41
|
+
@include responsive-table()
|
metadata
CHANGED
@@ -1,97 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epi_js
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shuo Chen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: coffee-rails
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '3.2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: sass-rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '3.2'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.2'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bootstrap-sass
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '1.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '1.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rails
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '3.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '3.0'
|
97
97
|
description: jQuery scripts used in various projects
|
@@ -101,7 +101,7 @@ executables: []
|
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
|
-
- .gitignore
|
104
|
+
- ".gitignore"
|
105
105
|
- Gemfile
|
106
106
|
- LICENSE.txt
|
107
107
|
- README.md
|
@@ -113,8 +113,12 @@ files:
|
|
113
113
|
- lib/epi_js/version.rb
|
114
114
|
- vendor/assets/javascripts/ajax_modal.coffee
|
115
115
|
- vendor/assets/javascripts/flash_message.coffee
|
116
|
+
- vendor/assets/javascripts/option_filter.coffee
|
117
|
+
- vendor/assets/javascripts/responsive_table.coffee
|
116
118
|
- vendor/assets/javascripts/visibility_map.coffee
|
119
|
+
- vendor/assets/stylesheets/epi_utilities.sass
|
117
120
|
- vendor/assets/stylesheets/flash_message.sass
|
121
|
+
- vendor/assets/stylesheets/responsive_table.sass
|
118
122
|
homepage: ''
|
119
123
|
licenses: []
|
120
124
|
metadata: {}
|
@@ -124,17 +128,17 @@ require_paths:
|
|
124
128
|
- lib
|
125
129
|
required_ruby_version: !ruby/object:Gem::Requirement
|
126
130
|
requirements:
|
127
|
-
- -
|
131
|
+
- - ">="
|
128
132
|
- !ruby/object:Gem::Version
|
129
133
|
version: '0'
|
130
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
135
|
requirements:
|
132
|
-
- -
|
136
|
+
- - ">="
|
133
137
|
- !ruby/object:Gem::Version
|
134
138
|
version: '0'
|
135
139
|
requirements: []
|
136
140
|
rubyforge_project:
|
137
|
-
rubygems_version: 2.4.
|
141
|
+
rubygems_version: 2.4.8
|
138
142
|
signing_key:
|
139
143
|
specification_version: 4
|
140
144
|
summary: jQuery scripts used in various projects
|