slickgrid-requirejs-rails 1.1.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5a6d01211065f356adab3acabfff8784bde02d4f
4
+ data.tar.gz: ea42c4639300e0b3f9d1a497b2e54cda6929089d
5
+ SHA512:
6
+ metadata.gz: 59ea4ce05529e60b29b8d52b3656d781d572c64e6520b490116502415524645b37386a866561e50c0caa19f3d35108ac8353f41dcd4f9d6785a49a4427b2a7e6
7
+ data.tar.gz: 438c49fe670a2d664fc3f282618114d92c2f2d7897d13f9553302d09bfc783c551a84ca27647976e73b98aa704e2c6ad2821f0d85459d2baccdeffa76954e88c
@@ -0,0 +1,281 @@
1
+ // Universal module definition
2
+ (function (root, factory) {
3
+ if (typeof define === 'function' && define.amd) {
4
+ // AMD. Register as an anonymous module.
5
+ define(['jquery', 'slick/slick.core'], factory);
6
+ } else {
7
+ // Browser globals
8
+ root.Slick.Plugins = root.Slick.Plugins || {};
9
+ root.Slick.Plugins.HeaderMenu = factory(root.jQuery, root.Slick);
10
+ }
11
+ }(this, function ($, Slick) {
12
+ /***
13
+ * A plugin to add drop-down menus to column headers.
14
+ *
15
+ * USAGE:
16
+ *
17
+ * Add the plugin .js & .css files and register it with the grid.
18
+ *
19
+ * To specify a menu in a column header, extend the column definition like so:
20
+ *
21
+ * var columns = [
22
+ * {
23
+ * id: 'myColumn',
24
+ * name: 'My column',
25
+ *
26
+ * // This is the relevant part
27
+ * header: {
28
+ * menu: {
29
+ * items: [
30
+ * {
31
+ * // menu item options
32
+ * },
33
+ * {
34
+ * // menu item options
35
+ * }
36
+ * ]
37
+ * }
38
+ * }
39
+ * }
40
+ * ];
41
+ *
42
+ *
43
+ * Available menu options:
44
+ * tooltip: Menu button tooltip.
45
+ *
46
+ *
47
+ * Available menu item options:
48
+ * title: Menu item text.
49
+ * disabled: Whether the item is disabled.
50
+ * tooltip: Item tooltip.
51
+ * command: A command identifier to be passed to the onCommand event handlers.
52
+ * iconCssClass: A CSS class to be added to the menu item icon.
53
+ * iconImage: A url to the icon image.
54
+ *
55
+ *
56
+ * The plugin exposes the following events:
57
+ * onBeforeMenuShow: Fired before the menu is shown. You can customize the menu or dismiss it by returning false.
58
+ * Event args:
59
+ * grid: Reference to the grid.
60
+ * column: Column definition.
61
+ * menu: Menu options. Note that you can change the menu items here.
62
+ *
63
+ * onCommand: Fired on menu item click for buttons with 'command' specified.
64
+ * Event args:
65
+ * grid: Reference to the grid.
66
+ * column: Column definition.
67
+ * command: Button command identified.
68
+ * button: Button options. Note that you can change the button options in your
69
+ * event handler, and the column header will be automatically updated to
70
+ * reflect them. This is useful if you want to implement something like a
71
+ * toggle button.
72
+ *
73
+ *
74
+ * @param options {Object} Options:
75
+ * buttonCssClass: an extra CSS class to add to the menu button
76
+ * buttonImage: a url to the menu button image (default '../images/down.gif')
77
+ * @class Slick.Plugins.HeaderButtons
78
+ * @constructor
79
+ */
80
+ function HeaderMenu(options) {
81
+ var _grid;
82
+ var _self = this;
83
+ var _handler = new Slick.EventHandler();
84
+ var _defaults = {
85
+ buttonCssClass: null,
86
+ buttonImage: null
87
+ };
88
+ var $menu;
89
+ var $activeHeaderColumn;
90
+
91
+
92
+ function init(grid) {
93
+ options = $.extend(true, {}, _defaults, options);
94
+ _grid = grid;
95
+ _handler
96
+ .subscribe(_grid.onHeaderCellRendered, handleHeaderCellRendered)
97
+ .subscribe(_grid.onBeforeHeaderCellDestroy, handleBeforeHeaderCellDestroy);
98
+
99
+ // Force the grid to re-render the header now that the events are hooked up.
100
+ _grid.setColumns(_grid.getColumns());
101
+
102
+ // Hide the menu on outside click.
103
+ $(document.body).bind("mousedown", handleBodyMouseDown);
104
+ }
105
+
106
+
107
+ function destroy() {
108
+ _handler.unsubscribeAll();
109
+ $(document.body).unbind("mousedown", handleBodyMouseDown);
110
+ }
111
+
112
+
113
+ function handleBodyMouseDown(e) {
114
+ if ($menu && $menu[0] != e.target && !$.contains($menu[0], e.target)) {
115
+ hideMenu();
116
+ }
117
+ }
118
+
119
+
120
+ function hideMenu() {
121
+ if ($menu) {
122
+ $menu.remove();
123
+ $menu = null;
124
+ $activeHeaderColumn
125
+ .removeClass("slick-header-column-active");
126
+ }
127
+ }
128
+
129
+ function handleHeaderCellRendered(e, args) {
130
+ var column = args.column;
131
+ var menu = column.header && column.header.menu;
132
+
133
+ if (menu) {
134
+ var $el = $("<div></div>")
135
+ .addClass("slick-header-menubutton")
136
+ .data("column", column)
137
+ .data("menu", menu);
138
+
139
+ if (options.buttonCssClass) {
140
+ $el.addClass(options.buttonCssClass);
141
+ }
142
+
143
+ if (options.buttonImage) {
144
+ $el.css("background-image", "url(" + options.buttonImage + ")");
145
+ }
146
+
147
+ if (menu.tooltip) {
148
+ $el.attr("title", menu.tooltip);
149
+ }
150
+
151
+ $el
152
+ .bind("click", showMenu)
153
+ .appendTo(args.node);
154
+ }
155
+ }
156
+
157
+
158
+ function handleBeforeHeaderCellDestroy(e, args) {
159
+ var column = args.column;
160
+
161
+ if (column.header && column.header.menu) {
162
+ $(args.node).find(".slick-header-menubutton").remove();
163
+ }
164
+ }
165
+
166
+
167
+ function showMenu(e) {
168
+ var $menuButton = $(this);
169
+ var menu = $menuButton.data("menu");
170
+ var columnDef = $menuButton.data("column");
171
+
172
+ // Let the user modify the menu or cancel altogether,
173
+ // or provide alternative menu implementation.
174
+ if (_self.onBeforeMenuShow.notify({
175
+ "grid": _grid,
176
+ "column": columnDef,
177
+ "menu": menu
178
+ }, e, _self) == false) {
179
+ return;
180
+ }
181
+
182
+
183
+ if (!$menu) {
184
+ $menu = $("<div class='slick-header-menu'></div>")
185
+ .appendTo(_grid.getContainerNode());
186
+ }
187
+ $menu.empty();
188
+
189
+
190
+ // Construct the menu items.
191
+ for (var i = 0; i < menu.items.length; i++) {
192
+ var item = menu.items[i];
193
+
194
+ var $li = $("<div class='slick-header-menuitem'></div>")
195
+ .data("command", item.command || '')
196
+ .data("column", columnDef)
197
+ .data("item", item)
198
+ .bind("click", handleMenuItemClick)
199
+ .appendTo($menu);
200
+
201
+ if (item.disabled) {
202
+ $li.addClass("slick-header-menuitem-disabled");
203
+ }
204
+
205
+ if (item.tooltip) {
206
+ $li.attr("title", item.tooltip);
207
+ }
208
+
209
+ var $icon = $("<div class='slick-header-menuicon'></div>")
210
+ .appendTo($li);
211
+
212
+ if (item.iconCssClass) {
213
+ $icon.addClass(item.iconCssClass);
214
+ }
215
+
216
+ if (item.iconImage) {
217
+ $icon.css("background-image", "url(" + item.iconImage + ")");
218
+ }
219
+
220
+ $("<span class='slick-header-menucontent'></span>")
221
+ .text(item.title)
222
+ .appendTo($li);
223
+ }
224
+
225
+ // Position the menu.
226
+ var gridWidth = $(_grid.getContainerNode()).width();
227
+
228
+ if (gridWidth < ($menu.width() + $(this).offset().left)) {
229
+ $menu.offset({ top: $(this).offset().top + $(this).height(), left: $(this).offset().left + $(this).width() - $menu.width() });
230
+ } else {
231
+ $menu.offset({ top: $(this).offset().top + $(this).height(), left: $(this).offset().left });
232
+ }
233
+
234
+ // Mark the header as active to keep the highlighting.
235
+ $activeHeaderColumn = $menuButton.closest(".slick-header-column");
236
+ $activeHeaderColumn
237
+ .addClass("slick-header-column-active");
238
+
239
+ // Stop propagation so that it doesn't register as a header click event.
240
+ e.preventDefault();
241
+ e.stopPropagation();
242
+ }
243
+
244
+
245
+ function handleMenuItemClick(e) {
246
+ var command = $(this).data("command");
247
+ var columnDef = $(this).data("column");
248
+ var item = $(this).data("item");
249
+
250
+ if (item.disabled) {
251
+ return;
252
+ }
253
+
254
+ hideMenu();
255
+
256
+ if (command != null && command != '') {
257
+ _self.onCommand.notify({
258
+ "grid": _grid,
259
+ "column": columnDef,
260
+ "command": command,
261
+ "item": item
262
+ }, e, _self);
263
+ }
264
+
265
+ // Stop propagation so that it doesn't register as a header click event.
266
+ e.preventDefault();
267
+ e.stopPropagation();
268
+ }
269
+
270
+ $.extend(this, {
271
+ "init": init,
272
+ "destroy": destroy,
273
+
274
+ "onBeforeMenuShow": new Slick.Event(),
275
+ "onCommand": new Slick.Event()
276
+ });
277
+ }
278
+
279
+ return HeaderMenu;
280
+
281
+ }));
@@ -1,3 +1,3 @@
1
1
  module SlickgridRequirejsRails
2
- VERSION = '1.1.2'
2
+ VERSION = '1.2.0'
3
3
  end
metadata CHANGED
@@ -1,190 +1,167 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slickgrid-requirejs-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
5
- prerelease:
4
+ version: 1.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Bogumil Wrona
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-08-30 00:00:00.000000000 Z
11
+ date: 2013-10-15 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: railties
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 3.1.1
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: 3.1.1
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: sass-rails
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: jquery-rails
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: jqueryui-requirejs-rails
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: requirejs-rails
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: rails
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: 3.1.1
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
96
  version: 3.1.1
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: sqlite3
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - '>='
116
102
  - !ruby/object:Gem::Version
117
103
  version: '0'
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - '>='
124
109
  - !ruby/object:Gem::Version
125
110
  version: '0'
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: coffee-rails
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ! '>='
115
+ - - '>='
132
116
  - !ruby/object:Gem::Version
133
117
  version: '0'
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ! '>='
122
+ - - '>='
140
123
  - !ruby/object:Gem::Version
141
124
  version: '0'
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: requirejs-rails-plugins
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
- - - ! '>='
129
+ - - '>='
148
130
  - !ruby/object:Gem::Version
149
131
  version: '0'
150
132
  type: :development
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
- - - ! '>='
136
+ - - '>='
156
137
  - !ruby/object:Gem::Version
157
138
  version: '0'
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: exception_notification
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
- - - ! '>='
143
+ - - '>='
164
144
  - !ruby/object:Gem::Version
165
145
  version: '0'
166
146
  type: :development
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
- - - ! '>='
150
+ - - '>='
172
151
  - !ruby/object:Gem::Version
173
152
  version: '0'
174
153
  - !ruby/object:Gem::Dependency
175
154
  name: better_errors
176
155
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
156
  requirements:
179
- - - ! '>='
157
+ - - '>='
180
158
  - !ruby/object:Gem::Version
181
159
  version: '0'
182
160
  type: :development
183
161
  prerelease: false
184
162
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
163
  requirements:
187
- - - ! '>='
164
+ - - '>='
188
165
  - !ruby/object:Gem::Version
189
166
  version: '0'
190
167
  description: SlickGrid Integration for Rails and RequireJS
@@ -194,6 +171,7 @@ executables: []
194
171
  extensions: []
195
172
  extra_rdoc_files: []
196
173
  files:
174
+ - app/assets/javascripts/slick/plugins/slick.headermenu.js
197
175
  - app/assets/stylesheets/slickgrid-requirejs-rails/application.css
198
176
  - app/controllers/slickgrid-requirejs-rails/application_controller.rb
199
177
  - app/helpers/slickgrid-requirejs-rails/application_helper.rb
@@ -385,33 +363,26 @@ files:
385
363
  homepage: https://github.com/bogwro/slickgrid-requirejs-rails
386
364
  licenses:
387
365
  - MIT
366
+ metadata: {}
388
367
  post_install_message:
389
368
  rdoc_options: []
390
369
  require_paths:
391
370
  - lib
392
371
  required_ruby_version: !ruby/object:Gem::Requirement
393
- none: false
394
372
  requirements:
395
- - - ! '>='
373
+ - - '>='
396
374
  - !ruby/object:Gem::Version
397
375
  version: '0'
398
- segments:
399
- - 0
400
- hash: -2237768874303737570
401
376
  required_rubygems_version: !ruby/object:Gem::Requirement
402
- none: false
403
377
  requirements:
404
- - - ! '>='
378
+ - - '>='
405
379
  - !ruby/object:Gem::Version
406
380
  version: '0'
407
- segments:
408
- - 0
409
- hash: -2237768874303737570
410
381
  requirements: []
411
382
  rubyforge_project:
412
- rubygems_version: 1.8.25
383
+ rubygems_version: 2.1.9
413
384
  signing_key:
414
- specification_version: 3
385
+ specification_version: 4
415
386
  summary: SlickGrid Integration for Rails and RequireJS
416
387
  test_files:
417
388
  - test/dummy/app/assets/javascripts/adapters/jquery-adapter.js