twitter-bootstrap-rails 2.1.4 → 2.1.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.

Potentially problematic release.


This version of twitter-bootstrap-rails might be problematic. Click here for more details.

Files changed (53) hide show
  1. data/README.md +2 -1
  2. data/app/helpers/bootstrap_flash_helper.rb +2 -0
  3. data/app/helpers/glyph_helper.rb +1 -1
  4. data/lib/generators/bootstrap/install/install_generator.rb +5 -1
  5. data/lib/generators/bootstrap/install/templates/bootstrap.js +5 -0
  6. data/lib/generators/bootstrap/install/templates/bootstrap_and_overrides.less +3 -0
  7. data/lib/twitter/bootstrap/rails/version.rb +1 -1
  8. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-affix.js +4 -2
  9. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-alert.js +2 -4
  10. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-button.js +5 -7
  11. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-carousel.js +12 -12
  12. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-collapse.js +9 -11
  13. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-dropdown.js +9 -11
  14. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-modal.js +20 -25
  15. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-popover.js +1 -1
  16. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-scrollspy.js +1 -1
  17. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-tab.js +5 -7
  18. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-tooltip.js +12 -11
  19. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-transition.js +5 -5
  20. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-typeahead.js +19 -9
  21. data/vendor/toolkit/fontawesome.less +6 -5
  22. data/vendor/toolkit/twitter/bootstrap/accordion.less +1 -1
  23. data/vendor/toolkit/twitter/bootstrap/alerts.less +1 -1
  24. data/vendor/toolkit/twitter/bootstrap/bootstrap.less +2 -1
  25. data/vendor/toolkit/twitter/bootstrap/breadcrumbs.less +1 -1
  26. data/vendor/toolkit/twitter/bootstrap/button-groups.less +5 -8
  27. data/vendor/toolkit/twitter/bootstrap/buttons.less +17 -16
  28. data/vendor/toolkit/twitter/bootstrap/code.less +1 -1
  29. data/vendor/toolkit/twitter/bootstrap/dropdowns.less +32 -5
  30. data/vendor/toolkit/twitter/bootstrap/forms.less +47 -14
  31. data/vendor/toolkit/twitter/bootstrap/hero-unit.less +6 -5
  32. data/vendor/toolkit/twitter/bootstrap/labels-badges.less +4 -2
  33. data/vendor/toolkit/twitter/bootstrap/media.less +55 -0
  34. data/vendor/toolkit/twitter/bootstrap/mixins.less +15 -10
  35. data/vendor/toolkit/twitter/bootstrap/modals.less +7 -11
  36. data/vendor/toolkit/twitter/bootstrap/navbar.less +6 -6
  37. data/vendor/toolkit/twitter/bootstrap/navs.less +3 -2
  38. data/vendor/toolkit/twitter/bootstrap/pager.less +10 -9
  39. data/vendor/toolkit/twitter/bootstrap/pagination.less +69 -12
  40. data/vendor/toolkit/twitter/bootstrap/popovers.less +2 -2
  41. data/vendor/toolkit/twitter/bootstrap/progress-bars.less +2 -2
  42. data/vendor/toolkit/twitter/bootstrap/reset.less +5 -4
  43. data/vendor/toolkit/twitter/bootstrap/responsive-767px-max.less +20 -1
  44. data/vendor/toolkit/twitter/bootstrap/responsive-navbar.less +12 -4
  45. data/vendor/toolkit/twitter/bootstrap/responsive.less +1 -1
  46. data/vendor/toolkit/twitter/bootstrap/sprites.less +10 -10
  47. data/vendor/toolkit/twitter/bootstrap/tables.less +20 -29
  48. data/vendor/toolkit/twitter/bootstrap/thumbnails.less +1 -1
  49. data/vendor/toolkit/twitter/bootstrap/tooltip.less +1 -1
  50. data/vendor/toolkit/twitter/bootstrap/type.less +30 -24
  51. data/vendor/toolkit/twitter/bootstrap/variables.less +23 -1
  52. data/vendor/toolkit/twitter/bootstrap/wells.less +3 -3
  53. metadata +14 -12
data/README.md CHANGED
@@ -58,7 +58,7 @@ Layout (generates Twitter Bootstrap compatible layout) - (Haml and Slim supporte
58
58
  Usage:
59
59
 
60
60
 
61
- rails g bootstrap:layout [LAYOUT_NAME] [*fixed or fluid]
61
+ rails g bootstrap:layout [LAYOUT_NAME] [*fixed or fluid]
62
62
 
63
63
 
64
64
  Example:
@@ -191,6 +191,7 @@ gem 'twitter-bootstrap-rails', :git => 'git://github.com/seyhunak/twitter-bootst
191
191
  <li>Released gem v.2.1.2 (minor fixes and updated to Twitter Bootstrap 2.1.0)</li>
192
192
  <li>Released gem v.2.1.3 (minor fixes and updated to Twitter Bootstrap 2.1.1)</li>
193
193
  <li>Released gem v.2.1.4 (minor fixes)</li>
194
+ <li>Released gem v.2.1.5 (minor fixes, install generator detects javascript template engine, updated to Twitter Bootstrap 2.2.1)</li>
194
195
  </ul>
195
196
 
196
197
 
@@ -2,6 +2,8 @@ module BootstrapFlashHelper
2
2
  def bootstrap_flash
3
3
  flash_messages = []
4
4
  flash.each do |type, message|
5
+ # Skip Devise :timeout flag
6
+ next if type == :timeout
5
7
  type = :success if type == :notice
6
8
  type = :error if type == :alert
7
9
  text = content_tag(:div,
@@ -6,7 +6,7 @@ module GlyphHelper
6
6
  # # => <i class="icon-lock icon-white"></i>
7
7
 
8
8
  def glyph(*names)
9
- content_tag :i, nil, class: names.map{|name| "icon-#{name.to_s.gsub('_','-')}" }
9
+ content_tag :i, nil, :class => names.map{|name| "icon-#{name.to_s.gsub('_','-')}" }
10
10
  end
11
11
  end
12
12
 
@@ -31,7 +31,11 @@ module Bootstrap
31
31
  end
32
32
 
33
33
  def add_bootstrap
34
- copy_file "bootstrap.coffee", "app/assets/javascripts/bootstrap.js.coffee"
34
+ if Rails.configuration.app_generators.rails[:javascript_engine] == :coffee
35
+ copy_file "bootstrap.coffee", "app/assets/javascripts/bootstrap.js.coffee"
36
+ else
37
+ copy_file "bootstrap.js", "app/assets/javascripts/bootstrap.js"
38
+ end
35
39
  copy_file "bootstrap_and_overrides.less", "app/assets/stylesheets/bootstrap_and_overrides.css.less"
36
40
  end
37
41
 
@@ -0,0 +1,5 @@
1
+ jQuery(function() {
2
+ $("a[rel=popover]").popover();
3
+ $(".tooltip").tooltip();
4
+ $("a[rel=tooltip]").tooltip();
5
+ });
@@ -16,6 +16,9 @@
16
16
  // Font Awesome
17
17
  @import "fontawesome";
18
18
 
19
+ // Glyphicons
20
+ //@import "twitter/bootstrap/sprites.less";
21
+
19
22
  // Your custom LESS stylesheets goes here
20
23
  //
21
24
  // Since bootstrap was imported above you have access to its mixins which
@@ -1,7 +1,7 @@
1
1
  module Twitter
2
2
  module Bootstrap
3
3
  module Rails
4
- VERSION = "2.1.4"
4
+ VERSION = "2.1.5"
5
5
  end
6
6
  end
7
7
  end
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================
2
- * bootstrap-affix.js v2.1.1
2
+ * bootstrap-affix.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#affix
4
4
  * ==========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -28,7 +28,9 @@
28
28
 
29
29
  var Affix = function (element, options) {
30
30
  this.options = $.extend({}, $.fn.affix.defaults, options)
31
- this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
31
+ this.$window = $(window)
32
+ .on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
33
+ .on('click.affix.data-api', $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this))
32
34
  this.$element = $(element)
33
35
  this.checkPosition()
34
36
  }
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================
2
- * bootstrap-alert.js v2.1.1
2
+ * bootstrap-alert.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#alerts
4
4
  * ==========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -83,8 +83,6 @@
83
83
  /* ALERT DATA-API
84
84
  * ============== */
85
85
 
86
- $(function () {
87
- $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
88
- })
86
+ $(document).on('click.alert.data-api', dismiss, Alert.prototype.close)
89
87
 
90
88
  }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* ============================================================
2
- * bootstrap-button.js v2.1.1
2
+ * bootstrap-button.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#buttons
4
4
  * ============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -85,12 +85,10 @@
85
85
  /* BUTTON DATA-API
86
86
  * =============== */
87
87
 
88
- $(function () {
89
- $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
90
- var $btn = $(e.target)
91
- if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
92
- $btn.button('toggle')
93
- })
88
+ $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) {
89
+ var $btn = $(e.target)
90
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
91
+ $btn.button('toggle')
94
92
  })
95
93
 
96
94
  }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================
2
- * bootstrap-carousel.js v2.1.1
2
+ * bootstrap-carousel.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#carousel
4
4
  * ==========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -94,9 +94,7 @@
94
94
  , direction = type == 'next' ? 'left' : 'right'
95
95
  , fallback = type == 'next' ? 'first' : 'last'
96
96
  , that = this
97
- , e = $.Event('slide', {
98
- relatedTarget: $next[0]
99
- })
97
+ , e
100
98
 
101
99
  this.sliding = true
102
100
 
@@ -104,6 +102,10 @@
104
102
 
105
103
  $next = $next.length ? $next : this.$element.find('.item')[fallback]()
106
104
 
105
+ e = $.Event('slide', {
106
+ relatedTarget: $next[0]
107
+ })
108
+
107
109
  if ($next.hasClass('active')) return
108
110
 
109
111
  if ($.support.transition && this.$element.hasClass('slide')) {
@@ -163,14 +165,12 @@
163
165
  /* CAROUSEL DATA-API
164
166
  * ================= */
165
167
 
166
- $(function () {
167
- $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
168
- var $this = $(this), href
169
- , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
170
- , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
171
- $target.carousel(options)
172
- e.preventDefault()
173
- })
168
+ $(document).on('click.carousel.data-api', '[data-slide]', function (e) {
169
+ var $this = $(this), href
170
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
171
+ , options = $.extend({}, $target.data(), $this.data())
172
+ $target.carousel(options)
173
+ e.preventDefault()
174
174
  })
175
175
 
176
176
  }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* =============================================================
2
- * bootstrap-collapse.js v2.1.1
2
+ * bootstrap-collapse.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#collapse
4
4
  * =============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -143,16 +143,14 @@
143
143
  /* COLLAPSIBLE DATA-API
144
144
  * ==================== */
145
145
 
146
- $(function () {
147
- $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
148
- var $this = $(this), href
149
- , target = $this.attr('data-target')
150
- || e.preventDefault()
151
- || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
152
- , option = $(target).data('collapse') ? 'toggle' : $this.data()
153
- $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
154
- $(target).collapse(option)
155
- })
146
+ $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
147
+ var $this = $(this), href
148
+ , target = $this.attr('data-target')
149
+ || e.preventDefault()
150
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
151
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
152
+ $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
153
+ $(target).collapse(option)
156
154
  })
157
155
 
158
156
  }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* ============================================================
2
- * bootstrap-dropdown.js v2.1.1
2
+ * bootstrap-dropdown.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#dropdowns
4
4
  * ============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -100,8 +100,9 @@
100
100
  }
101
101
 
102
102
  function clearMenus() {
103
- getParent($(toggle))
104
- .removeClass('open')
103
+ $(toggle).each(function () {
104
+ getParent($(this)).removeClass('open')
105
+ })
105
106
  }
106
107
 
107
108
  function getParent($this) {
@@ -138,13 +139,10 @@
138
139
  /* APPLY TO STANDARD DROPDOWN ELEMENTS
139
140
  * =================================== */
140
141
 
141
- $(function () {
142
- $('html')
143
- .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
144
- $('body')
145
- .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
146
- .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
147
- .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
148
- })
142
+ $(document)
143
+ .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
144
+ .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
145
+ .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
146
+ .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
149
147
 
150
148
  }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* =========================================================
2
- * bootstrap-modal.js v2.1.1
2
+ * bootstrap-modal.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#modals
4
4
  * =========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -49,8 +49,6 @@
49
49
 
50
50
  if (this.isShown || e.isDefaultPrevented()) return
51
51
 
52
- $('body').addClass('modal-open')
53
-
54
52
  this.isShown = true
55
53
 
56
54
  this.escape()
@@ -72,13 +70,12 @@
72
70
  that.$element
73
71
  .addClass('in')
74
72
  .attr('aria-hidden', false)
75
- .focus()
76
73
 
77
74
  that.enforceFocus()
78
75
 
79
76
  transition ?
80
- that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
81
- that.$element.trigger('shown')
77
+ that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) :
78
+ that.$element.focus().trigger('shown')
82
79
 
83
80
  })
84
81
  }
@@ -96,8 +93,6 @@
96
93
 
97
94
  this.isShown = false
98
95
 
99
- $('body').removeClass('modal-open')
100
-
101
96
  this.escape()
102
97
 
103
98
  $(document).off('focusin.modal')
@@ -167,9 +162,11 @@
167
162
  this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
168
163
  .appendTo(document.body)
169
164
 
170
- if (this.options.backdrop != 'static') {
171
- this.$backdrop.click($.proxy(this.hide, this))
172
- }
165
+ this.$backdrop.click(
166
+ this.options.backdrop == 'static' ?
167
+ $.proxy(this.$element[0].focus, this.$element[0])
168
+ : $.proxy(this.hide, this)
169
+ )
173
170
 
174
171
  if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
175
172
 
@@ -219,21 +216,19 @@
219
216
  /* MODAL DATA-API
220
217
  * ============== */
221
218
 
222
- $(function () {
223
- $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
224
- var $this = $(this)
225
- , href = $this.attr('href')
226
- , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
227
- , option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
219
+ $(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) {
220
+ var $this = $(this)
221
+ , href = $this.attr('href')
222
+ , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
223
+ , option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data())
228
224
 
229
- e.preventDefault()
225
+ e.preventDefault()
230
226
 
231
- $target
232
- .modal(option)
233
- .one('hide', function () {
234
- $this.focus()
235
- })
236
- })
227
+ $target
228
+ .modal(option)
229
+ .one('hide', function () {
230
+ $this.focus()
231
+ })
237
232
  })
238
233
 
239
- }(window.jQuery);
234
+ }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* ===========================================================
2
- * bootstrap-popover.js v2.1.1
2
+ * bootstrap-popover.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#popovers
4
4
  * ===========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -1,5 +1,5 @@
1
1
  /* =============================================================
2
- * bootstrap-scrollspy.js v2.1.1
2
+ * bootstrap-scrollspy.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#scrollspy
4
4
  * =============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -1,5 +1,5 @@
1
1
  /* ========================================================
2
- * bootstrap-tab.js v2.1.1
2
+ * bootstrap-tab.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#tabs
4
4
  * ========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -49,7 +49,7 @@
49
49
 
50
50
  if ( $this.parent('li').hasClass('active') ) return
51
51
 
52
- previous = $ul.find('.active a').last()[0]
52
+ previous = $ul.find('.active:last a')[0]
53
53
 
54
54
  e = $.Event('show', {
55
55
  relatedTarget: previous
@@ -125,11 +125,9 @@
125
125
  /* TAB DATA-API
126
126
  * ============ */
127
127
 
128
- $(function () {
129
- $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
130
- e.preventDefault()
131
- $(this).tab('show')
132
- })
128
+ $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
129
+ e.preventDefault()
130
+ $(this).tab('show')
133
131
  })
134
132
 
135
133
  }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* ===========================================================
2
- * bootstrap-tooltip.js v2.1.1
2
+ * bootstrap-tooltip.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#tooltips
4
4
  * Inspired by the original jQuery.tipsy by Jason Frame
5
5
  * ===========================================================
@@ -119,9 +119,9 @@
119
119
  inside = /in/.test(placement)
120
120
 
121
121
  $tip
122
- .remove()
122
+ .detach()
123
123
  .css({ top: 0, left: 0, display: 'block' })
124
- .appendTo(inside ? this.$element : document.body)
124
+ .insertAfter(this.$element)
125
125
 
126
126
  pos = this.getPosition(inside)
127
127
 
@@ -144,7 +144,7 @@
144
144
  }
145
145
 
146
146
  $tip
147
- .css(tp)
147
+ .offset(tp)
148
148
  .addClass(placement)
149
149
  .addClass('in')
150
150
  }
@@ -166,18 +166,18 @@
166
166
 
167
167
  function removeWithAnimation() {
168
168
  var timeout = setTimeout(function () {
169
- $tip.off($.support.transition.end).remove()
169
+ $tip.off($.support.transition.end).detach()
170
170
  }, 500)
171
171
 
172
172
  $tip.one($.support.transition.end, function () {
173
173
  clearTimeout(timeout)
174
- $tip.remove()
174
+ $tip.detach()
175
175
  })
176
176
  }
177
177
 
178
178
  $.support.transition && this.$tip.hasClass('fade') ?
179
179
  removeWithAnimation() :
180
- $tip.remove()
180
+ $tip.detach()
181
181
 
182
182
  return this
183
183
  }
@@ -235,8 +235,9 @@
235
235
  this.enabled = !this.enabled
236
236
  }
237
237
 
238
- , toggle: function () {
239
- this[this.tip().hasClass('in') ? 'hide' : 'show']()
238
+ , toggle: function (e) {
239
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
240
+ self[self.tip().hasClass('in') ? 'hide' : 'show']()
240
241
  }
241
242
 
242
243
  , destroy: function () {
@@ -269,7 +270,7 @@
269
270
  , trigger: 'hover'
270
271
  , title: ''
271
272
  , delay: 0
272
- , html: true
273
+ , html: false
273
274
  }
274
275
 
275
- }(window.jQuery);
276
+ }(window.jQuery);