material_design_lite-sass 1.0.5 → 1.0.6

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.
@@ -125,6 +125,17 @@
125
125
  this.element_.removeEventListener('mouseleave', this.boundButtonBlurHandler);
126
126
  };
127
127
 
128
+ /**
129
+ * Public alias for the downgrade method.
130
+ *
131
+ * @public
132
+ */
133
+ MaterialButton.prototype.mdlDowngrade =
134
+ MaterialButton.prototype.mdlDowngrade_;
135
+
136
+ MaterialButton.prototype['mdlDowngrade'] =
137
+ MaterialButton.prototype.mdlDowngrade;
138
+
128
139
  // The component registers itself. It can assume componentHandler is available
129
140
  // in the global scope.
130
141
  componentHandler.register({
@@ -273,6 +273,17 @@
273
273
  this.element_.removeEventListener('mouseup', this.boundElementMouseUp);
274
274
  };
275
275
 
276
+ /**
277
+ * Public alias for the downgrade method.
278
+ *
279
+ * @public
280
+ */
281
+ MaterialCheckbox.prototype.mdlDowngrade =
282
+ MaterialCheckbox.prototype.mdlDowngrade_;
283
+
284
+ MaterialCheckbox.prototype['mdlDowngrade'] =
285
+ MaterialCheckbox.prototype.mdlDowngrade;
286
+
276
287
  // The component registers itself. It can assume componentHandler is available
277
288
  // in the global scope.
278
289
  componentHandler.register({
@@ -56,6 +56,7 @@
56
56
  MaterialDataTable.prototype.CssClasses_ = {
57
57
  DATA_TABLE: 'mdl-data-table',
58
58
  SELECTABLE: 'mdl-data-table--selectable',
59
+ SELECT_ELEMENT: 'mdl-data-table__select',
59
60
  IS_SELECTED: 'is-selected',
60
61
  IS_UPGRADED: 'is-upgraded'
61
62
  };
@@ -111,19 +112,18 @@
111
112
  */
112
113
  MaterialDataTable.prototype.createCheckbox_ = function(row, opt_rows) {
113
114
  var label = document.createElement('label');
114
- label.classList.add('mdl-checkbox');
115
- label.classList.add('mdl-js-checkbox');
116
- label.classList.add('mdl-js-ripple-effect');
117
- label.classList.add('mdl-data-table__select');
115
+ var labelClasses = [
116
+ 'mdl-checkbox',
117
+ 'mdl-js-checkbox',
118
+ 'mdl-js-ripple-effect',
119
+ this.CssClasses_.SELECT_ELEMENT
120
+ ];
121
+ label.className = labelClasses.join(' ');
118
122
  var checkbox = document.createElement('input');
119
123
  checkbox.type = 'checkbox';
120
124
  checkbox.classList.add('mdl-checkbox__input');
121
- if (row) {
122
- checkbox.addEventListener('change', this.selectRow_(checkbox, row));
123
- } else if (opt_rows) {
124
- checkbox.addEventListener('change',
125
- this.selectRow_(checkbox, null, opt_rows));
126
- }
125
+ checkbox.addEventListener('change',
126
+ this.selectRow_(checkbox, row, opt_rows));
127
127
 
128
128
  label.appendChild(checkbox);
129
129
  componentHandler.upgradeElement(label, 'MaterialCheckbox');
@@ -259,6 +259,17 @@
259
259
  this.element_.removeEventListener('mouseup', this.boundElementOnMouseUp);
260
260
  };
261
261
 
262
+ /**
263
+ * Public alias for the downgrade method.
264
+ *
265
+ * @public
266
+ */
267
+ MaterialIconToggle.prototype.mdlDowngrade =
268
+ MaterialIconToggle.prototype.mdlDowngrade_;
269
+
270
+ MaterialIconToggle.prototype['mdlDowngrade'] =
271
+ MaterialIconToggle.prototype.mdlDowngrade;
272
+
262
273
  // The component registers itself. It can assume componentHandler is available
263
274
  // in the global scope.
264
275
  componentHandler.register({
@@ -151,6 +151,7 @@
151
151
  // Collapse drawer (if any) when moving to a large screen size.
152
152
  if (this.drawer_) {
153
153
  this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);
154
+ this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);
154
155
  }
155
156
  }
156
157
  };
@@ -162,6 +163,7 @@
162
163
  */
163
164
  MaterialLayout.prototype.drawerToggleHandler_ = function() {
164
165
  this.drawer_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);
166
+ this.obfuscator_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);
165
167
  };
166
168
 
167
169
  /**
@@ -219,7 +221,8 @@
219
221
  container.appendChild(this.element_);
220
222
 
221
223
  var directChildren = this.element_.childNodes;
222
- for (var c = 0; c < directChildren.length; c++) {
224
+ var numChildren = directChildren.length;
225
+ for (var c = 0; c < numChildren; c++) {
223
226
  var child = directChildren[c];
224
227
  if (child.classList &&
225
228
  child.classList.contains(this.CssClasses_.HEADER)) {
@@ -243,13 +246,6 @@
243
246
 
244
247
  var mode = this.Mode_.STANDARD;
245
248
 
246
- // Keep an eye on screen size, and add/remove auxiliary class for styling
247
- // of small screens.
248
- this.screenSizeMediaQuery_ = window.matchMedia(
249
- /** @type {string} */ (this.Constant_.MAX_WIDTH));
250
- this.screenSizeMediaQuery_.addListener(this.screenSizeHandler_.bind(this));
251
- this.screenSizeHandler_();
252
-
253
249
  if (this.header_) {
254
250
  if (this.header_.classList.contains(this.CssClasses_.HEADER_SEAMED)) {
255
251
  mode = this.Mode_.SEAMED;
@@ -286,19 +282,11 @@
286
282
  }
287
283
  }
288
284
 
289
- /**
290
- * Prevents an event from triggering the default behaviour.
291
- * @param {Event} ev the event to eat.
292
- */
293
- var eatEvent = function(ev) {
294
- ev.preventDefault();
295
- };
296
-
297
285
  // Add drawer toggling button to our layout, if we have an openable drawer.
298
286
  if (this.drawer_) {
299
287
  var drawerButton = this.element_.querySelector('.' +
300
288
  this.CssClasses_.DRAWER_BTN);
301
- if (typeof(drawerButton) === 'undefined' || drawerButton === null) {
289
+ if (!drawerButton) {
302
290
  drawerButton = document.createElement('div');
303
291
  drawerButton.classList.add(this.CssClasses_.DRAWER_BTN);
304
292
 
@@ -324,8 +312,6 @@
324
312
  // not be present.
325
313
  this.element_.classList.add(this.CssClasses_.HAS_DRAWER);
326
314
 
327
- this.drawer_.addEventListener('mousewheel', eatEvent);
328
-
329
315
  // If we have a fixed header, add the button to the header rather than
330
316
  // the layout.
331
317
  if (this.element_.classList.contains(this.CssClasses_.FIXED_HEADER)) {
@@ -339,9 +325,16 @@
339
325
  this.element_.appendChild(obfuscator);
340
326
  obfuscator.addEventListener('click',
341
327
  this.drawerToggleHandler_.bind(this));
342
- obfuscator.addEventListener('mousewheel', eatEvent);
328
+ this.obfuscator_ = obfuscator;
343
329
  }
344
330
 
331
+ // Keep an eye on screen size, and add/remove auxiliary class for styling
332
+ // of small screens.
333
+ this.screenSizeMediaQuery_ = window.matchMedia(
334
+ /** @type {string} */ (this.Constant_.MAX_WIDTH));
335
+ this.screenSizeMediaQuery_.addListener(this.screenSizeHandler_.bind(this));
336
+ this.screenSizeHandler_();
337
+
345
338
  // Initialize tabs, if any.
346
339
  if (this.header_ && this.tabBar_) {
347
340
  this.element_.classList.add(this.CssClasses_.HAS_TABS);
@@ -424,29 +417,26 @@
424
417
  * @param {MaterialLayout} layout The MaterialLayout object that owns the tab.
425
418
  */
426
419
  function MaterialLayoutTab(tab, tabs, panels, layout) {
427
- if (tab) {
428
- if (layout.tabBar_.classList.contains(
429
- layout.CssClasses_.JS_RIPPLE_EFFECT)) {
430
- var rippleContainer = document.createElement('span');
431
- rippleContainer.classList.add(layout.CssClasses_.RIPPLE_CONTAINER);
432
- rippleContainer.classList.add(layout.CssClasses_.JS_RIPPLE_EFFECT);
433
- var ripple = document.createElement('span');
434
- ripple.classList.add(layout.CssClasses_.RIPPLE);
435
- rippleContainer.appendChild(ripple);
436
- tab.appendChild(rippleContainer);
437
- }
438
-
439
- tab.addEventListener('click', function(e) {
440
- e.preventDefault();
441
- var href = tab.href.split('#')[1];
442
- var panel = layout.content_.querySelector('#' + href);
443
- layout.resetTabState_(tabs);
444
- layout.resetPanelState_(panels);
445
- tab.classList.add(layout.CssClasses_.IS_ACTIVE);
446
- panel.classList.add(layout.CssClasses_.IS_ACTIVE);
447
- });
448
-
420
+ if (layout.tabBar_.classList.contains(
421
+ layout.CssClasses_.JS_RIPPLE_EFFECT)) {
422
+ var rippleContainer = document.createElement('span');
423
+ rippleContainer.classList.add(layout.CssClasses_.RIPPLE_CONTAINER);
424
+ rippleContainer.classList.add(layout.CssClasses_.JS_RIPPLE_EFFECT);
425
+ var ripple = document.createElement('span');
426
+ ripple.classList.add(layout.CssClasses_.RIPPLE);
427
+ rippleContainer.appendChild(ripple);
428
+ tab.appendChild(rippleContainer);
449
429
  }
430
+
431
+ tab.addEventListener('click', function(e) {
432
+ e.preventDefault();
433
+ var href = tab.href.split('#')[1];
434
+ var panel = layout.content_.querySelector('#' + href);
435
+ layout.resetTabState_(tabs);
436
+ layout.resetPanelState_(panels);
437
+ tab.classList.add(layout.CssClasses_.IS_ACTIVE);
438
+ panel.classList.add(layout.CssClasses_.IS_ACTIVE);
439
+ });
450
440
  }
451
441
 
452
442
  // The component registers itself. It can assume componentHandler is available
@@ -91,7 +91,7 @@ componentHandler = (function() {
91
91
  /** @type {!Array<componentHandler.Component>} */
92
92
  var createdComponents_ = [];
93
93
 
94
- var downgradeMethod_ = 'mdlDowngrade_';
94
+ var downgradeMethod_ = 'mdlDowngrade';
95
95
  var componentConfigProperty_ = 'mdlComponentConfigInternal_';
96
96
 
97
97
  /**
@@ -125,15 +125,15 @@
125
125
  }
126
126
 
127
127
  var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);
128
- this.boundItemKeydown = this.handleItemKeyboardEvent_.bind(this);
129
- this.boundItemClick = this.handleItemClick_.bind(this);
128
+ this.boundItemKeydown_ = this.handleItemKeyboardEvent_.bind(this);
129
+ this.boundItemClick_ = this.handleItemClick_.bind(this);
130
130
  for (var i = 0; i < items.length; i++) {
131
131
  // Add a listener to each menu item.
132
- items[i].addEventListener('click', this.boundItemClick);
132
+ items[i].addEventListener('click', this.boundItemClick_);
133
133
  // Add a tab index to each menu item.
134
134
  items[i].tabIndex = '-1';
135
135
  // Add a keyboard listener to each menu item.
136
- items[i].addEventListener('keydown', this.boundItemKeydown);
136
+ items[i].addEventListener('keydown', this.boundItemKeydown_);
137
137
  }
138
138
 
139
139
  // Add ripple classes to each item, if the user has enabled ripples.
@@ -294,7 +294,7 @@
294
294
  * @private
295
295
  */
296
296
  MaterialMenu.prototype.handleItemClick_ = function(evt) {
297
- if (evt.target.getAttribute('disabled') !== null) {
297
+ if (evt.target.hasAttribute('disabled')) {
298
298
  evt.stopPropagation();
299
299
  } else {
300
300
  // Wait some time before closing menu, so the user can see the ripple.
@@ -409,7 +409,9 @@
409
409
  // displayed the menu in the first place. If so, do nothing.
410
410
  // Also check to see if the menu is in the process of closing itself, and
411
411
  // do nothing in that case.
412
- if (e !== evt && !this.closing_) {
412
+ // Also check if the clicked element is a menu item
413
+ // if so, do nothing.
414
+ if (e !== evt && !this.closing_ && e.target.parentNode !== this.element_) {
413
415
  document.removeEventListener('click', callback);
414
416
  this.hide();
415
417
  }
@@ -434,8 +436,9 @@
434
436
  }
435
437
 
436
438
  // Measure the inner element.
437
- var height = this.element_.getBoundingClientRect().height;
438
- var width = this.element_.getBoundingClientRect().width;
439
+ var rect = this.element_.getBoundingClientRect();
440
+ var height = rect.height;
441
+ var width = rect.width;
439
442
 
440
443
  // Turn on animation, and apply the final clip. Also make invisible.
441
444
  // This triggers the transitions.
@@ -472,11 +475,22 @@
472
475
  var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);
473
476
 
474
477
  for (var i = 0; i < items.length; i++) {
475
- items[i].removeEventListener('click', this.boundItemClick);
476
- items[i].removeEventListener('keydown', this.boundItemKeydown);
478
+ items[i].removeEventListener('click', this.boundItemClick_);
479
+ items[i].removeEventListener('keydown', this.boundItemKeydown_);
477
480
  }
478
481
  };
479
482
 
483
+ /**
484
+ * Public alias for the downgrade method.
485
+ *
486
+ * @public
487
+ */
488
+ MaterialMenu.prototype.mdlDowngrade =
489
+ MaterialMenu.prototype.mdlDowngrade_;
490
+
491
+ MaterialMenu.prototype['mdlDowngrade'] =
492
+ MaterialMenu.prototype.mdlDowngrade;
493
+
480
494
  // The component registers itself. It can assume componentHandler is available
481
495
  // in the global scope.
482
496
  componentHandler.register({
@@ -123,6 +123,17 @@
123
123
  }
124
124
  };
125
125
 
126
+ /**
127
+ * Public alias for the downgrade method.
128
+ *
129
+ * @public
130
+ */
131
+ MaterialProgress.prototype.mdlDowngrade =
132
+ MaterialProgress.prototype.mdlDowngrade_;
133
+
134
+ MaterialProgress.prototype['mdlDowngrade'] =
135
+ MaterialProgress.prototype.mdlDowngrade;
136
+
126
137
  // The component registers itself. It can assume componentHandler is available
127
138
  // in the global scope.
128
139
  componentHandler.register({
@@ -225,6 +225,11 @@
225
225
  this.btnElement_ = this.element_.querySelector('.' +
226
226
  this.CssClasses_.RADIO_BTN);
227
227
 
228
+ this.boundChangeHandler_ = this.onChange_.bind(this);
229
+ this.boundFocusHandler_ = this.onChange_.bind(this);
230
+ this.boundBlurHandler_ = this.onBlur_.bind(this);
231
+ this.boundMouseUpHandler_ = this.onMouseup_.bind(this);
232
+
228
233
  var outerCircle = document.createElement('span');
229
234
  outerCircle.classList.add(this.CssClasses_.RADIO_OUTER_CIRCLE);
230
235
 
@@ -244,7 +249,7 @@
244
249
  this.CssClasses_.RIPPLE_CONTAINER);
245
250
  rippleContainer.classList.add(this.CssClasses_.RIPPLE_EFFECT);
246
251
  rippleContainer.classList.add(this.CssClasses_.RIPPLE_CENTER);
247
- rippleContainer.addEventListener('mouseup', this.onMouseup_.bind(this));
252
+ rippleContainer.addEventListener('mouseup', this.boundMouseUpHandler_);
248
253
 
249
254
  var ripple = document.createElement('span');
250
255
  ripple.classList.add(this.CssClasses_.RIPPLE);
@@ -253,16 +258,44 @@
253
258
  this.element_.appendChild(rippleContainer);
254
259
  }
255
260
 
256
- this.btnElement_.addEventListener('change', this.onChange_.bind(this));
257
- this.btnElement_.addEventListener('focus', this.onFocus_.bind(this));
258
- this.btnElement_.addEventListener('blur', this.onBlur_.bind(this));
259
- this.element_.addEventListener('mouseup', this.onMouseup_.bind(this));
261
+ this.btnElement_.addEventListener('change', this.boundChangeHandler_);
262
+ this.btnElement_.addEventListener('focus', this.boundFocusHandler_);
263
+ this.btnElement_.addEventListener('blur', this.boundBlurHandler_);
264
+ this.element_.addEventListener('mouseup', this.boundMouseUpHandler_);
260
265
 
261
266
  this.updateClasses_();
262
267
  this.element_.classList.add(this.CssClasses_.IS_UPGRADED);
263
268
  }
264
269
  };
265
270
 
271
+ /**
272
+ * Downgrade the element.
273
+ *
274
+ * @private
275
+ */
276
+ MaterialRadio.prototype.mdlDowngrade_ = function() {
277
+ var rippleContainer = this.element_.querySelector('.' +
278
+ this.CssClasses_.RIPPLE_CONTAINER);
279
+ this.btnElement_.removeEventListener('change', this.boundChangeHandler_);
280
+ this.btnElement_.removeEventListener('focus', this.boundFocusHandler_);
281
+ this.btnElement_.removeEventListener('blur', this.boundBlurHandler_);
282
+ this.element_.removeEventListener('mouseup', this.boundMouseUpHandler_);
283
+ if (rippleContainer) {
284
+ rippleContainer.removeEventListener('mouseup', this.boundMouseUpHandler_);
285
+ this.element_.removeChild(rippleContainer);
286
+ }
287
+ };
288
+
289
+ /**
290
+ * Public alias for the downgrade method.
291
+ *
292
+ * @public
293
+ */
294
+ MaterialRadio.prototype.mdlDowngrade = MaterialRadio.prototype.mdlDowngrade_;
295
+
296
+ MaterialRadio.prototype['mdlDowngrade'] =
297
+ MaterialRadio.prototype.mdlDowngrade;
298
+
266
299
  // The component registers itself. It can assume componentHandler is available
267
300
  // in the global scope.
268
301
  componentHandler.register({
@@ -267,6 +267,17 @@
267
267
  this.element_.removeEventListener('blur', this.boundUpHandler);
268
268
  };
269
269
 
270
+ /**
271
+ * Public alias for the downgrade method.
272
+ *
273
+ * @public
274
+ */
275
+ MaterialRipple.prototype.mdlDowngrade =
276
+ MaterialRipple.prototype.mdlDowngrade_;
277
+
278
+ MaterialRipple.prototype['mdlDowngrade'] =
279
+ MaterialRipple.prototype.mdlDowngrade;
280
+
270
281
  // The component registers itself. It can assume componentHandler is available
271
282
  // in the global scope.
272
283
  componentHandler.register({
@@ -245,6 +245,17 @@
245
245
  this.element_.parentElement.removeEventListener('mousedown', this.boundContainerMouseDownHandler);
246
246
  };
247
247
 
248
+ /**
249
+ * Public alias for the downgrade method.
250
+ *
251
+ * @public
252
+ */
253
+ MaterialSlider.prototype.mdlDowngrade =
254
+ MaterialSlider.prototype.mdlDowngrade_;
255
+
256
+ MaterialSlider.prototype['mdlDowngrade'] =
257
+ MaterialSlider.prototype.mdlDowngrade;
258
+
248
259
  // The component registers itself. It can assume componentHandler is available
249
260
  // in the global scope.
250
261
  componentHandler.register({
@@ -277,6 +277,17 @@
277
277
  this.element_.removeEventListener('mouseup', this.boundMouseUpHandler);
278
278
  };
279
279
 
280
+ /**
281
+ * Public alias for the downgrade method.
282
+ *
283
+ * @public
284
+ */
285
+ MaterialSwitch.prototype.mdlDowngrade =
286
+ MaterialSwitch.prototype.mdlDowngrade_;
287
+
288
+ MaterialSwitch.prototype['mdlDowngrade'] =
289
+ MaterialSwitch.prototype.mdlDowngrade;
290
+
280
291
  // The component registers itself. It can assume componentHandler is available
281
292
  // in the global scope.
282
293
  componentHandler.register({