84 lines
2.1 KiB
JavaScript
84 lines
2.1 KiB
JavaScript
/*!
|
|
* Angular Material Design
|
|
* https://github.com/angular/material
|
|
* @license MIT
|
|
* v0.10.0
|
|
*/
|
|
goog.provide('ng.material.components.content');
|
|
goog.require('ng.material.core');
|
|
/**
|
|
* @ngdoc module
|
|
* @name material.components.content
|
|
*
|
|
* @description
|
|
* Scrollable content
|
|
*/
|
|
angular.module('material.components.content', [
|
|
'material.core'
|
|
])
|
|
.directive('mdContent', mdContentDirective);
|
|
|
|
/**
|
|
* @ngdoc directive
|
|
* @name mdContent
|
|
* @module material.components.content
|
|
*
|
|
* @restrict E
|
|
*
|
|
* @description
|
|
* The `<md-content>` directive is a container element useful for scrollable content
|
|
*
|
|
* @usage
|
|
*
|
|
* - Add the `[layout-padding]` attribute to make the content padded.
|
|
*
|
|
* <hljs lang="html">
|
|
* <md-content layout-padding>
|
|
* Lorem ipsum dolor sit amet, ne quod novum mei.
|
|
* </md-content>
|
|
* </hljs>
|
|
*
|
|
*/
|
|
|
|
function mdContentDirective($mdTheming) {
|
|
return {
|
|
restrict: 'E',
|
|
controller: ['$scope', '$element', ContentController],
|
|
link: function(scope, element, attr) {
|
|
var node = element[0];
|
|
|
|
$mdTheming(element);
|
|
scope.$broadcast('$mdContentLoaded', element);
|
|
|
|
iosScrollFix(element[0]);
|
|
}
|
|
};
|
|
|
|
function ContentController($scope, $element) {
|
|
this.$scope = $scope;
|
|
this.$element = $element;
|
|
}
|
|
}
|
|
mdContentDirective.$inject = ["$mdTheming"];
|
|
|
|
function iosScrollFix(node) {
|
|
// IOS FIX:
|
|
// If we scroll where there is no more room for the webview to scroll,
|
|
// by default the webview itself will scroll up and down, this looks really
|
|
// bad. So if we are scrolling to the very top or bottom, add/subtract one
|
|
angular.element(node).on('$md.pressdown', function(ev) {
|
|
// Only touch events
|
|
if (ev.pointer.type !== 't') return;
|
|
// Don't let a child content's touchstart ruin it for us.
|
|
if (ev.$materialScrollFixed) return;
|
|
ev.$materialScrollFixed = true;
|
|
|
|
if (node.scrollTop === 0) {
|
|
node.scrollTop = 1;
|
|
} else if (node.scrollHeight === node.scrollTop + node.offsetHeight) {
|
|
node.scrollTop -= 1;
|
|
}
|
|
});
|
|
}
|
|
|
|
ng.material.components.content = angular.module("material.components.content"); |