less-rails-semantic_ui 2.0.2.0 → 2.0.5.0

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -2
  3. data/Appraisals +3 -3
  4. data/README.md +1 -1
  5. data/assets/javascripts/semantic_ui/definitions/behaviors/api.js +14 -1
  6. data/assets/javascripts/semantic_ui/definitions/behaviors/form.js +135 -91
  7. data/assets/javascripts/semantic_ui/definitions/behaviors/visibility.js +9 -6
  8. data/assets/javascripts/semantic_ui/definitions/modules/checkbox.js +16 -3
  9. data/assets/javascripts/semantic_ui/definitions/modules/dropdown.js +67 -20
  10. data/assets/javascripts/semantic_ui/definitions/modules/modal.js +12 -10
  11. data/assets/javascripts/semantic_ui/definitions/modules/popup.js +92 -59
  12. data/assets/javascripts/semantic_ui/definitions/modules/sidebar.js +0 -1
  13. data/assets/javascripts/semantic_ui/definitions/modules/sticky.js +14 -11
  14. data/assets/javascripts/semantic_ui/definitions/modules/transition.js +6 -3
  15. data/assets/stylesheets/semantic_ui/definitions/collections/form.less +6 -1
  16. data/assets/stylesheets/semantic_ui/definitions/collections/menu.less +35 -15
  17. data/assets/stylesheets/semantic_ui/definitions/collections/message.less +1 -2
  18. data/assets/stylesheets/semantic_ui/definitions/collections/table.less +22 -11
  19. data/assets/stylesheets/semantic_ui/definitions/elements/button.less +17 -20
  20. data/assets/stylesheets/semantic_ui/definitions/elements/container.less +1 -6
  21. data/assets/stylesheets/semantic_ui/definitions/elements/divider.less +1 -0
  22. data/assets/stylesheets/semantic_ui/definitions/elements/icon.less +13 -0
  23. data/assets/stylesheets/semantic_ui/definitions/elements/input.less +2 -2
  24. data/assets/stylesheets/semantic_ui/definitions/elements/segment.less +20 -16
  25. data/assets/stylesheets/semantic_ui/definitions/elements/step.less +35 -25
  26. data/assets/stylesheets/semantic_ui/definitions/modules/accordion.less +2 -1
  27. data/assets/stylesheets/semantic_ui/definitions/modules/checkbox.less +99 -62
  28. data/assets/stylesheets/semantic_ui/definitions/modules/modal.less +1 -1
  29. data/assets/stylesheets/semantic_ui/definitions/modules/popup.less +7 -0
  30. data/assets/stylesheets/semantic_ui/themes/basic/elements/step.overrides +3 -0
  31. data/assets/stylesheets/semantic_ui/themes/basic/elements/step.variables +12 -4
  32. data/assets/stylesheets/semantic_ui/themes/colored/modules/checkbox.variables +15 -3
  33. data/assets/stylesheets/semantic_ui/themes/default/collections/form.variables +1 -1
  34. data/assets/stylesheets/semantic_ui/themes/default/collections/menu.variables +12 -11
  35. data/assets/stylesheets/semantic_ui/themes/default/collections/table.variables +11 -2
  36. data/assets/stylesheets/semantic_ui/themes/default/elements/icon.overrides +2 -0
  37. data/assets/stylesheets/semantic_ui/themes/default/elements/segment.variables +6 -5
  38. data/assets/stylesheets/semantic_ui/themes/default/elements/step.variables +6 -3
  39. data/assets/stylesheets/semantic_ui/themes/default/globals/site.variables +10 -9
  40. data/assets/stylesheets/semantic_ui/themes/default/modules/checkbox.variables +32 -11
  41. data/assets/stylesheets/semantic_ui/themes/github/elements/segment.variables +0 -1
  42. data/assets/stylesheets/semantic_ui/themes/github/elements/step.variables +7 -1
  43. data/less-rails-semantic_ui.gemspec +1 -1
  44. data/lib/less/rails/semantic_ui/version.rb +1 -1
  45. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8e31f0a1280d29f7cec4f57dca5c2f9ae67c099c
4
- data.tar.gz: 0663534de3b0c70ab506132d7fe2e1d9a8f33a44
3
+ metadata.gz: b6043f6d657f70a569013de645d25f633eb94818
4
+ data.tar.gz: 928a195ad0e62cffba28b1bf6f4f8a8b0fba77e7
5
5
  SHA512:
6
- metadata.gz: cf1f83d11c8003ae0dd74c75d193d440ccb88b18c1a54f1401232641f9c8d2e267739044b36451f5efb15cf43eaf66ad119898559fa58eb3875024b3e798ea95
7
- data.tar.gz: 062ca4f12057f416256ecfd4e506a20dc6a05bf1ed71f6b44bfa94bfcba3b96ed468573ed1a2ae0179fb2d9ef7117b587941012683a1b91f8de4cdfbd82769ab
6
+ metadata.gz: 097b718c2457ac4e48ee128dd94153cfc6042d0d316422026f38fd8545207ea68988d4e0ff7ef7abcfdff38e5a3a55e7c104b9a6e1953988505198efde538cbe
7
+ data.tar.gz: 84c0c7b9217e47e22764b109678f9a550fe107b7132f3e1623ce7fd1bb39f45e31574c72c9cefdb5c38b518ca6b4dd5c071c98e16b7ad708f7343e5b1c4811b7
data/.travis.yml CHANGED
@@ -2,8 +2,8 @@ language: ruby
2
2
  sudo: false
3
3
  rvm:
4
4
  - 2.0.0
5
- - 2.1.5
6
- - 2.2.0
5
+ - 2.1.6
6
+ - 2.2.2
7
7
  before_install:
8
8
  - travis_retry gem install bundler
9
9
  - bundle --version
data/Appraisals CHANGED
@@ -1,14 +1,14 @@
1
1
  appraise 'rails40' do
2
- gem 'rails', '~> 4.0.12'
2
+ gem 'rails', '~> 4.0.13'
3
3
  gem 'sprockets', '~> 2'
4
4
  end
5
5
 
6
6
  appraise 'rails41' do
7
- gem 'rails', '~> 4.1.8'
7
+ gem 'rails', '~> 4.1.12'
8
8
  gem 'sprockets', '~> 2'
9
9
  end
10
10
 
11
11
  appraise 'rails42' do
12
- gem 'rails', '~> 4.2.0'
12
+ gem 'rails', '~> 4.2.3'
13
13
  gem 'sprockets', '~> 2'
14
14
  end
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # less-rails-semantic_ui [![Gem Version](https://badge.fury.io/rb/less-rails-semantic_ui.svg)](http://badge.fury.io/rb/less-rails-semantic_ui) [![Build Status](https://travis-ci.org/maxd/less-rails-semantic_ui.png?branch=master)](https://travis-ci.org/maxd/less-rails-semantic_ui)
1
+ # less-rails-semantic_ui [![Gem Version](https://badge.fury.io/rb/less-rails-semantic_ui.svg)](http://badge.fury.io/rb/less-rails-semantic_ui) [![Build Status](https://travis-ci.org/Semantic-Org/Semantic-UI-Rails-LESS.png?branch=master)](https://travis-ci.org/Semantic-Org/Semantic-UI-Rails-LESS)
2
2
 
3
3
  This is a gem for Rails with [Semantic UI](https://github.com/Semantic-Org/Semantic-UI/) assets inside.
4
4
  It provides the ability to customize component themes and variables on the fly in your application.
@@ -352,7 +352,7 @@ $.api = $.fn.api = function(parameters) {
352
352
  }
353
353
  else {
354
354
  module.verbose('Found required variable', variable, value);
355
- url = url.replace(templatedString, value);
355
+ url = url.replace(templatedString, module.get.urlEncodedValue(value));
356
356
  }
357
357
  });
358
358
  }
@@ -686,6 +686,19 @@ $.api = $.fn.api = function(parameters) {
686
686
  : settings
687
687
  ;
688
688
  },
689
+ urlEncodedValue: function(value) {
690
+ var
691
+ decodedValue = window.decodeURIComponent(value),
692
+ encodedValue = window.encodeURIComponent(value),
693
+ alreadyEncoded = (decodedValue !== value)
694
+ ;
695
+ if(alreadyEncoded) {
696
+ module.debug('URL value is already encoded, avoiding double encoding', value);
697
+ return value;
698
+ }
699
+ module.verbose('Encoding value for url', value, encodedValue);
700
+ return encodedValue;
701
+ },
689
702
  defaultData: function() {
690
703
  var
691
704
  data = {}
@@ -341,7 +341,7 @@ $.fn.form = function(parameters) {
341
341
  var
342
342
  keys = Object.keys(parameters),
343
343
  isLegacySettings = (keys.length > 0)
344
- ? (parameters[keys[0]].identifier !== undefined)
344
+ ? (parameters[keys[0]].identifier !== undefined && parameters[keys[0]].rules !== undefined)
345
345
  : false
346
346
  ;
347
347
  if(isLegacySettings) {
@@ -495,6 +495,9 @@ $.fn.form = function(parameters) {
495
495
 
496
496
  field: function(identifier) {
497
497
  module.verbose('Checking for existence of a field with identifier', identifier);
498
+ if(typeof identifier !== 'string') {
499
+ module.error(error.identifier, identifier);
500
+ }
498
501
  if( $field.filter('#' + identifier).length > 0 ) {
499
502
  return true;
500
503
  }
@@ -760,9 +763,11 @@ $.fn.form = function(parameters) {
760
763
  ancillary,
761
764
  functionType
762
765
  ;
763
- // cast to string
764
- value = $.trim($field.val() + '');
765
-
766
+ // cast to string avoiding encoding special values
767
+ value = (value === undefined || value === '' || value === null)
768
+ ? ''
769
+ : $.trim(value + '')
770
+ ;
766
771
  // if bracket notation is used, pass in extra parameters
767
772
  if(bracket) {
768
773
  ancillary = '' + bracket[1];
@@ -989,7 +994,7 @@ $.fn.form.settings = {
989
994
  email : "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?",
990
995
  integer : /^\-?\d+$/,
991
996
  flags : /^\/(.*)\/(.*)?/,
992
- url : /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i
997
+ url : /(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/i
993
998
  },
994
999
 
995
1000
  selector : {
@@ -1015,9 +1020,10 @@ $.fn.form.settings = {
1015
1020
  },
1016
1021
 
1017
1022
  error: {
1018
- oldSyntax : 'Starting in 2.0 forms now only take a single settings object. Validation settings converted to new syntax automatically.',
1019
- noRule : 'There is no rule matching the one you specified',
1020
- method : 'The method you called is not defined.'
1023
+ oldSyntax : 'Starting in 2.0 forms now only take a single settings object. Validation settings converted to new syntax automatically.',
1024
+ identifier : 'You must specify a string identifier for each field',
1025
+ noRule : 'There is no rule matching the one you specified',
1026
+ method : 'The method you called is not defined.'
1021
1027
  },
1022
1028
 
1023
1029
  templates: {
@@ -1045,25 +1051,16 @@ $.fn.form.settings = {
1045
1051
 
1046
1052
  rules: {
1047
1053
 
1054
+ // is not empty or blank string
1055
+ empty: function(value) {
1056
+ return !(value === undefined || '' === value || $.isArray(value) && value.length === 0);
1057
+ },
1058
+
1048
1059
  // checkbox checked
1049
1060
  checked: function() {
1050
1061
  return ($(this).filter(':checked').length > 0);
1051
1062
  },
1052
1063
 
1053
- // value contains text (insensitive)
1054
- contains: function(value, text) {
1055
- // escape regex characters
1056
- text = text.replace($.fn.form.settings.regExp.escape, "\\$&");
1057
- return (value.search( new RegExp(text, 'i') ) !== -1);
1058
- },
1059
-
1060
- // value contains text (case sensitive)
1061
- containsExactly: function(value, text) {
1062
- // escape regex characters
1063
- text = text.replace($.fn.form.settings.regExp.escape, "\\$&");
1064
- return (value.search( new RegExp(text) ) !== -1);
1065
- },
1066
-
1067
1064
  // is most likely an email
1068
1065
  email: function(value){
1069
1066
  var
@@ -1072,12 +1069,32 @@ $.fn.form.settings = {
1072
1069
  return emailRegExp.test(value);
1073
1070
  },
1074
1071
 
1075
- // is not empty or blank string
1076
- empty: function(value) {
1077
- return !(value === undefined || '' === value || $.isArray(value) && value.length === 0);
1072
+ // value is most likely url
1073
+ url: function(value) {
1074
+ return $.fn.form.settings.regExp.url.test(value);
1078
1075
  },
1079
1076
 
1080
- // is valid integer
1077
+ // matches specified regExp
1078
+ regExp: function(value, regExp) {
1079
+ var
1080
+ regExpParts = regExp.match($.fn.form.settings.regExp.flags),
1081
+ flags
1082
+ ;
1083
+ // regular expression specified as /baz/gi (flags)
1084
+ if(regExpParts) {
1085
+ regExp = (regExpParts.length >= 2)
1086
+ ? regExpParts[1]
1087
+ : regExp
1088
+ ;
1089
+ flags = (regExpParts.length >= 3)
1090
+ ? regExpParts[2]
1091
+ : ''
1092
+ ;
1093
+ }
1094
+ return value.match( new RegExp(regExp, flags) );
1095
+ },
1096
+
1097
+ // is valid integer or matches range
1081
1098
  integer: function(value, range) {
1082
1099
  var
1083
1100
  intRegExp = $.fn.form.settings.regExp.integer,
@@ -1109,6 +1126,7 @@ $.fn.form.settings = {
1109
1126
  );
1110
1127
  },
1111
1128
 
1129
+
1112
1130
  // is value (case insensitive)
1113
1131
  is: function(value, text) {
1114
1132
  text = (typeof text == 'string')
@@ -1127,17 +1145,78 @@ $.fn.form.settings = {
1127
1145
  return (value == text);
1128
1146
  },
1129
1147
 
1130
- // is at least string length
1148
+ // value is not another value (case insensitive)
1149
+ not: function(value, notValue) {
1150
+ value = (typeof value == 'string')
1151
+ ? value.toLowerCase()
1152
+ : value
1153
+ ;
1154
+ notValue = (typeof notValue == 'string')
1155
+ ? notValue.toLowerCase()
1156
+ : notValue
1157
+ ;
1158
+ return (value != notValue);
1159
+ },
1160
+
1161
+ // value is not another value (case sensitive)
1162
+ notExactly: function(value, notValue) {
1163
+ return (value != notValue);
1164
+ },
1165
+
1166
+ // value contains text (insensitive)
1167
+ contains: function(value, text) {
1168
+ // escape regex characters
1169
+ text = text.replace($.fn.form.settings.regExp.escape, "\\$&");
1170
+ return (value.search( new RegExp(text, 'i') ) !== -1);
1171
+ },
1172
+
1173
+ // value contains text (case sensitive)
1174
+ containsExactly: function(value, text) {
1175
+ // escape regex characters
1176
+ text = text.replace($.fn.form.settings.regExp.escape, "\\$&");
1177
+ return (value.search( new RegExp(text) ) !== -1);
1178
+ },
1179
+
1180
+ // value contains text (insensitive)
1181
+ doesntContain: function(value, text) {
1182
+ // escape regex characters
1183
+ text = text.replace($.fn.form.settings.regExp.escape, "\\$&");
1184
+ return (value.search( new RegExp(text, 'i') ) === -1);
1185
+ },
1186
+
1187
+ // value contains text (case sensitive)
1188
+ doesntContainExactly: function(value, text) {
1189
+ // escape regex characters
1190
+ text = text.replace($.fn.form.settings.regExp.escape, "\\$&");
1191
+ return (value.search( new RegExp(text) ) === -1);
1192
+ },
1193
+
1194
+ // is exactly length
1131
1195
  length: function(value, requiredLength) {
1196
+ return (value !== undefined)
1197
+ ? (value.length == requiredLength)
1198
+ : false
1199
+ ;
1200
+ },
1201
+
1202
+ // is at least string length
1203
+ minLength: function(value, requiredLength) {
1132
1204
  return (value !== undefined)
1133
1205
  ? (value.length >= requiredLength)
1134
1206
  : false
1135
1207
  ;
1136
1208
  },
1137
1209
 
1210
+ // is less than length
1211
+ maxLength: function(value, maxLength) {
1212
+ return (value !== undefined)
1213
+ ? (value.length <= maxLength)
1214
+ : false
1215
+ ;
1216
+ },
1217
+
1138
1218
  // matches another field
1139
- different: function(value, identifier) {
1140
- // use either id or name of field
1219
+ match: function(value, identifier) {
1141
1220
  var
1142
1221
  $form = $(this),
1143
1222
  matchingValue
@@ -1155,13 +1234,13 @@ $.fn.form.settings = {
1155
1234
  matchingValue = $('[name="' + identifier +'[]"]');
1156
1235
  }
1157
1236
  return (matchingValue !== undefined)
1158
- ? ( value.toString() !== matchingValue.toString() )
1237
+ ? ( value.toString() == matchingValue.toString() )
1159
1238
  : false
1160
1239
  ;
1161
1240
  },
1162
1241
 
1163
- // matches another field
1164
- match: function(value, identifier) {
1242
+ // different than another field
1243
+ different: function(value, identifier) {
1165
1244
  // use either id or name of field
1166
1245
  var
1167
1246
  $form = $(this),
@@ -1180,74 +1259,39 @@ $.fn.form.settings = {
1180
1259
  matchingValue = $('[name="' + identifier +'[]"]');
1181
1260
  }
1182
1261
  return (matchingValue !== undefined)
1183
- ? ( value.toString() == matchingValue.toString() )
1262
+ ? ( value.toString() !== matchingValue.toString() )
1184
1263
  : false
1185
1264
  ;
1186
1265
  },
1187
1266
 
1188
- maxCount: function(value, count) {
1189
- value = value.split(',');
1190
- return ($.isArray(value) && value.length <= count);
1191
- },
1192
-
1193
- exactCount: function(value, count) {
1194
- value = value.split(',');
1195
- return ($.isArray(value) && value.length == count);
1196
- },
1197
-
1198
- minCount: function(value, count) {
1199
- value = value.split(',');
1200
- return ($.isArray(value) && value.length >= count);
1201
- },
1202
-
1203
- regExp: function(value, regExp) {
1204
- var
1205
- regExpParts = regExp.match($.fn.form.settings.regExp.flags),
1206
- flags
1207
- ;
1208
- // regular expression specified as /baz/gi (flags)
1209
- if(regExpParts) {
1210
- regExp = (regExpParts.length >= 2)
1211
- ? regExpParts[1]
1212
- : regExp
1213
- ;
1214
- flags = (regExpParts.length >= 3)
1215
- ? regExpParts[2]
1216
- : ''
1217
- ;
1267
+ exactCount: function(value, exactCount) {
1268
+ if(exactCount == 0) {
1269
+ return (value === '');
1218
1270
  }
1219
- return value.match( new RegExp(regExp, flags) );
1220
- },
1221
-
1222
- // string length is less than max length
1223
- maxLength: function(value, maxLength) {
1224
- return (value !== undefined)
1225
- ? (value.length <= maxLength)
1226
- : false
1227
- ;
1228
- },
1229
-
1230
- // value is not value (case insensitive)
1231
- not: function(value, notValue) {
1232
- value = (typeof value == 'string')
1233
- ? value.toLowerCase()
1234
- : value
1235
- ;
1236
- notValue = (typeof notValue == 'string')
1237
- ? notValue.toLowerCase()
1238
- : notValue
1239
- ;
1240
- return (value != notValue);
1271
+ if(exactCount == 1) {
1272
+ return (value !== '' && value.search(',') === -1);
1273
+ }
1274
+ return (value.split(',').length == exactCount);
1241
1275
  },
1242
1276
 
1243
- // value is not value (case sensitive)
1244
- notExactly: function(value, notValue) {
1245
- return (value != notValue);
1277
+ minCount: function(value, minCount) {
1278
+ if(minCount == 0) {
1279
+ return true;
1280
+ }
1281
+ if(minCount == 1) {
1282
+ return (value !== '');
1283
+ }
1284
+ return (value.split(',').length >= minCount);
1246
1285
  },
1247
1286
 
1248
- // value is most likely url
1249
- url: function(value) {
1250
- return $.fn.form.settings.regExp.url.match(value);
1287
+ maxCount: function(value, maxCount) {
1288
+ if(maxCount == 0) {
1289
+ return false;
1290
+ }
1291
+ if(maxCount == 1) {
1292
+ return (value.search(',') === -1);
1293
+ }
1294
+ return (value.split(',').length <= maxCount);
1251
1295
  }
1252
1296
  }
1253
1297
 
@@ -1137,9 +1137,18 @@ $.fn.visibility.settings = {
1137
1137
  // whether to use mutation observers to follow changes
1138
1138
  observeChanges : true,
1139
1139
 
1140
+ // check position immediately on init
1141
+ initialCheck : true,
1142
+
1140
1143
  // whether to refresh calculations after all page images load
1141
1144
  refreshOnLoad : true,
1142
1145
 
1146
+ // whether to refresh calculations after page resize event
1147
+ refreshOnResize : true,
1148
+
1149
+ // should call callbacks on refresh event (resize, etc)
1150
+ checkOnRefresh : true,
1151
+
1143
1152
  // callback should only occur one time
1144
1153
  once : true,
1145
1154
 
@@ -1155,9 +1164,6 @@ $.fn.visibility.settings = {
1155
1164
  // scroll context for visibility checks
1156
1165
  context : window,
1157
1166
 
1158
- // check position immediately on init
1159
- initialCheck : true,
1160
-
1161
1167
  // visibility check delay in ms (defaults to animationFrame)
1162
1168
  throttle : false,
1163
1169
 
@@ -1171,9 +1177,6 @@ $.fn.visibility.settings = {
1171
1177
  // array of callbacks for percentage
1172
1178
  onPassed : {},
1173
1179
 
1174
- // should call callbacks on refresh event (resize, etc)
1175
- checkOnRefresh : true,
1176
-
1177
1180
  // standard callbacks
1178
1181
  onOnScreen : false,
1179
1182
  onOffScreen : false,
@@ -44,6 +44,8 @@ $.fn.checkbox = function(parameters) {
44
44
  $label = $(this).children(selector.label),
45
45
  $input = $(this).children(selector.input),
46
46
 
47
+ shortcutPressed = false,
48
+
47
49
  instance = $module.data(moduleNamespace),
48
50
 
49
51
  observer,
@@ -177,6 +179,8 @@ $.fn.checkbox = function(parameters) {
177
179
  return;
178
180
  }
179
181
  module.toggle();
182
+ $input.focus();
183
+ event.preventDefault();
180
184
  },
181
185
  keydown: function(event) {
182
186
  var
@@ -190,11 +194,19 @@ $.fn.checkbox = function(parameters) {
190
194
  if(key == keyCode.escape) {
191
195
  module.verbose('Escape key pressed blurring field');
192
196
  $input.blur();
193
- event.preventDefault();
197
+ shortcutPressed = true;
194
198
  }
195
- if(!event.ctrlKey && (key == keyCode.enter || key == keyCode.space)) {
196
- module.verbose('Enter key pressed, toggling checkbox');
199
+ else if(!event.ctrlKey && ( key == keyCode.space || key == keyCode.enter) ) {
200
+ module.verbose('Enter/space key pressed, toggling checkbox');
197
201
  module.toggle();
202
+ shortcutPressed = true;
203
+ }
204
+ else {
205
+ shortcutPressed = false;
206
+ }
207
+ },
208
+ keyup: function(event) {
209
+ if(shortcutPressed) {
198
210
  event.preventDefault();
199
211
  }
200
212
  }
@@ -453,6 +465,7 @@ $.fn.checkbox = function(parameters) {
453
465
  $module
454
466
  .on('click' + eventNamespace, module.event.click)
455
467
  .on('keydown' + eventNamespace, selector.input, module.event.keydown)
468
+ .on('keyup' + eventNamespace, selector.input, module.event.keyup)
456
469
  ;
457
470
  }
458
471
  },