semantic-ui-rails 0.3.5 → 0.6.5

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
  SHA1:
3
- metadata.gz: 2fb864ef0d530e5ceb2175dd1477cbca0d801e14
4
- data.tar.gz: a52103e576eb46d6f6a76878cba1f408da53149c
3
+ metadata.gz: 829003856f259a47a70f70ba678c900cedd8df0a
4
+ data.tar.gz: 1d50b333b7b19a045de0b058b8356dbbb1d55143
5
5
  SHA512:
6
- metadata.gz: e1be62a4e5e636fdbc29a65279f5c4ccbf4b914ccacb048245c1be599ea0def9dff16a3fd196c8fbbd89762c8d54be9c6ba1dba14aa58c9485453d5333036b40
7
- data.tar.gz: 9488e207fce9f0ae28b5e3a99e7198543e60c44a9e9ed5f4a707994bf2641ee1e3e409db99e50ba6949fcf2b23ab6357347cc1493d63806118161f9a10db354b
6
+ metadata.gz: cee268bbfec8a3b86974de12dfeb9451eab21af358f6e841b761a0cd5e31a51c2ab9ed515d806092b83763969e78d8786462f93f7951e8b1e121153c95f7a892
7
+ data.tar.gz: bfda2eb9ff850b46203353ed8b076b33eee38e33831ef48ea5280c7ce2bea13424b9f75ec443d86b43003e533b53a52208145dba571d5db1c1801ad6a0c27153
@@ -1,7 +1,7 @@
1
1
  module Semantic
2
2
  module Ui
3
3
  module Rails
4
- VERSION = "0.3.5"
4
+ VERSION = "0.6.5"
5
5
  end
6
6
  end
7
7
  end
data/semantic.thor CHANGED
@@ -51,7 +51,7 @@ class Semantic < Thor
51
51
  say_status "STEP", "PARSE VERSION"
52
52
  Dir.chdir git_root
53
53
 
54
- bower = JSON.parse( IO.read('composer.json'), :quirks_mode => true)
54
+ bower = JSON.parse( IO.read('package.json'), :quirks_mode => true)
55
55
  version = bower["version"]
56
56
 
57
57
  version_file = source_root + "lib/semantic/ui/rails/version.rb"
@@ -28,7 +28,7 @@ $.fn.accordion = function(parameters) {
28
28
  var
29
29
  settings = ( $.isPlainObject(parameters) )
30
30
  ? $.extend(true, {}, $.fn.accordion.settings, parameters)
31
- : $.fn.accordion.settings,
31
+ : $.extend({}, $.fn.accordion.settings),
32
32
 
33
33
  className = settings.className,
34
34
  namespace = settings.namespace,
@@ -60,6 +60,7 @@ $.fn.accordion = function(parameters) {
60
60
  },
61
61
 
62
62
  instantiate: function() {
63
+ instance = module;
63
64
  $module
64
65
  .data(moduleNamespace, module)
65
66
  ;
@@ -30,7 +30,7 @@ $.fn.dimmer = function(parameters) {
30
30
  var
31
31
  settings = ( $.isPlainObject(parameters) )
32
32
  ? $.extend(true, {}, $.fn.dimmer.settings, parameters)
33
- : $.fn.dimmer.settings,
33
+ : $.extend({}, $.fn.dimmer.settings),
34
34
 
35
35
  selector = settings.selector,
36
36
  namespace = settings.namespace,
@@ -54,6 +54,8 @@ $.fn.dimmer = function(parameters) {
54
54
  module
55
55
  ;
56
56
 
57
+ console.log(element, parameters);
58
+
57
59
  module = {
58
60
 
59
61
  preinitialize: function() {
@@ -111,6 +113,9 @@ $.fn.dimmer = function(parameters) {
111
113
 
112
114
  destroy: function() {
113
115
  module.verbose('Destroying previous module', $dimmer);
116
+ $module
117
+ .removeData(moduleNamespace)
118
+ ;
114
119
  $dimmable
115
120
  .off(eventNamespace)
116
121
  ;
@@ -11,18 +11,19 @@
11
11
  ;(function ( $, window, document, undefined ) {
12
12
 
13
13
  $.fn.dropdown = function(parameters) {
14
- var
15
- $allModules = $(this),
16
- $document = $(document),
14
+ var
15
+ $allModules = $(this),
16
+ $document = $(document),
17
17
 
18
- moduleSelector = $allModules.selector || '',
18
+ moduleSelector = $allModules.selector || '',
19
19
 
20
- time = new Date().getTime(),
21
- performance = [],
20
+ hasTouch = ('ontouchstart' in document.documentElement),
21
+ time = new Date().getTime(),
22
+ performance = [],
22
23
 
23
- query = arguments[0],
24
- methodInvoked = (typeof query == 'string'),
25
- queryArguments = [].slice.call(arguments, 1),
24
+ query = arguments[0],
25
+ methodInvoked = (typeof query == 'string'),
26
+ queryArguments = [].slice.call(arguments, 1),
26
27
  invokedResponse
27
28
  ;
28
29
 
@@ -31,28 +32,27 @@ $.fn.dropdown = function(parameters) {
31
32
  var
32
33
  settings = ( $.isPlainObject(parameters) )
33
34
  ? $.extend(true, {}, $.fn.dropdown.settings, parameters)
34
- : $.fn.dropdown.settings,
35
+ : $.extend({}, $.fn.dropdown.settings),
35
36
 
36
- className = settings.className,
37
- metadata = settings.metadata,
38
- namespace = settings.namespace,
39
- selector = settings.selector,
40
- error = settings.error,
37
+ className = settings.className,
38
+ metadata = settings.metadata,
39
+ namespace = settings.namespace,
40
+ selector = settings.selector,
41
+ error = settings.error,
41
42
 
42
- eventNamespace = '.' + namespace,
43
- dropdownNamespace = 'module-' + namespace,
44
- isTouchDevice = ('ontouchstart' in document.documentElement),
43
+ eventNamespace = '.' + namespace,
44
+ moduleNamespace = 'module-' + namespace,
45
45
 
46
- $module = $(this),
47
- $item = $module.find(selector.item),
48
- $text = $module.find(selector.text),
49
- $input = $module.find(selector.input),
46
+ $module = $(this),
47
+ $item = $module.find(selector.item),
48
+ $text = $module.find(selector.text),
49
+ $input = $module.find(selector.input),
50
50
 
51
- $menu = $module.children(selector.menu),
51
+ $menu = $module.children(selector.menu),
52
52
 
53
53
 
54
- element = this,
55
- instance = $module.data(dropdownNamespace),
54
+ element = this,
55
+ instance = $module.data(moduleNamespace),
56
56
  module
57
57
  ;
58
58
 
@@ -60,42 +60,27 @@ $.fn.dropdown = function(parameters) {
60
60
 
61
61
  initialize: function() {
62
62
  module.debug('Initializing dropdown', settings);
63
- if(isTouchDevice) {
64
- $module
65
- .on('touchstart' + eventNamespace, module.event.test.toggle)
66
- ;
67
- }
68
- else if(settings.on == 'click') {
69
- $module
70
- .on('click' + eventNamespace, module.event.test.toggle)
71
- ;
72
- }
73
- else if(settings.on == 'hover') {
74
- $module
75
- .on('mouseenter' + eventNamespace, module.delay.show)
76
- .on('mouseleave' + eventNamespace, module.delay.hide)
77
- ;
78
- }
79
- else {
80
- $module
81
- .on(settings.on + eventNamespace, module.toggle)
82
- ;
83
- }
84
- if(settings.action == 'updateForm') {
85
- module.set.selected();
63
+
64
+ module.set.selected();
65
+
66
+ // no use detecting mouse events because touch devices emulate them
67
+ if(hasTouch) {
68
+ module.bind.touchEvents();
86
69
  }
87
- $item
88
- .on('mouseenter' + eventNamespace, module.event.item.mouseenter)
89
- .on('mouseleave' + eventNamespace, module.event.item.mouseleave)
90
- .on(module.get.selectEvent() + eventNamespace, module.event.item.click)
70
+ module.bind.mouseEvents();
71
+
72
+ $document
73
+ .one('mousemove' + eventNamespace, module.set.hasMouse)
91
74
  ;
75
+
92
76
  module.instantiate();
93
77
  },
94
78
 
95
79
  instantiate: function() {
96
80
  module.verbose('Storing instance of dropdown', module);
81
+ instance = module;
97
82
  $module
98
- .data(dropdownNamespace, module)
83
+ .data(moduleNamespace, module)
99
84
  ;
100
85
  },
101
86
 
@@ -106,17 +91,91 @@ $.fn.dropdown = function(parameters) {
106
91
  ;
107
92
  $module
108
93
  .off(eventNamespace)
109
- .removeData(dropdownNamespace)
94
+ .removeData(moduleNamespace)
110
95
  ;
111
96
  },
112
97
 
113
- event: {
98
+ bind: {
99
+ touchEvents: function() {
100
+ module.debug('Touch device detected binding touch events');
101
+ $module
102
+ .on('touchstart' + eventNamespace, module.event.test.toggle)
103
+ ;
104
+ $item
105
+ .on('touchstart' + eventNamespace, module.event.item.mouseenter)
106
+ .on('touchstart' + eventNamespace, module.event.item.click)
107
+ ;
108
+ },
109
+ mouseEvents: function() {
110
+ module.verbose('Mouse detected binding mouse events');
111
+ if(settings.on == 'click') {
112
+ $module
113
+ .on('click' + eventNamespace, module.event.test.toggle)
114
+ ;
115
+ }
116
+ else if(settings.on == 'hover') {
117
+ $module
118
+ .on('mouseenter' + eventNamespace, module.delay.show)
119
+ .on('mouseleave' + eventNamespace, module.delay.hide)
120
+ ;
121
+ }
122
+ else {
123
+ $module
124
+ .on(settings.on + eventNamespace, module.toggle)
125
+ ;
126
+ }
127
+ $item
128
+ .on('mouseenter' + eventNamespace, module.event.item.mouseenter)
129
+ .on('mouseleave' + eventNamespace, module.event.item.mouseleave)
130
+ .on('click' + eventNamespace, module.event.item.click)
131
+ ;
132
+ },
133
+ intent: function() {
134
+ module.verbose('Binding hide intent event to document');
135
+ if(hasTouch) {
136
+ $document
137
+ .on('touchstart' + eventNamespace, module.event.test.touch)
138
+ .on('touchmove' + eventNamespace, module.event.test.touch)
139
+ ;
140
+ }
141
+ $document
142
+ .on('click' + eventNamespace, module.event.test.hide)
143
+ ;
144
+ }
145
+ },
146
+
147
+ unbind: {
148
+ intent: function() {
149
+ module.verbose('Removing hide intent event from document');
150
+ if(hasTouch) {
151
+ $document
152
+ .off('touchstart' + eventNamespace)
153
+ ;
154
+ }
155
+ $document
156
+ .off('click' + eventNamespace)
157
+ ;
158
+ }
159
+ },
114
160
 
161
+ event: {
115
162
  test: {
116
163
  toggle: function(event) {
117
164
  module.determine.intent(event, module.toggle);
165
+ event.preventDefault();
118
166
  event.stopImmediatePropagation();
119
167
  },
168
+ touch: function(event) {
169
+ module.determine.intent(event, function() {
170
+ if(event.type == 'touchstart') {
171
+ module.timer = setTimeout(module.hide, 50);
172
+ }
173
+ else if(event.type == 'touchmove') {
174
+ clearTimeout(module.timer);
175
+ }
176
+ });
177
+ event.stopPropagation();
178
+ },
120
179
  hide: function(event) {
121
180
  module.determine.intent(event, module.hide);
122
181
  event.stopPropagation();
@@ -137,6 +196,7 @@ $.fn.dropdown = function(parameters) {
137
196
  module.verbose('Showing sub-menu', $currentMenu);
138
197
  module.animate.show(false, $currentMenu);
139
198
  }, settings.delay.show * 2);
199
+ event.preventDefault();
140
200
  }
141
201
  },
142
202
 
@@ -160,13 +220,6 @@ $.fn.dropdown = function(parameters) {
160
220
  value = $choice.data(metadata.value) || text.toLowerCase()
161
221
  ;
162
222
  if( $choice.find(selector.menu).size() === 0 ) {
163
- module.verbose('Adding active state to selected item');
164
- $item
165
- .removeClass(className.active)
166
- ;
167
- $choice
168
- .addClass(className.active)
169
- ;
170
223
  module.determine.selectAction(text, value);
171
224
  $.proxy(settings.onChange, element)(value, text);
172
225
  }
@@ -183,19 +236,9 @@ $.fn.dropdown = function(parameters) {
183
236
  determine: {
184
237
  selectAction: function(text, value) {
185
238
  module.verbose('Determining action', settings.action);
186
- if(settings.action == 'auto') {
187
- if(module.is.selection()) {
188
- module.debug('Selection dropdown used updating form', text, value);
189
- module.updateForm(text, value);
190
- }
191
- else {
192
- module.debug('No action specified hiding dropdown', text, value);
193
- module.hide();
194
- }
195
- }
196
- else if( $.isFunction( module[settings.action] ) ) {
239
+ if( $.isFunction( module.action[settings.action] ) ) {
197
240
  module.verbose('Triggering preset action', settings.action, text, value);
198
- module[ settings.action ](text, value);
241
+ module.action[ settings.action ](text, value);
199
242
  }
200
243
  else if( $.isFunction(settings.action) ) {
201
244
  module.verbose('Triggering user action', settings.action, text, value);
@@ -218,44 +261,47 @@ $.fn.dropdown = function(parameters) {
218
261
  }
219
262
  },
220
263
 
221
- bind: {
222
- intent: function() {
223
- module.verbose('Binding hide intent event to document');
224
- $document
225
- .on(module.get.selectEvent(), module.event.test.hide)
226
- ;
227
- }
228
- },
264
+ action: {
229
265
 
230
- unbind: {
231
- intent: function() {
232
- module.verbose('Removing hide intent event from document');
233
- $document
234
- .off(module.get.selectEvent())
235
- ;
236
- }
237
- },
266
+ nothing: function() {},
238
267
 
239
- nothing: function() {},
268
+ hide: function() {
269
+ module.hide();
270
+ },
240
271
 
241
- changeText: function(text, value) {
242
- module.set.text(text);
243
- module.hide();
244
- },
272
+ activate: function(text, value) {
273
+ value = value || text;
274
+ module.set.selected(value);
275
+ module.set.value(value);
276
+ module.hide();
277
+ },
278
+
279
+ /* Deprecated */
280
+ auto: function(text, value) {
281
+ value = value || text;
282
+ module.set.selected(value);
283
+ module.set.value(value);
284
+ module.hide();
285
+ },
286
+
287
+ /* Deprecated */
288
+ changeText: function(text, value) {
289
+ value = value || text;
290
+ module.set.selected(value);
291
+ module.hide();
292
+ },
293
+
294
+ /* Deprecated */
295
+ updateForm: function(text, value) {
296
+ value = value || text;
297
+ module.set.selected(value);
298
+ module.set.value(value);
299
+ module.hide();
300
+ }
245
301
 
246
- updateForm: function(text, value) {
247
- module.set.text(text);
248
- module.set.value(value);
249
- module.hide();
250
302
  },
251
303
 
252
304
  get: {
253
- selectEvent: function() {
254
- return (isTouchDevice)
255
- ? 'touchstart'
256
- : 'click'
257
- ;
258
- },
259
305
  text: function() {
260
306
  return $text.text();
261
307
  },
@@ -266,14 +312,25 @@ $.fn.dropdown = function(parameters) {
266
312
  var
267
313
  $selectedItem
268
314
  ;
269
- value = value || $input.val();
270
- $item
271
- .each(function() {
272
- if( $(this).data(metadata.value) == value ) {
273
- $selectedItem = $(this);
274
- }
275
- })
276
- ;
315
+ value = value || module.get.value() || module.get.text();
316
+ if(value) {
317
+ $item
318
+ .each(function() {
319
+ var
320
+ $choice = $(this),
321
+ optionText = $choice.data(metadata.text) || $choice.text(),
322
+ optionValue = $choice.data(metadata.value) || optionText.toLowerCase()
323
+ ;
324
+ if( optionValue == value || optionText == value ) {
325
+ $selectedItem = $(this);
326
+ return false;
327
+ }
328
+ })
329
+ ;
330
+ }
331
+ else {
332
+ value = module.get.text();
333
+ }
277
334
  return $selectedItem || false;
278
335
  }
279
336
  },
@@ -342,7 +399,7 @@ $.fn.dropdown = function(parameters) {
342
399
 
343
400
  can: {
344
401
  click: function() {
345
- return (isTouchDevice || settings.on == 'click');
402
+ return (hasTouch || settings.on == 'click');
346
403
  },
347
404
  show: function() {
348
405
  return !$module.hasClass(className.disabled);
@@ -700,7 +757,7 @@ $.fn.dropdown.settings = {
700
757
  performance : true,
701
758
 
702
759
  on : 'click',
703
- action : 'auto',
760
+ action : 'activate',
704
761
 
705
762
  delay: {
706
763
  show: 200,
@@ -721,8 +778,8 @@ $.fn.dropdown.settings = {
721
778
  },
722
779
 
723
780
  metadata: {
724
- text : 'text',
725
- value : 'value'
781
+ text : 'text',
782
+ value : 'value'
726
783
  },
727
784
 
728
785
  selector : {