semantic-ui-rails 0.3.5 → 0.6.5

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
  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 : {