mirror of
https://github.com/arnaucube/commonroutesApp.git
synced 2026-02-07 19:46:44 +01:00
geolocation added on offerCar and travel page
This commit is contained in:
8
www/lib/angular-material/modules/js/sidenav/bower.json
Normal file
8
www/lib/angular-material/modules/js/sidenav/bower.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "angular-material-sidenav",
|
||||
"version": "1.1.0-master-2b98560",
|
||||
"dependencies": {
|
||||
"angular-material-core": "1.1.0-master-2b98560",
|
||||
"angular-material-backdrop": "1.1.0-master-2b98560"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
/*!
|
||||
* Angular Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.1
|
||||
*/
|
||||
md-sidenav.md-THEME_NAME-theme, md-sidenav.md-THEME_NAME-theme md-content {
|
||||
background-color: '{{background-hue-1}}'; }
|
||||
6
www/lib/angular-material/modules/js/sidenav/sidenav-default-theme.min.css
vendored
Normal file
6
www/lib/angular-material/modules/js/sidenav/sidenav-default-theme.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Angular Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.0-master-2b98560
|
||||
*/md-sidenav.md-THEME_NAME-theme,md-sidenav.md-THEME_NAME-theme md-content{background-color:'{{background-hue-1}}'}
|
||||
100
www/lib/angular-material/modules/js/sidenav/sidenav.css
Normal file
100
www/lib/angular-material/modules/js/sidenav/sidenav.css
Normal file
@@ -0,0 +1,100 @@
|
||||
/*!
|
||||
* Angular Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.1
|
||||
*/
|
||||
md-sidenav {
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
flex-direction: column;
|
||||
z-index: 60;
|
||||
width: 320px;
|
||||
max-width: 320px;
|
||||
bottom: 0;
|
||||
overflow: auto;
|
||||
-webkit-overflow-scrolling: touch; }
|
||||
md-sidenav ul {
|
||||
list-style: none; }
|
||||
md-sidenav.md-closed {
|
||||
display: none; }
|
||||
md-sidenav.md-closed-add, md-sidenav.md-closed-remove {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-transition: 0.2s ease-in all;
|
||||
transition: 0.2s ease-in all; }
|
||||
md-sidenav.md-closed-add.md-closed-add-active, md-sidenav.md-closed-remove.md-closed-remove-active {
|
||||
-webkit-transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||
transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); }
|
||||
md-sidenav.md-locked-open-add, md-sidenav.md-locked-open-remove {
|
||||
position: static;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0); }
|
||||
md-sidenav.md-locked-open, md-sidenav.md-locked-open.md-closed, md-sidenav.md-locked-open.md-closed.md-sidenav-left, md-sidenav.md-locked-open.md-closed, md-sidenav.md-locked-open.md-closed.md-sidenav-right, md-sidenav.md-locked-open-remove.md-closed {
|
||||
position: static;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0); }
|
||||
md-sidenav.md-locked-open-remove-active {
|
||||
-webkit-transition: width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2), min-width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
transition: width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2), min-width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
width: 0 !important;
|
||||
min-width: 0 !important; }
|
||||
md-sidenav.md-closed.md-locked-open-add {
|
||||
width: 0 !important;
|
||||
min-width: 0 !important;
|
||||
-webkit-transform: translate3d(0%, 0, 0);
|
||||
transform: translate3d(0%, 0, 0); }
|
||||
md-sidenav.md-closed.md-locked-open-add-active {
|
||||
-webkit-transition: width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2), min-width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
transition: width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2), min-width 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
width: 320px;
|
||||
min-width: 320px;
|
||||
-webkit-transform: translate3d(0%, 0, 0);
|
||||
transform: translate3d(0%, 0, 0); }
|
||||
|
||||
.md-sidenav-backdrop.md-locked-open {
|
||||
display: none; }
|
||||
|
||||
.md-sidenav-left, md-sidenav {
|
||||
left: 0;
|
||||
top: 0;
|
||||
-webkit-transform: translate3d(0%, 0, 0);
|
||||
transform: translate3d(0%, 0, 0); }
|
||||
.md-sidenav-left.md-closed, md-sidenav.md-closed {
|
||||
-webkit-transform: translate3d(-100%, 0, 0);
|
||||
transform: translate3d(-100%, 0, 0); }
|
||||
|
||||
.md-sidenav-right {
|
||||
left: 100%;
|
||||
top: 0;
|
||||
-webkit-transform: translate(-100%, 0);
|
||||
transform: translate(-100%, 0); }
|
||||
.md-sidenav-right.md-closed {
|
||||
-webkit-transform: translate(0%, 0);
|
||||
transform: translate(0%, 0); }
|
||||
|
||||
@media (min-width: 600px) {
|
||||
md-sidenav {
|
||||
max-width: 400px; } }
|
||||
|
||||
@media (max-width: 456px) {
|
||||
md-sidenav {
|
||||
width: calc(100% - 56px);
|
||||
min-width: calc(100% - 56px);
|
||||
max-width: calc(100% - 56px); } }
|
||||
|
||||
@media screen and (-ms-high-contrast: active) {
|
||||
.md-sidenav-left, md-sidenav {
|
||||
border-right: 1px solid #fff; }
|
||||
.md-sidenav-right {
|
||||
border-left: 1px solid #fff; } }
|
||||
536
www/lib/angular-material/modules/js/sidenav/sidenav.js
vendored
Normal file
536
www/lib/angular-material/modules/js/sidenav/sidenav.js
vendored
Normal file
@@ -0,0 +1,536 @@
|
||||
/*!
|
||||
* Angular Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.1
|
||||
*/
|
||||
(function( window, angular, undefined ){
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.components.sidenav
|
||||
*
|
||||
* @description
|
||||
* A Sidenav QP component.
|
||||
*/
|
||||
SidenavService.$inject = ["$mdComponentRegistry", "$mdUtil", "$q", "$log"];
|
||||
SidenavDirective.$inject = ["$mdMedia", "$mdUtil", "$mdConstant", "$mdTheming", "$animate", "$compile", "$parse", "$log", "$q", "$document"];
|
||||
SidenavController.$inject = ["$scope", "$element", "$attrs", "$mdComponentRegistry", "$q"];
|
||||
angular
|
||||
.module('material.components.sidenav', [
|
||||
'material.core',
|
||||
'material.components.backdrop'
|
||||
])
|
||||
.factory('$mdSidenav', SidenavService )
|
||||
.directive('mdSidenav', SidenavDirective)
|
||||
.directive('mdSidenavFocus', SidenavFocusDirective)
|
||||
.controller('$mdSidenavController', SidenavController);
|
||||
|
||||
|
||||
/**
|
||||
* @ngdoc service
|
||||
* @name $mdSidenav
|
||||
* @module material.components.sidenav
|
||||
*
|
||||
* @description
|
||||
* `$mdSidenav` makes it easy to interact with multiple sidenavs
|
||||
* in an app. When looking up a sidenav instance, you can either look
|
||||
* it up synchronously or wait for it to be initializied asynchronously.
|
||||
* This is done by passing the second argument to `$mdSidenav`.
|
||||
*
|
||||
* @usage
|
||||
* <hljs lang="js">
|
||||
* // Async lookup for sidenav instance; will resolve when the instance is available
|
||||
* $mdSidenav(componentId, true).then(function(instance) {
|
||||
* $log.debug( componentId + "is now ready" );
|
||||
* });
|
||||
* // Sync lookup for sidenav instance; this will resolve immediately.
|
||||
* $mdSidenav(componentId).then(function(instance) {
|
||||
* $log.debug( componentId + "is now ready" );
|
||||
* });
|
||||
* // Async toggle the given sidenav;
|
||||
* // when instance is known ready and lazy lookup is not needed.
|
||||
* $mdSidenav(componentId)
|
||||
* .toggle()
|
||||
* .then(function(){
|
||||
* $log.debug('toggled');
|
||||
* });
|
||||
* // Async open the given sidenav
|
||||
* $mdSidenav(componentId)
|
||||
* .open()
|
||||
* .then(function(){
|
||||
* $log.debug('opened');
|
||||
* });
|
||||
* // Async close the given sidenav
|
||||
* $mdSidenav(componentId)
|
||||
* .close()
|
||||
* .then(function(){
|
||||
* $log.debug('closed');
|
||||
* });
|
||||
* // Sync check to see if the specified sidenav is set to be open
|
||||
* $mdSidenav(componentId).isOpen();
|
||||
* // Sync check to whether given sidenav is locked open
|
||||
* // If this is true, the sidenav will be open regardless of close()
|
||||
* $mdSidenav(componentId).isLockedOpen();
|
||||
* // On close callback to handle close, backdrop click or escape key pressed
|
||||
* // Callback happens BEFORE the close action occurs.
|
||||
* $mdSidenav(componentId).onClose(function () {
|
||||
* $log.debug('closing');
|
||||
* });
|
||||
* </hljs>
|
||||
*/
|
||||
function SidenavService($mdComponentRegistry, $mdUtil, $q, $log) {
|
||||
var errorMsg = "SideNav '{0}' is not available! Did you use md-component-id='{0}'?";
|
||||
var service = {
|
||||
find : findInstance, // sync - returns proxy API
|
||||
waitFor : waitForInstance // async - returns promise
|
||||
};
|
||||
|
||||
/**
|
||||
* Service API that supports three (3) usages:
|
||||
* $mdSidenav().find("left") // sync (must already exist) or returns undefined
|
||||
* $mdSidenav("left").toggle(); // sync (must already exist) or returns reject promise;
|
||||
* $mdSidenav("left",true).then( function(left){ // async returns instance when available
|
||||
* left.toggle();
|
||||
* });
|
||||
*/
|
||||
return function(handle, enableWait) {
|
||||
if ( angular.isUndefined(handle) ) return service;
|
||||
|
||||
var shouldWait = enableWait === true;
|
||||
var instance = service.find(handle, shouldWait);
|
||||
return !instance && shouldWait ? service.waitFor(handle) :
|
||||
!instance && angular.isUndefined(enableWait) ? addLegacyAPI(service, handle) : instance;
|
||||
};
|
||||
|
||||
/**
|
||||
* For failed instance/handle lookups, older-clients expect an response object with noops
|
||||
* that include `rejected promise APIs`
|
||||
*/
|
||||
function addLegacyAPI(service, handle) {
|
||||
var falseFn = function() { return false; };
|
||||
var rejectFn = function() {
|
||||
return $q.when($mdUtil.supplant(errorMsg, [handle || ""]));
|
||||
};
|
||||
|
||||
return angular.extend({
|
||||
isLockedOpen : falseFn,
|
||||
isOpen : falseFn,
|
||||
toggle : rejectFn,
|
||||
open : rejectFn,
|
||||
close : rejectFn,
|
||||
onClose : angular.noop,
|
||||
then : function(callback) {
|
||||
return waitForInstance(handle)
|
||||
.then(callback || angular.noop);
|
||||
}
|
||||
}, service);
|
||||
}
|
||||
/**
|
||||
* Synchronously lookup the controller instance for the specified sidNav instance which has been
|
||||
* registered with the markup `md-component-id`
|
||||
*/
|
||||
function findInstance(handle, shouldWait) {
|
||||
var instance = $mdComponentRegistry.get(handle);
|
||||
|
||||
if (!instance && !shouldWait) {
|
||||
|
||||
// Report missing instance
|
||||
$log.error( $mdUtil.supplant(errorMsg, [handle || ""]) );
|
||||
|
||||
// The component has not registered itself... most like NOT yet created
|
||||
// return null to indicate that the Sidenav is not in the DOM
|
||||
return undefined;
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Asynchronously wait for the component instantiation,
|
||||
* Deferred lookup of component instance using $component registry
|
||||
*/
|
||||
function waitForInstance(handle) {
|
||||
return $mdComponentRegistry.when(handle).catch($log.error);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name mdSidenavFocus
|
||||
* @module material.components.sidenav
|
||||
*
|
||||
* @restrict A
|
||||
*
|
||||
* @description
|
||||
* `mdSidenavFocus` provides a way to specify the focused element when a sidenav opens.
|
||||
* This is completely optional, as the sidenav itself is focused by default.
|
||||
*
|
||||
* @usage
|
||||
* <hljs lang="html">
|
||||
* <md-sidenav>
|
||||
* <form>
|
||||
* <md-input-container>
|
||||
* <label for="testInput">Label</label>
|
||||
* <input id="testInput" type="text" md-sidenav-focus>
|
||||
* </md-input-container>
|
||||
* </form>
|
||||
* </md-sidenav>
|
||||
* </hljs>
|
||||
**/
|
||||
function SidenavFocusDirective() {
|
||||
return {
|
||||
restrict: 'A',
|
||||
require: '^mdSidenav',
|
||||
link: function(scope, element, attr, sidenavCtrl) {
|
||||
// @see $mdUtil.findFocusTarget(...)
|
||||
}
|
||||
};
|
||||
}
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name mdSidenav
|
||||
* @module material.components.sidenav
|
||||
* @restrict E
|
||||
*
|
||||
* @description
|
||||
*
|
||||
* A Sidenav component that can be opened and closed programatically.
|
||||
*
|
||||
* By default, upon opening it will slide out on top of the main content area.
|
||||
*
|
||||
* For keyboard and screen reader accessibility, focus is sent to the sidenav wrapper by default.
|
||||
* It can be overridden with the `md-autofocus` directive on the child element you want focused.
|
||||
*
|
||||
* @usage
|
||||
* <hljs lang="html">
|
||||
* <div layout="row" ng-controller="MyController">
|
||||
* <md-sidenav md-component-id="left" class="md-sidenav-left">
|
||||
* Left Nav!
|
||||
* </md-sidenav>
|
||||
*
|
||||
* <md-content>
|
||||
* Center Content
|
||||
* <md-button ng-click="openLeftMenu()">
|
||||
* Open Left Menu
|
||||
* </md-button>
|
||||
* </md-content>
|
||||
*
|
||||
* <md-sidenav md-component-id="right"
|
||||
* md-is-locked-open="$mdMedia('min-width: 333px')"
|
||||
* class="md-sidenav-right">
|
||||
* <form>
|
||||
* <md-input-container>
|
||||
* <label for="testInput">Test input</label>
|
||||
* <input id="testInput" type="text"
|
||||
* ng-model="data" md-autofocus>
|
||||
* </md-input-container>
|
||||
* </form>
|
||||
* </md-sidenav>
|
||||
* </div>
|
||||
* </hljs>
|
||||
*
|
||||
* <hljs lang="js">
|
||||
* var app = angular.module('myApp', ['ngMaterial']);
|
||||
* app.controller('MyController', function($scope, $mdSidenav) {
|
||||
* $scope.openLeftMenu = function() {
|
||||
* $mdSidenav('left').toggle();
|
||||
* };
|
||||
* });
|
||||
* </hljs>
|
||||
*
|
||||
* @param {expression=} md-is-open A model bound to whether the sidenav is opened.
|
||||
* @param {boolean=} md-disable-backdrop When present in the markup, the sidenav will not show a backdrop.
|
||||
* @param {string=} md-component-id componentId to use with $mdSidenav service.
|
||||
* @param {expression=} md-is-locked-open When this expression evaluates to true,
|
||||
* the sidenav 'locks open': it falls into the content's flow instead
|
||||
* of appearing over it. This overrides the `md-is-open` attribute.
|
||||
* @param {string=} md-disable-scroll-target Selector, pointing to an element, whose scrolling will
|
||||
* be disabled when the sidenav is opened. By default this is the sidenav's direct parent.
|
||||
*
|
||||
* The $mdMedia() service is exposed to the is-locked-open attribute, which
|
||||
* can be given a media query or one of the `sm`, `gt-sm`, `md`, `gt-md`, `lg` or `gt-lg` presets.
|
||||
* Examples:
|
||||
*
|
||||
* - `<md-sidenav md-is-locked-open="shouldLockOpen"></md-sidenav>`
|
||||
* - `<md-sidenav md-is-locked-open="$mdMedia('min-width: 1000px')"></md-sidenav>`
|
||||
* - `<md-sidenav md-is-locked-open="$mdMedia('sm')"></md-sidenav>` (locks open on small screens)
|
||||
*/
|
||||
function SidenavDirective($mdMedia, $mdUtil, $mdConstant, $mdTheming, $animate, $compile, $parse, $log, $q, $document) {
|
||||
return {
|
||||
restrict: 'E',
|
||||
scope: {
|
||||
isOpen: '=?mdIsOpen'
|
||||
},
|
||||
controller: '$mdSidenavController',
|
||||
compile: function(element) {
|
||||
element.addClass('md-closed');
|
||||
element.attr('tabIndex', '-1');
|
||||
return postLink;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Directive Post Link function...
|
||||
*/
|
||||
function postLink(scope, element, attr, sidenavCtrl) {
|
||||
var lastParentOverFlow;
|
||||
var backdrop;
|
||||
var disableScrollTarget = null;
|
||||
var triggeringElement = null;
|
||||
var previousContainerStyles;
|
||||
var promise = $q.when(true);
|
||||
var isLockedOpenParsed = $parse(attr.mdIsLockedOpen);
|
||||
var isLocked = function() {
|
||||
return isLockedOpenParsed(scope.$parent, {
|
||||
$media: function(arg) {
|
||||
$log.warn("$media is deprecated for is-locked-open. Use $mdMedia instead.");
|
||||
return $mdMedia(arg);
|
||||
},
|
||||
$mdMedia: $mdMedia
|
||||
});
|
||||
};
|
||||
|
||||
if (attr.mdDisableScrollTarget) {
|
||||
disableScrollTarget = $document[0].querySelector(attr.mdDisableScrollTarget);
|
||||
|
||||
if (disableScrollTarget) {
|
||||
disableScrollTarget = angular.element(disableScrollTarget);
|
||||
} else {
|
||||
$log.warn($mdUtil.supplant('mdSidenav: couldn\'t find element matching ' +
|
||||
'selector "{selector}". Falling back to parent.', { selector: attr.mdDisableScrollTarget }));
|
||||
}
|
||||
}
|
||||
|
||||
if (!disableScrollTarget) {
|
||||
disableScrollTarget = element.parent();
|
||||
}
|
||||
|
||||
// Only create the backdrop if the backdrop isn't disabled.
|
||||
if (!attr.hasOwnProperty('mdDisableBackdrop')) {
|
||||
backdrop = $mdUtil.createBackdrop(scope, "md-sidenav-backdrop md-opaque ng-enter");
|
||||
}
|
||||
|
||||
element.addClass('_md'); // private md component indicator for styling
|
||||
$mdTheming(element);
|
||||
|
||||
// The backdrop should inherit the sidenavs theme,
|
||||
// because the backdrop will take its parent theme by default.
|
||||
if ( backdrop ) $mdTheming.inherit(backdrop, element);
|
||||
|
||||
element.on('$destroy', function() {
|
||||
backdrop && backdrop.remove();
|
||||
sidenavCtrl.destroy();
|
||||
});
|
||||
|
||||
scope.$on('$destroy', function(){
|
||||
backdrop && backdrop.remove();
|
||||
});
|
||||
|
||||
scope.$watch(isLocked, updateIsLocked);
|
||||
scope.$watch('isOpen', updateIsOpen);
|
||||
|
||||
|
||||
// Publish special accessor for the Controller instance
|
||||
sidenavCtrl.$toggleOpen = toggleOpen;
|
||||
|
||||
/**
|
||||
* Toggle the DOM classes to indicate `locked`
|
||||
* @param isLocked
|
||||
*/
|
||||
function updateIsLocked(isLocked, oldValue) {
|
||||
scope.isLockedOpen = isLocked;
|
||||
if (isLocked === oldValue) {
|
||||
element.toggleClass('md-locked-open', !!isLocked);
|
||||
} else {
|
||||
$animate[isLocked ? 'addClass' : 'removeClass'](element, 'md-locked-open');
|
||||
}
|
||||
if (backdrop) {
|
||||
backdrop.toggleClass('md-locked-open', !!isLocked);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle the SideNav view and attach/detach listeners
|
||||
* @param isOpen
|
||||
*/
|
||||
function updateIsOpen(isOpen) {
|
||||
// Support deprecated md-sidenav-focus attribute as fallback
|
||||
var focusEl = $mdUtil.findFocusTarget(element) || $mdUtil.findFocusTarget(element,'[md-sidenav-focus]') || element;
|
||||
var parent = element.parent();
|
||||
|
||||
parent[isOpen ? 'on' : 'off']('keydown', onKeyDown);
|
||||
if (backdrop) backdrop[isOpen ? 'on' : 'off']('click', close);
|
||||
|
||||
var restorePositioning = updateContainerPositions(parent, isOpen);
|
||||
|
||||
if ( isOpen ) {
|
||||
// Capture upon opening..
|
||||
triggeringElement = $document[0].activeElement;
|
||||
}
|
||||
|
||||
disableParentScroll(isOpen);
|
||||
|
||||
return promise = $q.all([
|
||||
isOpen && backdrop ? $animate.enter(backdrop, parent) : backdrop ?
|
||||
$animate.leave(backdrop) : $q.when(true),
|
||||
$animate[isOpen ? 'removeClass' : 'addClass'](element, 'md-closed')
|
||||
]).then(function() {
|
||||
// Perform focus when animations are ALL done...
|
||||
if (scope.isOpen) {
|
||||
focusEl && focusEl.focus();
|
||||
}
|
||||
|
||||
// Restores the positioning on the sidenav and backdrop.
|
||||
restorePositioning && restorePositioning();
|
||||
});
|
||||
}
|
||||
|
||||
function updateContainerPositions(parent, willOpen) {
|
||||
var drawerEl = element[0];
|
||||
var scrollTop = parent[0].scrollTop;
|
||||
|
||||
if (willOpen && scrollTop) {
|
||||
previousContainerStyles = {
|
||||
top: drawerEl.style.top,
|
||||
bottom: drawerEl.style.bottom,
|
||||
height: drawerEl.style.height
|
||||
};
|
||||
|
||||
// When the parent is scrolled down, then we want to be able to show the sidenav at the current scroll
|
||||
// position. We're moving the sidenav down to the correct scroll position and apply the height of the
|
||||
// parent, to increase the performance. Using 100% as height, will impact the performance heavily.
|
||||
var positionStyle = {
|
||||
top: scrollTop + 'px',
|
||||
bottom: 'auto',
|
||||
height: parent[0].clientHeight + 'px'
|
||||
};
|
||||
|
||||
// Apply the new position styles to the sidenav and backdrop.
|
||||
element.css(positionStyle);
|
||||
backdrop.css(positionStyle);
|
||||
}
|
||||
|
||||
// When the sidenav is closing and we have previous defined container styles,
|
||||
// then we return a restore function, which resets the sidenav and backdrop.
|
||||
if (!willOpen && previousContainerStyles) {
|
||||
return function() {
|
||||
drawerEl.style.top = previousContainerStyles.top;
|
||||
drawerEl.style.bottom = previousContainerStyles.bottom;
|
||||
drawerEl.style.height = previousContainerStyles.height;
|
||||
|
||||
backdrop[0].style.top = null;
|
||||
backdrop[0].style.bottom = null;
|
||||
backdrop[0].style.height = null;
|
||||
|
||||
previousContainerStyles = null;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent parent scrolling (when the SideNav is open)
|
||||
*/
|
||||
function disableParentScroll(disabled) {
|
||||
if ( disabled && !lastParentOverFlow ) {
|
||||
lastParentOverFlow = disableScrollTarget.css('overflow');
|
||||
disableScrollTarget.css('overflow', 'hidden');
|
||||
} else if (angular.isDefined(lastParentOverFlow)) {
|
||||
disableScrollTarget.css('overflow', lastParentOverFlow);
|
||||
lastParentOverFlow = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle the sideNav view and publish a promise to be resolved when
|
||||
* the view animation finishes.
|
||||
*
|
||||
* @param isOpen
|
||||
* @returns {*}
|
||||
*/
|
||||
function toggleOpen( isOpen ) {
|
||||
if (scope.isOpen == isOpen ) {
|
||||
|
||||
return $q.when(true);
|
||||
|
||||
} else {
|
||||
if (scope.isOpen && sidenavCtrl.onCloseCb) sidenavCtrl.onCloseCb();
|
||||
|
||||
return $q(function(resolve){
|
||||
// Toggle value to force an async `updateIsOpen()` to run
|
||||
scope.isOpen = isOpen;
|
||||
|
||||
$mdUtil.nextTick(function() {
|
||||
// When the current `updateIsOpen()` animation finishes
|
||||
promise.then(function(result) {
|
||||
|
||||
if ( !scope.isOpen ) {
|
||||
// reset focus to originating element (if available) upon close
|
||||
triggeringElement && triggeringElement.focus();
|
||||
triggeringElement = null;
|
||||
}
|
||||
|
||||
resolve(result);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Auto-close sideNav when the `escape` key is pressed.
|
||||
* @param evt
|
||||
*/
|
||||
function onKeyDown(ev) {
|
||||
var isEscape = (ev.keyCode === $mdConstant.KEY_CODE.ESCAPE);
|
||||
return isEscape ? close(ev) : $q.when(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* With backdrop `clicks` or `escape` key-press, immediately
|
||||
* apply the CSS close transition... Then notify the controller
|
||||
* to close() and perform its own actions.
|
||||
*/
|
||||
function close(ev) {
|
||||
ev.preventDefault();
|
||||
|
||||
return sidenavCtrl.close();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* @private
|
||||
* @ngdoc controller
|
||||
* @name SidenavController
|
||||
* @module material.components.sidenav
|
||||
*
|
||||
*/
|
||||
function SidenavController($scope, $element, $attrs, $mdComponentRegistry, $q) {
|
||||
|
||||
var self = this;
|
||||
|
||||
// Use Default internal method until overridden by directive postLink
|
||||
|
||||
// Synchronous getters
|
||||
self.isOpen = function() { return !!$scope.isOpen; };
|
||||
self.isLockedOpen = function() { return !!$scope.isLockedOpen; };
|
||||
|
||||
// Synchronous setters
|
||||
self.onClose = function (callback) {
|
||||
self.onCloseCb = callback;
|
||||
return self;
|
||||
};
|
||||
|
||||
// Async actions
|
||||
self.open = function() { return self.$toggleOpen( true ); };
|
||||
self.close = function() { return self.$toggleOpen( false ); };
|
||||
self.toggle = function() { return self.$toggleOpen( !$scope.isOpen ); };
|
||||
self.$toggleOpen = function(value) { return $q.when($scope.isOpen = value); };
|
||||
|
||||
self.destroy = $mdComponentRegistry.register(self, $attrs.mdComponentId);
|
||||
}
|
||||
|
||||
})(window, window.angular);
|
||||
6
www/lib/angular-material/modules/js/sidenav/sidenav.min.css
vendored
Normal file
6
www/lib/angular-material/modules/js/sidenav/sidenav.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Angular Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.0-master-2b98560
|
||||
*/md-sidenav{box-sizing:border-box;position:absolute;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{-webkit-transition:all .4s cubic-bezier(.25,.8,.25,1);transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{-webkit-transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{-webkit-transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}.md-sidenav-right.md-closed{-webkit-transform:translate(0,0);transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}
|
||||
7
www/lib/angular-material/modules/js/sidenav/sidenav.min.js
vendored
Normal file
7
www/lib/angular-material/modules/js/sidenav/sidenav.min.js
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* Angular Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.0-master-2b98560
|
||||
*/
|
||||
!function(e,n,t){"use strict";function o(e,o,r,i){function s(e,t){var i=function(){return!1},s=function(){return r.when(o.supplant(d,[t||""]))};return n.extend({isLockedOpen:i,isOpen:i,toggle:s,open:s,close:s,onClose:n.noop,then:function(e){return c(t).then(e||n.noop)}},e)}function l(n,r){var s=e.get(n);return s||r?s:(i.error(o.supplant(d,[n||""])),t)}function c(n){return e.when(n)["catch"](i.error)}var d="SideNav '{0}' is not available! Did you use md-component-id='{0}'?",a={find:l,waitFor:c};return function(e,t){if(n.isUndefined(e))return a;var o=t===!0,r=a.find(e,o);return!r&&o?a.waitFor(e):!r&&n.isUndefined(t)?s(a,e):r}}function r(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,o){}}}function i(e,o,r,i,s,l,c,d,a,u){function p(l,p,m,f){function g(e,n){l.isLockedOpen=e,e===n?p.toggleClass("md-locked-open",!!e):s[e?"addClass":"removeClass"](p,"md-locked-open"),k&&k.toggleClass("md-locked-open",!!e)}function $(e){var n=o.findFocusTarget(p)||o.findFocusTarget(p,"[md-sidenav-focus]")||p,t=p.parent();t[e?"on":"off"]("keydown",O),k&&k[e?"on":"off"]("click",w);var r=v(t,e);return e&&(D=u[0].activeElement),h(e),T=a.all([e&&k?s.enter(k,t):k?s.leave(k):a.when(!0),s[e?"removeClass":"addClass"](p,"md-closed")]).then(function(){l.isOpen&&n&&n.focus(),r&&r()})}function v(e,n){var t=p[0],o=e[0].scrollTop;if(n&&o){b={top:t.style.top,bottom:t.style.bottom,height:t.style.height};var r={top:o+"px",bottom:"auto",height:e[0].clientHeight+"px"};p.css(r),k.css(r)}if(!n&&b)return function(){t.style.top=b.top,t.style.bottom=b.bottom,t.style.height=b.height,k[0].style.top=null,k[0].style.bottom=null,k[0].style.height=null,b=null}}function h(e){e&&!y?(y=S.css("overflow"),S.css("overflow","hidden")):n.isDefined(y)&&(S.css("overflow",y),y=t)}function C(e){return l.isOpen==e?a.when(!0):(l.isOpen&&f.onCloseCb&&f.onCloseCb(),a(function(n){l.isOpen=e,o.nextTick(function(){T.then(function(e){l.isOpen||(D&&D.focus(),D=null),n(e)})})}))}function O(e){var n=e.keyCode===r.KEY_CODE.ESCAPE;return n?w(e):a.when(!0)}function w(e){return e.preventDefault(),f.close()}var y,k,b,S=null,D=null,T=a.when(!0),q=c(m.mdIsLockedOpen),E=function(){return q(l.$parent,{$media:function(n){return d.warn("$media is deprecated for is-locked-open. Use $mdMedia instead."),e(n)},$mdMedia:e})};m.mdDisableScrollTarget&&(S=u[0].querySelector(m.mdDisableScrollTarget),S?S=n.element(S):d.warn(o.supplant('mdSidenav: couldn\'t find element matching selector "{selector}". Falling back to parent.',{selector:m.mdDisableScrollTarget}))),S||(S=p.parent()),m.hasOwnProperty("mdDisableBackdrop")||(k=o.createBackdrop(l,"md-sidenav-backdrop md-opaque ng-enter")),p.addClass("_md"),i(p),k&&i.inherit(k,p),p.on("$destroy",function(){k&&k.remove(),f.destroy()}),l.$on("$destroy",function(){k&&k.remove()}),l.$watch(E,g),l.$watch("isOpen",$),f.$toggleOpen=C}return{restrict:"E",scope:{isOpen:"=?mdIsOpen"},controller:"$mdSidenavController",compile:function(e){return e.addClass("md-closed"),e.attr("tabIndex","-1"),p}}}function s(e,n,t,o,r){var i=this;i.isOpen=function(){return!!e.isOpen},i.isLockedOpen=function(){return!!e.isLockedOpen},i.onClose=function(e){return i.onCloseCb=e,i},i.open=function(){return i.$toggleOpen(!0)},i.close=function(){return i.$toggleOpen(!1)},i.toggle=function(){return i.$toggleOpen(!e.isOpen)},i.$toggleOpen=function(n){return r.when(e.isOpen=n)},i.destroy=o.register(i,t.mdComponentId)}o.$inject=["$mdComponentRegistry","$mdUtil","$q","$log"],i.$inject=["$mdMedia","$mdUtil","$mdConstant","$mdTheming","$animate","$compile","$parse","$log","$q","$document"],s.$inject=["$scope","$element","$attrs","$mdComponentRegistry","$q"],n.module("material.components.sidenav",["material.core","material.components.backdrop"]).factory("$mdSidenav",o).directive("mdSidenav",i).directive("mdSidenavFocus",r).controller("$mdSidenavController",s)}(window,window.angular);
|
||||
Reference in New Issue
Block a user