Supplement other js/css files
Keep consistency with npm bower package v1.1.5 https://github.com/angular/bower-material/releases/tag/v1.1.5 Change-Id: I28f8b7f40452945f8ce322169d3f9acc99acb79a
This commit is contained in:
parent
9f6499b081
commit
13f3a8ea4b
186
xstatic/pkg/angular_material/data/angular-material-mocks.js
vendored
Executable file
186
xstatic/pkg/angular_material/data/angular-material-mocks.js
vendored
Executable file
@ -0,0 +1,186 @@
|
||||
/**
|
||||
*
|
||||
* AngularJS-Material-Mocks
|
||||
*
|
||||
* Developers interested in running their own custom unit tests WITH angular-material.js loaded...
|
||||
* must also include this *mocks* file. Similar to `angular-mocks.js`, `angular-material-mocks.js`
|
||||
* will override and disable specific AngularJS Material performance settings:
|
||||
*
|
||||
* - Disabled Theme CSS rule generations
|
||||
* - Forces $mdAria.expectWithText() to be synchronous
|
||||
* - Mocks $$rAF.throttle()
|
||||
* - Captures flush exceptions from $$rAF
|
||||
*
|
||||
*/
|
||||
(function(window, angular, undefined) {
|
||||
|
||||
'use strict';
|
||||
|
||||
// Allow our code to know when they are running inside of a test so they can expose extra services
|
||||
// that should NOT be exposed to the public but that should be tested.
|
||||
//
|
||||
// As an example, see input.js which exposes some animation-related methods.
|
||||
window._mdMocksIncluded = true;
|
||||
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name ngMaterial-mock
|
||||
* @packageName angular-material-mocks
|
||||
*
|
||||
* @description
|
||||
*
|
||||
* The `ngMaterial-mock` module provides support
|
||||
*
|
||||
*/
|
||||
angular.module('ngMaterial-mock', [
|
||||
'ngMock',
|
||||
'ngAnimateMock',
|
||||
'material.core'
|
||||
])
|
||||
.config(['$provide', function($provide) {
|
||||
|
||||
$provide.factory('$material', ['$animate', '$timeout', function($animate, $timeout) {
|
||||
return {
|
||||
flushOutstandingAnimations: function() {
|
||||
// this code is placed in a try-catch statement
|
||||
// since 1.3 and 1.4 handle their animations differently
|
||||
// and there may be situations where follow-up animations
|
||||
// are run in one version and not the other
|
||||
try { $animate.flush(); } catch(e) {}
|
||||
},
|
||||
flushInterimElement: function() {
|
||||
this.flushOutstandingAnimations();
|
||||
$timeout.flush();
|
||||
this.flushOutstandingAnimations();
|
||||
$timeout.flush();
|
||||
this.flushOutstandingAnimations();
|
||||
$timeout.flush();
|
||||
}
|
||||
};
|
||||
}]);
|
||||
|
||||
/**
|
||||
* AngularJS Material dynamically generates Style tags
|
||||
* based on themes and palletes; for each ng-app.
|
||||
*
|
||||
* For testing, we want to disable generation and
|
||||
* <style> DOM injections. So we clear the huge THEME
|
||||
* styles while testing...
|
||||
*/
|
||||
$provide.constant('$MD_THEME_CSS', '/**/');
|
||||
|
||||
/**
|
||||
* Add throttle() and wrap .flush() to catch `no callbacks present`
|
||||
* errors
|
||||
*/
|
||||
$provide.decorator('$$rAF', function throttleInjector($delegate){
|
||||
|
||||
$delegate.throttle = function(cb) {
|
||||
return function() {
|
||||
cb.apply(this, arguments);
|
||||
};
|
||||
};
|
||||
|
||||
var ngFlush = $delegate.flush;
|
||||
$delegate.flush = function() {
|
||||
try { ngFlush(); }
|
||||
catch(e) { ; }
|
||||
};
|
||||
|
||||
return $delegate;
|
||||
});
|
||||
|
||||
/**
|
||||
* Capture $timeout.flush() errors: "No deferred tasks to be flushed"
|
||||
* errors
|
||||
*/
|
||||
$provide.decorator('$timeout', function throttleInjector($delegate){
|
||||
|
||||
var ngFlush = $delegate.flush;
|
||||
$delegate.flush = function() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
try { ngFlush.apply($delegate, args); }
|
||||
catch(e) { }
|
||||
};
|
||||
|
||||
return $delegate;
|
||||
});
|
||||
|
||||
}]);
|
||||
|
||||
/**
|
||||
* Stylesheet Mocks used by `animateCss.spec.js`
|
||||
*/
|
||||
window.createMockStyleSheet = function createMockStyleSheet(doc, wind) {
|
||||
doc = doc ? doc[0] : window.document;
|
||||
wind = wind || window;
|
||||
|
||||
var node = doc.createElement('style');
|
||||
var head = doc.getElementsByTagName('head')[0];
|
||||
head.appendChild(node);
|
||||
|
||||
var ss = doc.styleSheets[doc.styleSheets.length - 1];
|
||||
|
||||
return {
|
||||
addRule: function(selector, styles) {
|
||||
styles = addVendorPrefix(styles);
|
||||
|
||||
try {
|
||||
ss.insertRule(selector + '{ ' + styles + '}', 0);
|
||||
}
|
||||
catch (e) {
|
||||
try {
|
||||
ss.addRule(selector, styles);
|
||||
}
|
||||
catch (e2) {}
|
||||
}
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
head.removeChild(node);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Decompose styles, attached specific vendor prefixes
|
||||
* and recompose...
|
||||
* e.g.
|
||||
* 'transition:0.5s linear all; font-size:100px;'
|
||||
* becomes
|
||||
* '-webkit-transition:0.5s linear all; transition:0.5s linear all; font-size:100px;'
|
||||
*/
|
||||
function addVendorPrefix(styles) {
|
||||
var cache = { };
|
||||
|
||||
// Decompose into cache registry
|
||||
styles
|
||||
.match(/([\-A-Za-z]*)\w\:\w*([A-Za-z0-9\.\-\s]*)/gi)
|
||||
.forEach(function(style){
|
||||
var pair = style.split(":");
|
||||
var key = pair[0];
|
||||
|
||||
switch(key) {
|
||||
case 'transition':
|
||||
case 'transform':
|
||||
case 'animation':
|
||||
case 'transition-duration':
|
||||
case 'animation-duration':
|
||||
cache[key] = cache['-webkit-' + key] = pair[1];
|
||||
break;
|
||||
default:
|
||||
cache[key] = pair[1];
|
||||
}
|
||||
});
|
||||
|
||||
// Recompose full style object (as string)
|
||||
styles = "";
|
||||
angular.forEach(cache, function(value, key) {
|
||||
styles = styles + key + ":" + value + "; ";
|
||||
});
|
||||
|
||||
return styles;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
})(window, window.angular);
|
18140
xstatic/pkg/angular_material/data/angular-material.css
Normal file
18140
xstatic/pkg/angular_material/data/angular-material.css
Normal file
File diff suppressed because it is too large
Load Diff
6
xstatic/pkg/angular_material/data/angular-material.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/angular-material.min.css
vendored
Executable file
File diff suppressed because one or more lines are too long
18
xstatic/pkg/angular_material/data/angular-material.min.js
vendored
Executable file
18
xstatic/pkg/angular_material/data/angular-material.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
22701
xstatic/pkg/angular_material/data/angular-material.scss
Normal file → Executable file
22701
xstatic/pkg/angular_material/data/angular-material.scss
Normal file → Executable file
File diff suppressed because it is too large
Load Diff
19057
xstatic/pkg/angular_material/data/layouts/angular-material.layout-attributes.css
Executable file
19057
xstatic/pkg/angular_material/data/layouts/angular-material.layout-attributes.css
Executable file
File diff suppressed because it is too large
Load Diff
6
xstatic/pkg/angular_material/data/layouts/angular-material.layout-attributes.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/layouts/angular-material.layout-attributes.min.css
vendored
Executable file
File diff suppressed because one or more lines are too long
@ -0,0 +1,992 @@
|
||||
$font-family: Roboto, 'Helvetica Neue', sans-serif !default;
|
||||
$font-size: 10px !default;
|
||||
$display-4-font-size-base: rem(11.20) !default;
|
||||
$display-3-font-size-base: rem(5.600) !default;
|
||||
$display-2-font-size-base: rem(4.500) !default;
|
||||
$display-1-font-size-base: rem(3.400) !default;
|
||||
$headline-font-size-base: rem(2.400) !default;
|
||||
$title-font-size-base: rem(2.000) !default;
|
||||
$subhead-font-size-base: rem(1.600) !default;
|
||||
$body-font-size-base: rem(1.400) !default;
|
||||
$caption-font-size-base: rem(1.200) !default;
|
||||
$baseline-grid: 8px !default;
|
||||
$layout-gutter-width: ($baseline-grid * 2) !default;
|
||||
$layout-breakpoint-xs: 600px !default;
|
||||
$layout-breakpoint-sm: 960px !default;
|
||||
$layout-breakpoint-md: 1280px !default;
|
||||
$layout-breakpoint-lg: 1920px !default;
|
||||
$button-left-right-padding: rem(0.600) !default;
|
||||
$icon-size: rem(2.400) !default;
|
||||
$app-bar-height: 64px !default;
|
||||
$toast-height: $baseline-grid * 3 !default;
|
||||
$toast-margin: $baseline-grid * 1 !default;
|
||||
$shadow-key-umbra-opacity: 0.2 !default;
|
||||
$shadow-key-penumbra-opacity: 0.14 !default;
|
||||
$shadow-ambient-shadow-opacity: 0.12 !default;
|
||||
$whiteframe-shadow-1dp: 0px 1px 3px 0px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 1px 1px 0px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 2px 1px -1px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-2dp: 0px 1px 5px 0px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 2px 2px 0px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 3px 1px -2px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-3dp: 0px 1px 8px 0px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 3px 4px 0px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 3px 3px -2px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-4dp: 0px 2px 4px -1px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 4px 5px 0px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 1px 10px 0px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-5dp: 0px 3px 5px -1px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 5px 8px 0px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 1px 14px 0px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-6dp: 0px 3px 5px -1px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 6px 10px 0px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 1px 18px 0px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-7dp: 0px 4px 5px -2px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 7px 10px 1px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 2px 16px 1px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-8dp: 0px 5px 5px -3px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 8px 10px 1px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 3px 14px 2px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-9dp: 0px 5px 6px -3px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 9px 12px 1px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 3px 16px 2px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-10dp: 0px 6px 6px -3px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 10px 14px 1px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 4px 18px 3px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-11dp: 0px 6px 7px -4px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 11px 15px 1px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 4px 20px 3px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-12dp: 0px 7px 8px -4px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 12px 17px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 5px 22px 4px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-13dp: 0px 7px 8px -4px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 13px 19px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 5px 24px 4px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-14dp: 0px 7px 9px -4px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 14px 21px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 5px 26px 4px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-15dp: 0px 8px 9px -5px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 15px 22px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 6px 28px 5px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-16dp: 0px 8px 10px -5px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 16px 24px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 6px 30px 5px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-17dp: 0px 8px 11px -5px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 17px 26px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 6px 32px 5px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-18dp: 0px 9px 11px -5px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 18px 28px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 7px 34px 6px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-19dp: 0px 9px 12px -6px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 19px 29px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 7px 36px 6px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-20dp: 0px 10px 13px -6px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 20px 31px 3px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 8px 38px 7px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-21dp: 0px 10px 13px -6px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 21px 33px 3px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 8px 40px 7px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-22dp: 0px 10px 14px -6px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 22px 35px 3px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 8px 42px 7px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-23dp: 0px 11px 14px -7px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 23px 36px 3px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 9px 44px 8px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$whiteframe-shadow-24dp: 0px 11px 15px -7px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 24px 38px 3px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 9px 46px 8px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
|
||||
$z-index-toast: 105 !default;
|
||||
$z-index-tooltip: 100 !default;
|
||||
$z-index-menu: 100 !default;
|
||||
$z-index-calendar-pane: 100 !default;
|
||||
$z-index-select: 90 !default;
|
||||
$z-index-dialog: 80 !default;
|
||||
$z-index-bottom-sheet: 70 !default;
|
||||
$z-index-scroll-mask: 50 !default;
|
||||
$z-index-scroll-mask-bar: 65 !default;
|
||||
$z-index-sidenav: 60 !default;
|
||||
$z-index-backdrop: 50 !default;
|
||||
$z-index-fab: 20 !default;
|
||||
$z-index-progress-circular: 2 !default; // Used to fix animation bug in Chrome
|
||||
$swift-ease-out-duration: 0.4s !default;
|
||||
$swift-ease-out-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1) !default;
|
||||
$swift-ease-out: all $swift-ease-out-duration $swift-ease-out-timing-function !default;
|
||||
$swift-ease-in-duration: 0.3s !default;
|
||||
$swift-ease-in-timing-function: cubic-bezier(0.55, 0, 0.55, 0.2) !default;
|
||||
$swift-ease-in: all $swift-ease-in-duration $swift-ease-in-timing-function !default;
|
||||
$swift-ease-in-out-duration: 0.5s !default;
|
||||
$swift-ease-in-out-timing-function: cubic-bezier(0.35, 0, 0.25, 1) !default;
|
||||
$swift-ease-in-out: all $swift-ease-in-out-duration $swift-ease-in-out-timing-function !default;
|
||||
$swift-linear-duration: 0.08s !default;
|
||||
$swift-linear-timing-function: linear !default;
|
||||
$swift-linear: all $swift-linear-duration $swift-linear-timing-function !default;
|
||||
$material-enter-duration: 0.3s;
|
||||
$material-enter-timing-function: cubic-bezier(0.0, 0.0, 0.2, 1);
|
||||
$material-enter: all $material-enter-duration $material-enter-timing-function;
|
||||
$material-leave-duration: 0.3s;
|
||||
$material-leave-timing-function: cubic-bezier(0.4, 0.0, 1, 1);
|
||||
$material-leave: all $material-leave-duration $material-leave-timing-function;
|
||||
$button-fab-width: rem(5.600) !default;
|
||||
$button-fab-height: rem(5.600) !default;
|
||||
$button-fab-padding: rem(1.60) !default;
|
||||
$checkbox-width: 20px !default;
|
||||
$checkbox-height: $checkbox-width !default;
|
||||
$checkbox-border-radius: 2px !default;
|
||||
$checkbox-border-width: 2px !default;
|
||||
$baseline-grid: 8px !default;
|
||||
$layout-gutter-width: ($baseline-grid * 2) !default;
|
||||
$layout-breakpoint-xs: 600px !default;
|
||||
$layout-breakpoint-sm: 960px !default;
|
||||
$layout-breakpoint-md: 1280px !default;
|
||||
$layout-breakpoint-lg: 1920px !default;
|
||||
// Typography
|
||||
// ------------------------------
|
||||
|
||||
//-- Must be defined before $font-size.
|
||||
@function rem($multiplier) {
|
||||
@return $multiplier * $font-size;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Layout
|
||||
// ------------------------------
|
||||
|
||||
|
||||
|
||||
// Button
|
||||
|
||||
// Icon
|
||||
|
||||
// App bar variables
|
||||
|
||||
|
||||
// Whiteframes
|
||||
|
||||
|
||||
// NOTE(shyndman): gulp-sass seems to be failing if I split the shadow defs across
|
||||
// multiple lines. Ugly. Sorry.
|
||||
|
||||
// Z-indexes
|
||||
//--------------------------------------------
|
||||
|
||||
|
||||
// Easing Curves
|
||||
//--------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Fab Buttons (shared between buttons.scss and fab*.scss)
|
||||
// -------------------------------------------
|
||||
|
||||
|
||||
// Shared Checkbox variables
|
||||
|
||||
@mixin margin-selectors($before:1em, $after:1em, $start:0px, $end:0px) {
|
||||
-webkit-margin-before: $before;
|
||||
-webkit-margin-after: $after;
|
||||
-webkit-margin-start: $start;
|
||||
-webkit-margin-end: $end;
|
||||
}
|
||||
|
||||
@mixin not-selectable($value:none) {
|
||||
-webkit-touch-callout: $value;
|
||||
-webkit-user-select: $value;
|
||||
-khtml-user-select: $value;
|
||||
-moz-user-select: $value;
|
||||
-ms-user-select: $value;
|
||||
user-select: $value;
|
||||
}
|
||||
|
||||
@mixin input-placeholder-color($color) {
|
||||
$pseudos: '::-webkit-input-placeholder', ':-moz-placeholder', '::-moz-placeholder',
|
||||
':-ms-input-placeholder', '::-webkit-input-placeholder';
|
||||
|
||||
// It is important to export every pseudo within its own block, because otherwise the placeholder
|
||||
// won't be set on the most browsers.
|
||||
@each $pseudo in $pseudos {
|
||||
&#{$pseudo} {
|
||||
color: unquote($color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin pie-clearfix {
|
||||
&:after {
|
||||
content: '';
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin md-shadow-bottom-z-1() {
|
||||
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
|
||||
}
|
||||
|
||||
@mixin md-shadow-bottom-z-2() {
|
||||
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
// Mixin for a "flat" input that can be used for components that contain an input
|
||||
// (datepicker, autocomplete).
|
||||
@mixin md-flat-input() {
|
||||
font-size: 14px;
|
||||
|
||||
box-sizing: border-box;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
|
||||
// The "clear X" that IE adds to input[type="search"]
|
||||
&::-ms-clear {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Typography mixins
|
||||
|
||||
@mixin md-title() {
|
||||
font-size: $title-font-size-base;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.005em;
|
||||
}
|
||||
|
||||
@mixin md-body-1() {
|
||||
font-size: $body-font-size-base;
|
||||
font-weight: 400;
|
||||
letter-spacing: 0.010em;
|
||||
line-height: rem(2);
|
||||
}
|
||||
|
||||
@mixin md-body-2() {
|
||||
font-size: $body-font-size-base;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.010em;
|
||||
line-height: rem(2.4);
|
||||
}
|
||||
|
||||
@mixin md-subhead() {
|
||||
font-size: $subhead-font-size-base;
|
||||
font-weight: 400;
|
||||
letter-spacing: 0.010em;
|
||||
line-height: rem(2.4);
|
||||
}
|
||||
|
||||
@function map-to-string($map) {
|
||||
$map-str: '{';
|
||||
$keys: map-keys($map);
|
||||
$len: length($keys);
|
||||
@for $i from 1 through $len {
|
||||
$key: nth($keys, $i);
|
||||
$value: map-get($map, $key);
|
||||
$map-str: $map-str + '_' + $key + '_: _' + map-get($map, $key) + '_';
|
||||
@if $i != $len {
|
||||
$map-str: $map-str + ',';
|
||||
}
|
||||
}
|
||||
@return $map-str + '}';
|
||||
}
|
||||
|
||||
// This is a mixin, which fixes IE11's vertical alignment issue, when using `min-height`.
|
||||
// See https://connect.microsoft.com/IE/feedback/details/816293/
|
||||
@mixin ie11-min-height-flexbug($min-height) {
|
||||
&::before {
|
||||
content: '';
|
||||
min-height: $min-height;
|
||||
visibility: hidden;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
// mixin definition ; sets LTR and RTL within the same style call
|
||||
// @see https://css-tricks.com/almanac/properties/d/direction/
|
||||
|
||||
@mixin rtl($prop, $ltr-value, $rtl-value) {
|
||||
#{$prop}: $ltr-value;
|
||||
[dir=rtl] & {
|
||||
#{$prop}: $rtl-value;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin rtl-prop($ltr-prop, $rtl-prop, $value, $reset-value) {
|
||||
#{$ltr-prop}: $value;
|
||||
[dir=rtl] & {
|
||||
#{$ltr-prop}: $reset-value;
|
||||
#{$rtl-prop}: $value;
|
||||
}
|
||||
}
|
||||
|
||||
// To reverse padding (top left bottom right) -> (top right bottom left)
|
||||
@function rtl-value($list) {
|
||||
@if length($list) == 4 {
|
||||
@return nth($list, 1) nth($list, 4) nth($list, 3) nth($list, 2)
|
||||
}
|
||||
@if length($list) == 5 {
|
||||
@return nth($list, 1) nth($list, 4) nth($list, 3) nth($list, 2) nth($list, 5)
|
||||
}
|
||||
@return $list;
|
||||
}
|
||||
|
||||
// Position a FAB button.
|
||||
@mixin fab-position($spot, $top: auto, $right: auto, $bottom: auto, $left: auto) {
|
||||
&.md-fab-#{$spot} {
|
||||
top: $top;
|
||||
right: $right;
|
||||
bottom: $bottom;
|
||||
left: $left;
|
||||
position: absolute;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin fab-all-positions() {
|
||||
@include fab-position(bottom-right, auto, ($button-fab-width - $button-fab-padding)/2, ($button-fab-height - $button-fab-padding)/2, auto);
|
||||
@include fab-position(bottom-left, auto, auto, ($button-fab-height - $button-fab-padding)/2, ($button-fab-width - $button-fab-padding)/2);
|
||||
@include fab-position(top-right, ($button-fab-height - $button-fab-padding)/2, ($button-fab-width - $button-fab-padding)/2, auto, auto);
|
||||
@include fab-position(top-left, ($button-fab-height - $button-fab-padding)/2, auto, auto, ($button-fab-width - $button-fab-padding)/2);
|
||||
}
|
||||
|
||||
// This mixin allows a user to use the md-checkbox css outside of the
|
||||
// md-checkbox directive.
|
||||
// See src/components/select/select.scss for an example.
|
||||
@mixin checkbox-container(
|
||||
$checkedSelector: '.md-checked',
|
||||
$width: $checkbox-width,
|
||||
$height: $checkbox-height,
|
||||
$border-width: $checkbox-border-width,
|
||||
$border-radius: $checkbox-border-radius) {
|
||||
.md-container {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
|
||||
box-sizing: border-box;
|
||||
display: inline-block;
|
||||
|
||||
width: $width;
|
||||
height: $height;
|
||||
@include rtl(left, 0, auto);
|
||||
@include rtl(right, auto, 0);
|
||||
|
||||
&:before {
|
||||
box-sizing: border-box;
|
||||
background-color: transparent;
|
||||
border-radius: 50%;
|
||||
content: '';
|
||||
position: absolute;
|
||||
display: block;
|
||||
height: auto;
|
||||
left: 0;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
transition: all 0.5s;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
&:after {
|
||||
box-sizing: border-box;
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: -10px;
|
||||
right: -10px;
|
||||
bottom: -10px;
|
||||
left: -10px;
|
||||
}
|
||||
|
||||
.md-ripple-container {
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: auto;
|
||||
height: auto;
|
||||
left: -15px;
|
||||
top: -15px;
|
||||
right: -15px;
|
||||
bottom: -15px;
|
||||
}
|
||||
}
|
||||
|
||||
// unchecked
|
||||
.md-icon {
|
||||
box-sizing: border-box;
|
||||
transition: 240ms;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: $width;
|
||||
height: $height;
|
||||
border-width: $border-width;
|
||||
border-style: solid;
|
||||
border-radius: $border-radius;
|
||||
}
|
||||
|
||||
&#{$checkedSelector} .md-icon {
|
||||
border-color: transparent;
|
||||
|
||||
&:after {
|
||||
box-sizing: border-box;
|
||||
transform: rotate(45deg);
|
||||
position: absolute;
|
||||
left: $width / 3 - $border-width;
|
||||
top: $width / 9 - $border-width;
|
||||
display: table;
|
||||
width: $width / 3;
|
||||
height: $width * 2 / 3;
|
||||
border-width: $border-width;
|
||||
border-style: solid;
|
||||
border-top: 0;
|
||||
border-left: 0;
|
||||
content: '';
|
||||
}
|
||||
}
|
||||
|
||||
// disabled
|
||||
&[disabled] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
&.md-indeterminate .md-icon {
|
||||
&:after {
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
display: table;
|
||||
width: $width * 0.6;
|
||||
height: $border-width;
|
||||
border-width: $border-width;
|
||||
border-style: solid;
|
||||
border-top: 0;
|
||||
border-left: 0;
|
||||
content: '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Mixin to create a primary checkbox.
|
||||
// Used by the checkbox and select component.
|
||||
@mixin checkbox-primary($checkedSelector: '.md-checked') {
|
||||
.md-ripple {
|
||||
color: '{{primary-600}}';
|
||||
}
|
||||
|
||||
&#{$checkedSelector} .md-ripple {
|
||||
color: '{{background-600}}';
|
||||
}
|
||||
|
||||
.md-ink-ripple {
|
||||
color: '{{foreground-2}}';
|
||||
}
|
||||
|
||||
&#{$checkedSelector} .md-ink-ripple {
|
||||
color: '{{primary-color-0.87}}';
|
||||
}
|
||||
|
||||
&:not(.md-checked) .md-icon {
|
||||
border-color: '{{foreground-2}}';
|
||||
}
|
||||
|
||||
&#{$checkedSelector} .md-icon {
|
||||
background-color: '{{primary-color-0.87}}';
|
||||
}
|
||||
|
||||
&#{$checkedSelector}.md-focused .md-container:before {
|
||||
background-color: '{{primary-color-0.26}}';
|
||||
}
|
||||
|
||||
&#{$checkedSelector} .md-icon:after {
|
||||
border-color: '{{primary-contrast-0.87}}';
|
||||
}
|
||||
|
||||
& .md-indeterminate[disabled] {
|
||||
.md-container {
|
||||
color: '{{foreground-3}}';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin dense($prop, $normal, $dense) {
|
||||
#{$prop}: $normal;
|
||||
.md-dense > &:not(.md-dense-disabled),
|
||||
.md-dense :not(.md-dense-disabled) &:not(.md-dense-disabled) {
|
||||
#{$prop}: $dense;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin dense-rtl($prop, $ltr-normal, $rtl-normal, $ltr-dense, $rtl-dense) {
|
||||
@include rtl($prop, $ltr-normal, $rtl-normal);
|
||||
.md-dense > &:not(.md-dense-disabled),
|
||||
.md-dense :not(.md-dense-disabled) &:not(.md-dense-disabled) {
|
||||
@include rtl($prop, $ltr-dense, $rtl-dense);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
* Responsive attributes
|
||||
*
|
||||
* References:
|
||||
* 1) https://scotch.io/tutorials/a-visual-guide-to-css3-flexbox-properties#flex
|
||||
* 2) https://css-tricks.com/almanac/properties/f/flex/
|
||||
* 3) https://css-tricks.com/snippets/css/a-guide-to-flexbox/
|
||||
* 4) https://github.com/philipwalton/flexbugs#3-min-height-on-a-flex-container-wont-apply-to-its-flex-items
|
||||
* 5) http://godban.com.ua/projects/flexgrid
|
||||
*
|
||||
*/
|
||||
|
||||
// Layout
|
||||
// ------------------------------
|
||||
|
||||
|
||||
|
||||
@-moz-document url-prefix() {
|
||||
[layout-fill] {
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
min-height: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@mixin flex-order-for-name($sizes:null) {
|
||||
@if $sizes == null {
|
||||
$sizes : '';
|
||||
|
||||
[flex-order] {
|
||||
order : 0;
|
||||
}
|
||||
}
|
||||
|
||||
@for $i from -20 through 20 {
|
||||
$order : '';
|
||||
$suffix : '';
|
||||
|
||||
@each $s in $sizes {
|
||||
@if $s != '' { $suffix : '-#{$s}="#{$i}"'; }
|
||||
@else { $suffix : '="#{$i}"'; }
|
||||
|
||||
$order : '[flex-order#{$suffix}]';
|
||||
}
|
||||
|
||||
#{$order} {
|
||||
order: #{$i};
|
||||
}
|
||||
}
|
||||
}
|
||||
@mixin offset-for-name($sizes:null) {
|
||||
@if $sizes == null { $sizes : ''; }
|
||||
|
||||
@for $i from 0 through 19 {
|
||||
$offsets : '';
|
||||
$suffix : '';
|
||||
|
||||
@each $s in $sizes {
|
||||
@if $s != '' { $suffix : '-#{$s}="#{$i * 5}"'; }
|
||||
@else { $suffix : '="#{$i * 5}"'; }
|
||||
|
||||
$offsets : $offsets + '[flex-offset#{$suffix}], ';
|
||||
}
|
||||
|
||||
#{$offsets} {
|
||||
margin-left: #{$i * 5 + '%'};
|
||||
}
|
||||
}
|
||||
|
||||
@each $i in 33 {
|
||||
$offsets : '';
|
||||
$suffix : '';
|
||||
|
||||
@each $s in $sizes {
|
||||
@if $s != '' { $suffix : '-#{$s}="#{$i}"'; }
|
||||
@else { $suffix : '="#{$i}"'; }
|
||||
|
||||
$offsets : '[flex-offset#{$suffix}], ';
|
||||
}
|
||||
|
||||
#{$offsets} {
|
||||
margin-left: calc(100% / 3);
|
||||
}
|
||||
}
|
||||
|
||||
@each $i in 66 {
|
||||
$offsets : '';
|
||||
$suffix : '';
|
||||
|
||||
@each $s in $sizes {
|
||||
@if $s != '' { $suffix : '-#{$s}="#{$i}"'; }
|
||||
@else { $suffix : '="#{$i}"'; }
|
||||
|
||||
$offsets : '[flex-offset#{$suffix}]';
|
||||
}
|
||||
|
||||
#{$offsets} {
|
||||
margin-left: calc(200% / 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin layout-for-name($name: null) {
|
||||
@if $name == null { $name : ''; }
|
||||
@if $name != '' { $name : '-#{$name}'; }
|
||||
|
||||
[layout#{$name}], [layout#{$name}="column"], [layout#{$name}="row"] {
|
||||
box-sizing: border-box;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -moz-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
}
|
||||
[layout#{$name}="column"] { flex-direction: column; }
|
||||
[layout#{$name}="row"] { flex-direction: row; }
|
||||
}
|
||||
|
||||
@mixin flex-properties-for-name($name: null) {
|
||||
$flexName: 'flex';
|
||||
@if $name != null {
|
||||
$flexName: 'flex-#{$name}';
|
||||
$name : '-#{$name}';
|
||||
} @else {
|
||||
$name : '';
|
||||
}
|
||||
|
||||
[#{$flexName}] { flex: 1; box-sizing: border-box; } // === flex: 1 1 0%;
|
||||
|
||||
[#{$flexName}-grow] { flex: 1 1 100%; box-sizing: border-box; }
|
||||
[#{$flexName}-initial] { flex: 0 1 auto; box-sizing: border-box; }
|
||||
[#{$flexName}-auto] { flex: 1 1 auto; box-sizing: border-box; }
|
||||
[#{$flexName}-none] { flex: 0 0 auto; box-sizing: border-box; }
|
||||
|
||||
// (1-20) * 5 = 0-100%
|
||||
@for $i from 0 through 20 {
|
||||
$value : #{$i * 5 + '%'};
|
||||
|
||||
[#{$flexName}="#{$i * 5}"] {
|
||||
flex: 1 1 #{$value};
|
||||
max-width: #{$value};
|
||||
max-height: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
[layout="row"] > [#{$flexName}="#{$i * 5}"] {
|
||||
flex: 1 1 #{$value};
|
||||
max-width: #{$value};
|
||||
max-height: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
[layout="column"] > [#{$flexName}="#{$i * 5}"] {
|
||||
flex: 1 1 #{$value};
|
||||
max-width: 100%;
|
||||
max-height: #{$value};
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
[layout="row"] {
|
||||
> [#{$flexName}="33"] , > [#{$flexName}="33"] { flex: 1 1 33.33%; max-width: 33.33%; max-height: 100%; box-sizing: border-box; }
|
||||
> [#{$flexName}="66"] , > [#{$flexName}="66"] { flex: 1 1 66.66%; max-width: 66.66%; max-height: 100%; box-sizing: border-box; }
|
||||
}
|
||||
|
||||
[layout="column"] {
|
||||
> [#{$flexName}="33"] , > [#{$flexName}="33"] { flex: 1 1 33.33%; max-width: 100%; max-height: 33.33%; box-sizing: border-box; }
|
||||
> [#{$flexName}="66"] , > [#{$flexName}="66"] { flex: 1 1 66.66%; max-width: 100%; max-height: 66.66%; box-sizing: border-box; }
|
||||
}
|
||||
|
||||
[layout#{$name}="row"] > [#{$flexName}="#{$i * 5}"] {
|
||||
flex: 1 1 #{$value};
|
||||
max-width: #{$value};
|
||||
max-height: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
[layout#{$name}="column"] > [#{$flexName}="#{$i * 5}"] {
|
||||
flex: 1 1 #{$value};
|
||||
max-width: 100%;
|
||||
max-height: #{$value};
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
|
||||
[layout#{$name}="row"] {
|
||||
> [#{$flexName}="33"] , > [#{$flexName}="33"] { flex: 1 1 33.33%; max-width: 33.33%; max-height: 100%; box-sizing: border-box; }
|
||||
> [#{$flexName}="66"] , > [#{$flexName}="66"] { flex: 1 1 66.66%; max-width: 66.66%; max-height: 100%; box-sizing: border-box; }
|
||||
}
|
||||
|
||||
[layout#{$name}="column"] {
|
||||
> [#{$flexName}="33"] , > [#{$flexName}="33"] { flex: 1 1 33.33%; max-width: 100%; max-height: 33.33%; box-sizing: border-box; }
|
||||
> [#{$flexName}="66"] , > [#{$flexName}="66"] { flex: 1 1 66.66%; max-width: 100%; max-height: 66.66%; box-sizing: border-box; }
|
||||
}
|
||||
|
||||
}
|
||||
@mixin layout-align-for-name($suffix: null) {
|
||||
|
||||
// Alignment attributes for layout containers' children
|
||||
// Arrange on the Main Axis
|
||||
// center, start, end, space-between, space-around
|
||||
// flex-start is the default for justify-content
|
||||
// ------------------------------
|
||||
|
||||
$name: 'layout-align';
|
||||
@if $suffix != null {
|
||||
$name: 'layout-align-#{$suffix}';
|
||||
}
|
||||
|
||||
[#{$name}],
|
||||
[#{$name}="start stretch"] // defaults
|
||||
{
|
||||
justify-content :flex-start;
|
||||
align-content : stretch;
|
||||
align-items: stretch;
|
||||
}
|
||||
// Main Axis Center
|
||||
[#{$name}="start"],
|
||||
[#{$name}="start start"],
|
||||
[#{$name}="start center"],
|
||||
[#{$name}="start end"],
|
||||
[#{$name}="start stretch"]
|
||||
{
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
// Main Axis Center
|
||||
[#{$name}="center"],
|
||||
[#{$name}="center start"],
|
||||
[#{$name}="center center"],
|
||||
[#{$name}="center end"],
|
||||
[#{$name}="center stretch"]
|
||||
{
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
// Main Axis End
|
||||
[#{$name}="end"], //stretch
|
||||
[#{$name}="end center"],
|
||||
[#{$name}="end start"],
|
||||
[#{$name}="end end"],
|
||||
[#{$name}="end stretch"]
|
||||
{
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
// Main Axis Space Around
|
||||
[#{$name}="space-around"], //stretch
|
||||
[#{$name}="space-around center"],
|
||||
[#{$name}="space-around start"],
|
||||
[#{$name}="space-around end"],
|
||||
[#{$name}="space-around stretch"]
|
||||
{
|
||||
justify-content: space-around;
|
||||
}
|
||||
|
||||
// Main Axis Space Between
|
||||
[#{$name}="space-between"], //stretch
|
||||
[#{$name}="space-between center"],
|
||||
[#{$name}="space-between start"],
|
||||
[#{$name}="space-between end"],
|
||||
[#{$name}="space-between stretch"]
|
||||
{
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
|
||||
// Arrange on the Cross Axis
|
||||
// center, start, end
|
||||
// stretch is the default for align-items
|
||||
// ------------------------------
|
||||
|
||||
// Cross Axis Start
|
||||
[#{$name}="start start"],
|
||||
[#{$name}="center start"],
|
||||
[#{$name}="end start"],
|
||||
[#{$name}="space-between start"],
|
||||
[#{$name}="space-around start"]
|
||||
{
|
||||
align-items: flex-start;
|
||||
align-content: flex-start;
|
||||
}
|
||||
|
||||
// Cross Axis Center
|
||||
[#{$name}="start center"],
|
||||
[#{$name}="center center"],
|
||||
[#{$name}="end center"],
|
||||
[#{$name}="space-between center"],
|
||||
[#{$name}="space-around center"]
|
||||
{
|
||||
align-items: center;
|
||||
align-content: center;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
// Cross Axis Center IE overflow fix
|
||||
[#{$name}="start center"] > *,
|
||||
[#{$name}="center center"] > *,
|
||||
[#{$name}="end center"] > *,
|
||||
[#{$name}="space-between center"] > *,
|
||||
[#{$name}="space-around center"] > *
|
||||
{
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
// Cross Axis End
|
||||
[#{$name}="start end"],
|
||||
[#{$name}="center end"],
|
||||
[#{$name}="end end"],
|
||||
[#{$name}="space-between end"],
|
||||
[#{$name}="space-around end"]
|
||||
{
|
||||
align-items: flex-end;
|
||||
align-content: flex-end;
|
||||
}
|
||||
|
||||
// Cross Axis stretch
|
||||
[#{$name}="start stretch"],
|
||||
[#{$name}="center stretch"],
|
||||
[#{$name}="end stretch"],
|
||||
[#{$name}="space-between stretch"],
|
||||
[#{$name}="space-around stretch"]
|
||||
{
|
||||
align-items: stretch;
|
||||
align-content: stretch;
|
||||
}
|
||||
}
|
||||
@mixin layout-padding-margin() {
|
||||
|
||||
[layout-padding] > [flex-sm], [layout-padding] > [flex-lt-md] {
|
||||
padding: $layout-gutter-width / 4;
|
||||
}
|
||||
[layout-padding],
|
||||
[layout-padding] > [flex],
|
||||
[layout-padding] > [flex-gt-sm],
|
||||
[layout-padding] > [flex-md],
|
||||
[layout-padding] > [flex-lt-lg]
|
||||
{
|
||||
padding: $layout-gutter-width / 2;
|
||||
}
|
||||
[layout-padding] > [flex-gt-md],
|
||||
[layout-padding] > [flex-lg]
|
||||
{
|
||||
padding: $layout-gutter-width / 1;
|
||||
}
|
||||
|
||||
[layout-margin] > [flex-sm],
|
||||
[layout-margin] > [flex-lt-md]
|
||||
{
|
||||
margin: $layout-gutter-width / 4;
|
||||
}
|
||||
|
||||
[layout-margin],
|
||||
[layout-margin] > [flex],
|
||||
[layout-margin] > [flex-gt-sm],
|
||||
[layout-margin] > [flex-md],
|
||||
[layout-margin] > [flex-lt-lg]
|
||||
{
|
||||
margin: $layout-gutter-width / 2;
|
||||
}
|
||||
|
||||
[layout-margin] > [flex-gt-md],
|
||||
[layout-margin] > [flex-lg]
|
||||
{
|
||||
margin: $layout-gutter-width / 1;
|
||||
}
|
||||
|
||||
[layout-wrap] {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
[layout-nowrap] {
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
|
||||
[layout-fill] {
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
min-height: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin layouts_for_breakpoint($name:null) {
|
||||
@include flex-order-for-name($name);
|
||||
@include offset-for-name($name);
|
||||
@include layout-align-for-name($name);
|
||||
|
||||
@include flex-properties-for-name($name);
|
||||
@include layout-for-name($name);
|
||||
}
|
||||
|
||||
/*
|
||||
* Apply Mixins to create Layout/Flexbox styles
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@include layouts_for_breakpoint();
|
||||
@include layout-padding-margin();
|
||||
|
||||
|
||||
/**
|
||||
* `hide-gt-sm show-gt-lg` should hide from 600px to 1200px
|
||||
* `show-md hide-gt-sm` should show from 0px to 960px and hide at >960px
|
||||
* `hide-gt-md show-gt-sm` should show everywhere (show overrides hide)`
|
||||
*
|
||||
* hide means hide everywhere
|
||||
* Sizes:
|
||||
* $layout-breakpoint-xs: 600px !default;
|
||||
* $layout-breakpoint-sm: 960px !default;
|
||||
* $layout-breakpoint-md: 1280px !default;
|
||||
* $layout-breakpoint-lg: 1920px !default;
|
||||
*/
|
||||
|
||||
|
||||
@media (max-width: $layout-breakpoint-xs - 1) {
|
||||
// Xtra-SMALL SCREEN
|
||||
[hide-xs], [hide] {
|
||||
&:not([show-xs]):not([show]) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@include layouts_for_breakpoint(xs);
|
||||
}
|
||||
|
||||
@media (min-width: $layout-breakpoint-xs) {
|
||||
// BIGGER THAN Xtra-SMALL SCREEN
|
||||
@include layouts_for_breakpoint(gt-xs);
|
||||
|
||||
}
|
||||
|
||||
@media (min-width: $layout-breakpoint-xs) and (max-width: $layout-breakpoint-sm - 1) {
|
||||
// SMALL SCREEN
|
||||
[hide], [hide-gt-xs] {
|
||||
&:not([show-gt-xs]):not([show-sm]):not([show]) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
[hide-sm]:not([show-gt-xs]):not([show-sm]):not([show]) {
|
||||
display: none;
|
||||
}
|
||||
@include layouts_for_breakpoint(sm);
|
||||
}
|
||||
|
||||
@media (min-width: $layout-breakpoint-sm) {
|
||||
// BIGGER THAN SMALL SCREEN
|
||||
@include layouts_for_breakpoint(gt-sm);
|
||||
|
||||
}
|
||||
|
||||
@media (min-width: $layout-breakpoint-sm) and (max-width: $layout-breakpoint-md - 1) {
|
||||
// MEDIUM SCREEN
|
||||
[hide], [hide-gt-xs], [hide-gt-sm] {
|
||||
&:not([show-gt-xs]):not([show-gt-sm]):not([show-md]):not([show]) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
[hide-md]:not([show-md]):not([show]) {
|
||||
display: none;
|
||||
}
|
||||
@include layouts_for_breakpoint(md);
|
||||
}
|
||||
|
||||
@media (min-width: $layout-breakpoint-md) {
|
||||
// BIGGER THAN MEDIUM SCREEN
|
||||
@include layouts_for_breakpoint(gt-md);
|
||||
}
|
||||
|
||||
@media (min-width: $layout-breakpoint-md) and (max-width: $layout-breakpoint-lg - 1) {
|
||||
// LARGE SCREEN
|
||||
[hide],[hide-gt-xs], [hide-gt-sm], [hide-gt-md] {
|
||||
&:not([show-gt-xs]):not([show-gt-sm]):not([show-gt-md]):not([show-lg]):not([show]) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
[hide-lg]:not([show-lg]):not([show]) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@include layouts_for_breakpoint(lg);
|
||||
}
|
||||
|
||||
@media (min-width: $layout-breakpoint-lg) {
|
||||
// BIGGER THAN LARGE SCREEN
|
||||
@include layouts_for_breakpoint(gt-lg);
|
||||
@include layouts_for_breakpoint(xl);
|
||||
|
||||
// BIGGER THAN LARGE SCREEN
|
||||
[hide], [hide-gt-xs], [hide-gt-sm], [hide-gt-md], [hide-gt-lg] {
|
||||
&:not([show-gt-xs]):not([show-gt-sm]):not([show-gt-md]):not([show-gt-lg]):not([show-xl]):not([show]) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
[hide-xl]:not([show-xl]):not([show-gt-lg]):not([show]) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media print {
|
||||
// PRINT
|
||||
@include layouts_for_breakpoint(print);
|
||||
|
||||
[hide-print]:not([show-print]):not([show]) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
12524
xstatic/pkg/angular_material/data/layouts/angular-material.layouts.css
Executable file
12524
xstatic/pkg/angular_material/data/layouts/angular-material.layouts.css
Executable file
File diff suppressed because it is too large
Load Diff
104
xstatic/pkg/angular_material/data/layouts/angular-material.layouts.ie_fixes.css
Executable file
104
xstatic/pkg/angular_material/data/layouts/angular-material.layouts.ie_fixes.css
Executable file
@ -0,0 +1,104 @@
|
||||
/* IE mediaQuery hack for 8,9,10 to set the flex-basis properly for 'flex' values */
|
||||
/* Details: */
|
||||
/* Do not use unitless flex-basis values in the flex shorthand because IE 10-11 will error. */
|
||||
/* Also use 0% instead of 0px since minifiers will often convert 0px to 0 (which is unitless and will have the same problem). */
|
||||
/* Safari, however, fails with flex-basis : 0% and requires flex-basis : 0px */
|
||||
|
||||
@media screen\0 {
|
||||
.flex {
|
||||
-webkit-flex: 1 1 0%;
|
||||
-ms-flex: 1 1 0%;
|
||||
flex: 1 1 0%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen\0 {
|
||||
.flex {
|
||||
-webkit-flex: 1 1 0%;
|
||||
-ms-flex: 1 1 0%;
|
||||
flex: 1 1 0%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen\0
|
||||
and (max-width: 599px) {
|
||||
.flex-xs {
|
||||
-webkit-flex: 1 1 0%;
|
||||
-ms-flex: 1 1 0%;
|
||||
flex: 1 1 0%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen\0
|
||||
and (min-width: 600px) {
|
||||
.flex-gt-xs {
|
||||
-webkit-flex: 1 1 0%;
|
||||
-ms-flex: 1 1 0%;
|
||||
flex: 1 1 0%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen\0
|
||||
and (min-width: 600px) and (max-width: 959px) {
|
||||
.flex-sm {
|
||||
-webkit-flex: 1 1 0%;
|
||||
-ms-flex: 1 1 0%;
|
||||
flex: 1 1 0%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen\0
|
||||
and (min-width: 960px) {
|
||||
.flex-gt-sm {
|
||||
-webkit-flex: 1 1 0%;
|
||||
-ms-flex: 1 1 0%;
|
||||
flex: 1 1 0%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen\0
|
||||
and (min-width: 960px) and (max-width: 1279px) {
|
||||
.flex-md {
|
||||
-webkit-flex: 1 1 0%;
|
||||
-ms-flex: 1 1 0%;
|
||||
flex: 1 1 0%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen\0
|
||||
and (min-width: 1280px) {
|
||||
.flex-gt-md {
|
||||
-webkit-flex: 1 1 0%;
|
||||
-ms-flex: 1 1 0%;
|
||||
flex: 1 1 0%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen\0
|
||||
and (min-width: 1280px) and (max-width: 1919px) {
|
||||
.flex-lg {
|
||||
-webkit-flex: 1 1 0%;
|
||||
-ms-flex: 1 1 0%;
|
||||
flex: 1 1 0%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen\0
|
||||
and (min-width: 1920px) {
|
||||
.flex-gt-lg {
|
||||
-webkit-flex: 1 1 0%;
|
||||
-ms-flex: 1 1 0%;
|
||||
flex: 1 1 0%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen\0
|
||||
and (min-width: 1920px) {
|
||||
.flex-xl {
|
||||
-webkit-flex: 1 1 0%;
|
||||
-ms-flex: 1 1 0%;
|
||||
flex: 1 1 0%;
|
||||
}
|
||||
}
|
||||
|
||||
|
6
xstatic/pkg/angular_material/data/layouts/angular-material.layouts.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/layouts/angular-material.layouts.min.css
vendored
Executable file
File diff suppressed because one or more lines are too long
1065
xstatic/pkg/angular_material/data/layouts/angular-material.layouts.scss
Executable file
1065
xstatic/pkg/angular_material/data/layouts/angular-material.layouts.scss
Executable file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,23 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-autocomplete.md-THEME_NAME-theme {
|
||||
background: '{{background-A100}}'; }
|
||||
md-autocomplete.md-THEME_NAME-theme[disabled]:not([md-floating-label]) {
|
||||
background: '{{background-100}}'; }
|
||||
md-autocomplete.md-THEME_NAME-theme button md-icon path {
|
||||
fill: '{{background-600}}'; }
|
||||
md-autocomplete.md-THEME_NAME-theme button:after {
|
||||
background: '{{background-600-0.3}}'; }
|
||||
|
||||
.md-autocomplete-suggestions-container.md-THEME_NAME-theme {
|
||||
background: '{{background-A100}}'; }
|
||||
.md-autocomplete-suggestions-container.md-THEME_NAME-theme li {
|
||||
color: '{{background-900}}'; }
|
||||
.md-autocomplete-suggestions-container.md-THEME_NAME-theme li .highlight {
|
||||
color: '{{background-600}}'; }
|
||||
.md-autocomplete-suggestions-container.md-THEME_NAME-theme li:hover, .md-autocomplete-suggestions-container.md-THEME_NAME-theme li.selected {
|
||||
background: '{{background-200}}'; }
|
6
xstatic/pkg/angular_material/data/modules/closure/autocomplete/autocomplete-default-theme.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/autocomplete/autocomplete-default-theme.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-autocomplete.md-THEME_NAME-theme{background:"{{background-A100}}"}md-autocomplete.md-THEME_NAME-theme[disabled]:not([md-floating-label]){background:"{{background-100}}"}md-autocomplete.md-THEME_NAME-theme button md-icon path{fill:"{{background-600}}"}md-autocomplete.md-THEME_NAME-theme button:after{background:"{{background-600-0.3}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme{background:"{{background-A100}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme li{color:"{{background-900}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme li .highlight{color:"{{background-600}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme li.selected,.md-autocomplete-suggestions-container.md-THEME_NAME-theme li:hover{background:"{{background-200}}"}
|
196
xstatic/pkg/angular_material/data/modules/closure/autocomplete/autocomplete.css
Executable file
196
xstatic/pkg/angular_material/data/modules/closure/autocomplete/autocomplete.css
Executable file
@ -0,0 +1,196 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-autocomplete {
|
||||
border-radius: 2px;
|
||||
display: block;
|
||||
height: 40px;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
min-width: 190px; }
|
||||
md-autocomplete[disabled] input {
|
||||
cursor: default; }
|
||||
md-autocomplete[md-floating-label] {
|
||||
border-radius: 0;
|
||||
background: transparent;
|
||||
height: auto; }
|
||||
md-autocomplete[md-floating-label] md-input-container {
|
||||
padding-bottom: 0; }
|
||||
md-autocomplete[md-floating-label] md-autocomplete-wrap {
|
||||
height: auto; }
|
||||
md-autocomplete[md-floating-label] .md-show-clear-button button {
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 20px;
|
||||
width: 30px;
|
||||
height: 30px; }
|
||||
md-autocomplete[md-floating-label] .md-show-clear-button input {
|
||||
padding-right: 30px; }
|
||||
[dir=rtl] md-autocomplete[md-floating-label] .md-show-clear-button input {
|
||||
padding-right: 0;
|
||||
padding-left: 30px; }
|
||||
md-autocomplete md-autocomplete-wrap {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: row;
|
||||
flex-direction: row;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
height: 40px; }
|
||||
md-autocomplete md-autocomplete-wrap.md-menu-showing {
|
||||
z-index: 51; }
|
||||
md-autocomplete md-autocomplete-wrap md-input-container, md-autocomplete md-autocomplete-wrap input {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1 1 0%;
|
||||
flex: 1 1 0%;
|
||||
box-sizing: border-box;
|
||||
min-width: 0; }
|
||||
md-autocomplete md-autocomplete-wrap md-progress-linear {
|
||||
position: absolute;
|
||||
bottom: -2px;
|
||||
left: 0; }
|
||||
md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline {
|
||||
bottom: 40px;
|
||||
right: 2px;
|
||||
left: 2px;
|
||||
width: auto; }
|
||||
md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 3px;
|
||||
-webkit-transition: none;
|
||||
transition: none; }
|
||||
md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container {
|
||||
-webkit-transition: none;
|
||||
transition: none;
|
||||
height: 3px; }
|
||||
md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter {
|
||||
-webkit-transition: opacity 0.15s linear;
|
||||
transition: opacity 0.15s linear; }
|
||||
md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active {
|
||||
opacity: 1; }
|
||||
md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave {
|
||||
-webkit-transition: opacity 0.15s linear;
|
||||
transition: opacity 0.15s linear; }
|
||||
md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active {
|
||||
opacity: 0; }
|
||||
md-autocomplete input:not(.md-input) {
|
||||
font-size: 14px;
|
||||
box-sizing: border-box;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
width: 100%;
|
||||
padding: 0 15px;
|
||||
line-height: 40px;
|
||||
height: 40px; }
|
||||
md-autocomplete input:not(.md-input)::-ms-clear {
|
||||
display: none; }
|
||||
md-autocomplete .md-show-clear-button button {
|
||||
position: relative;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
cursor: pointer;
|
||||
border: none;
|
||||
border-radius: 50%;
|
||||
padding: 0;
|
||||
font-size: 12px;
|
||||
background: transparent;
|
||||
margin: auto 5px; }
|
||||
md-autocomplete .md-show-clear-button button:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
right: -6px;
|
||||
bottom: -6px;
|
||||
left: -6px;
|
||||
border-radius: 50%;
|
||||
-webkit-transform: scale(0);
|
||||
transform: scale(0);
|
||||
opacity: 0;
|
||||
-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-autocomplete .md-show-clear-button button:focus {
|
||||
outline: none; }
|
||||
md-autocomplete .md-show-clear-button button:focus:after {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1);
|
||||
opacity: 1; }
|
||||
md-autocomplete .md-show-clear-button button md-icon {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
-webkit-transform: translate3d(-50%, -50%, 0) scale(0.9);
|
||||
transform: translate3d(-50%, -50%, 0) scale(0.9); }
|
||||
md-autocomplete .md-show-clear-button button md-icon path {
|
||||
stroke-width: 0; }
|
||||
md-autocomplete .md-show-clear-button button.ng-enter {
|
||||
-webkit-transform: scale(0);
|
||||
transform: scale(0);
|
||||
-webkit-transition: -webkit-transform 0.15s ease-out;
|
||||
transition: -webkit-transform 0.15s ease-out;
|
||||
transition: transform 0.15s ease-out;
|
||||
transition: transform 0.15s ease-out, -webkit-transform 0.15s ease-out; }
|
||||
md-autocomplete .md-show-clear-button button.ng-enter.ng-enter-active {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
md-autocomplete .md-show-clear-button button.ng-leave {
|
||||
-webkit-transition: -webkit-transform 0.15s ease-out;
|
||||
transition: -webkit-transform 0.15s ease-out;
|
||||
transition: transform 0.15s ease-out;
|
||||
transition: transform 0.15s ease-out, -webkit-transform 0.15s ease-out; }
|
||||
md-autocomplete .md-show-clear-button button.ng-leave.ng-leave-active {
|
||||
-webkit-transform: scale(0);
|
||||
transform: scale(0); }
|
||||
@media screen and (-ms-high-contrast: active) {
|
||||
md-autocomplete input {
|
||||
border: 1px solid #fff; }
|
||||
md-autocomplete li:focus {
|
||||
color: #fff; } }
|
||||
|
||||
.md-virtual-repeat-container.md-autocomplete-suggestions-container {
|
||||
position: absolute;
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25);
|
||||
z-index: 100;
|
||||
height: 100%; }
|
||||
|
||||
.md-virtual-repeat-container.md-not-found {
|
||||
height: 48px; }
|
||||
|
||||
.md-autocomplete-suggestions {
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
padding: 0; }
|
||||
.md-autocomplete-suggestions li {
|
||||
font-size: 14px;
|
||||
overflow: hidden;
|
||||
padding: 0 15px;
|
||||
line-height: 48px;
|
||||
height: 48px;
|
||||
-webkit-transition: background 0.15s linear;
|
||||
transition: background 0.15s linear;
|
||||
margin: 0;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis; }
|
||||
.md-autocomplete-suggestions li:focus {
|
||||
outline: none; }
|
||||
.md-autocomplete-suggestions li:not(.md-not-found-wrapper) {
|
||||
cursor: pointer; }
|
||||
|
||||
@media screen and (-ms-high-contrast: active) {
|
||||
md-autocomplete,
|
||||
.md-autocomplete-suggestions {
|
||||
border: 1px solid #fff; } }
|
1698
xstatic/pkg/angular_material/data/modules/closure/autocomplete/autocomplete.js
vendored
Executable file
1698
xstatic/pkg/angular_material/data/modules/closure/autocomplete/autocomplete.js
vendored
Executable file
File diff suppressed because it is too large
Load Diff
6
xstatic/pkg/angular_material/data/modules/closure/autocomplete/autocomplete.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/autocomplete/autocomplete.min.css
vendored
Executable file
File diff suppressed because one or more lines are too long
7
xstatic/pkg/angular_material/data/modules/closure/autocomplete/autocomplete.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/autocomplete/autocomplete.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
@ -0,0 +1,10 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-backdrop {
|
||||
background-color: '{{background-900-0.0}}'; }
|
||||
md-backdrop.md-opaque.md-THEME_NAME-theme {
|
||||
background-color: '{{background-900-1.0}}'; }
|
6
xstatic/pkg/angular_material/data/modules/closure/backdrop/backdrop-default-theme.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/backdrop/backdrop-default-theme.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-backdrop{background-color:"{{background-900-0.0}}"}md-backdrop.md-opaque.md-THEME_NAME-theme{background-color:"{{background-900-1.0}}"}
|
42
xstatic/pkg/angular_material/data/modules/closure/backdrop/backdrop.css
Executable file
42
xstatic/pkg/angular_material/data/modules/closure/backdrop/backdrop.css
Executable file
@ -0,0 +1,42 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-backdrop {
|
||||
-webkit-transition: opacity 450ms;
|
||||
transition: opacity 450ms;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 50; }
|
||||
md-backdrop.md-menu-backdrop {
|
||||
position: fixed !important;
|
||||
z-index: 99; }
|
||||
md-backdrop.md-select-backdrop {
|
||||
z-index: 81;
|
||||
-webkit-transition-duration: 0;
|
||||
transition-duration: 0; }
|
||||
md-backdrop.md-dialog-backdrop {
|
||||
z-index: 79; }
|
||||
md-backdrop.md-bottom-sheet-backdrop {
|
||||
z-index: 69; }
|
||||
md-backdrop.md-sidenav-backdrop {
|
||||
z-index: 59; }
|
||||
md-backdrop.md-click-catcher {
|
||||
position: absolute; }
|
||||
md-backdrop.md-opaque {
|
||||
opacity: .48; }
|
||||
md-backdrop.md-opaque.ng-enter {
|
||||
opacity: 0; }
|
||||
md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active {
|
||||
opacity: .48; }
|
||||
md-backdrop.md-opaque.ng-leave {
|
||||
opacity: .48;
|
||||
-webkit-transition: opacity 400ms;
|
||||
transition: opacity 400ms; }
|
||||
md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active {
|
||||
opacity: 0; }
|
93
xstatic/pkg/angular_material/data/modules/closure/backdrop/backdrop.js
vendored
Executable file
93
xstatic/pkg/angular_material/data/modules/closure/backdrop/backdrop.js
vendored
Executable file
@ -0,0 +1,93 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
goog.provide('ngmaterial.components.backdrop');
|
||||
goog.require('ngmaterial.core');
|
||||
/*
|
||||
* @ngdoc module
|
||||
* @name material.components.backdrop
|
||||
* @description Backdrop
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name mdBackdrop
|
||||
* @module material.components.backdrop
|
||||
*
|
||||
* @restrict E
|
||||
*
|
||||
* @description
|
||||
* `<md-backdrop>` is a backdrop element used by other components, such as dialog and bottom sheet.
|
||||
* Apply class `opaque` to make the backdrop use the theme backdrop color.
|
||||
*
|
||||
*/
|
||||
|
||||
angular
|
||||
.module('material.components.backdrop', ['material.core'])
|
||||
.directive('mdBackdrop', ["$mdTheming", "$mdUtil", "$animate", "$rootElement", "$window", "$log", "$$rAF", "$document", function BackdropDirective($mdTheming, $mdUtil, $animate, $rootElement, $window, $log, $$rAF, $document) {
|
||||
var ERROR_CSS_POSITION = '<md-backdrop> may not work properly in a scrolled, static-positioned parent container.';
|
||||
|
||||
return {
|
||||
restrict: 'E',
|
||||
link: postLink
|
||||
};
|
||||
|
||||
function postLink(scope, element, attrs) {
|
||||
// backdrop may be outside the $rootElement, tell ngAnimate to animate regardless
|
||||
if ($animate.pin) $animate.pin(element, $rootElement);
|
||||
|
||||
var bodyStyles;
|
||||
|
||||
$$rAF(function() {
|
||||
// If body scrolling has been disabled using mdUtil.disableBodyScroll(),
|
||||
// adjust the 'backdrop' height to account for the fixed 'body' top offset.
|
||||
// Note that this can be pretty expensive and is better done inside the $$rAF.
|
||||
bodyStyles = $window.getComputedStyle($document[0].body);
|
||||
|
||||
if (bodyStyles.position === 'fixed') {
|
||||
var resizeHandler = $mdUtil.debounce(function(){
|
||||
bodyStyles = $window.getComputedStyle($document[0].body);
|
||||
resize();
|
||||
}, 60, null, false);
|
||||
|
||||
resize();
|
||||
angular.element($window).on('resize', resizeHandler);
|
||||
|
||||
scope.$on('$destroy', function() {
|
||||
angular.element($window).off('resize', resizeHandler);
|
||||
});
|
||||
}
|
||||
|
||||
// Often $animate.enter() is used to append the backDrop element
|
||||
// so let's wait until $animate is done...
|
||||
var parent = element.parent();
|
||||
|
||||
if (parent.length) {
|
||||
if (parent[0].nodeName === 'BODY') {
|
||||
element.css('position', 'fixed');
|
||||
}
|
||||
|
||||
var styles = $window.getComputedStyle(parent[0]);
|
||||
|
||||
if (styles.position === 'static') {
|
||||
// backdrop uses position:absolute and will not work properly with parent position:static (default)
|
||||
$log.warn(ERROR_CSS_POSITION);
|
||||
}
|
||||
|
||||
// Only inherit the parent if the backdrop has a parent.
|
||||
$mdTheming.inherit(element, parent);
|
||||
}
|
||||
});
|
||||
|
||||
function resize() {
|
||||
var viewportHeight = parseInt(bodyStyles.height, 10) + Math.abs(parseInt(bodyStyles.top, 10));
|
||||
element.css('height', viewportHeight + 'px');
|
||||
}
|
||||
}
|
||||
|
||||
}]);
|
||||
|
||||
ngmaterial.components.backdrop = angular.module("material.components.backdrop");
|
6
xstatic/pkg/angular_material/data/modules/closure/backdrop/backdrop.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/backdrop/backdrop.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-backdrop{-webkit-transition:opacity .45s;transition:opacity .45s;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;-webkit-transition-duration:0;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;-webkit-transition:opacity .4s;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}
|
7
xstatic/pkg/angular_material/data/modules/closure/backdrop/backdrop.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/backdrop/backdrop.min.js
vendored
Executable file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/
|
||||
goog.provide("ngmaterial.components.backdrop"),goog.require("ngmaterial.core"),angular.module("material.components.backdrop",["material.core"]).directive("mdBackdrop",["$mdTheming","$mdUtil","$animate","$rootElement","$window","$log","$$rAF","$document",function(e,o,n,t,r,a,i,c){function d(d,l,m){function s(){var e=parseInt(u.height,10)+Math.abs(parseInt(u.top,10));l.css("height",e+"px")}n.pin&&n.pin(l,t);var u;i(function(){if(u=r.getComputedStyle(c[0].body),"fixed"===u.position){var n=o.debounce(function(){u=r.getComputedStyle(c[0].body),s()},60,null,!1);s(),angular.element(r).on("resize",n),d.$on("$destroy",function(){angular.element(r).off("resize",n)})}var t=l.parent();if(t.length){"BODY"===t[0].nodeName&&l.css("position","fixed");var i=r.getComputedStyle(t[0]);"static"===i.position&&a.warn(p),e.inherit(l,t)}})}var p="<md-backdrop> may not work properly in a scrolled, static-positioned parent container.";return{restrict:"E",link:d}}]),ngmaterial.components.backdrop=angular.module("material.components.backdrop");
|
@ -0,0 +1,15 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-bottom-sheet.md-THEME_NAME-theme {
|
||||
background-color: '{{background-50}}';
|
||||
border-top-color: '{{background-300}}'; }
|
||||
md-bottom-sheet.md-THEME_NAME-theme.md-list md-list-item {
|
||||
color: '{{foreground-1}}'; }
|
||||
md-bottom-sheet.md-THEME_NAME-theme .md-subheader {
|
||||
background-color: '{{background-50}}'; }
|
||||
md-bottom-sheet.md-THEME_NAME-theme .md-subheader {
|
||||
color: '{{foreground-1}}'; }
|
6
xstatic/pkg/angular_material/data/modules/closure/bottomSheet/bottomSheet-default-theme.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/bottomSheet/bottomSheet-default-theme.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-bottom-sheet.md-THEME_NAME-theme{background-color:"{{background-50}}";border-top-color:"{{background-300}}"}md-bottom-sheet.md-THEME_NAME-theme.md-list md-list-item{color:"{{foreground-1}}"}md-bottom-sheet.md-THEME_NAME-theme .md-subheader{background-color:"{{background-50}}";color:"{{foreground-1}}"}
|
170
xstatic/pkg/angular_material/data/modules/closure/bottomSheet/bottomSheet.css
Executable file
170
xstatic/pkg/angular_material/data/modules/closure/bottomSheet/bottomSheet.css
Executable file
@ -0,0 +1,170 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-bottom-sheet {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
padding: 8px 16px 88px 16px;
|
||||
z-index: 70;
|
||||
border-top-width: 1px;
|
||||
border-top-style: solid;
|
||||
-webkit-transform: translate3d(0, 80px, 0);
|
||||
transform: translate3d(0, 80px, 0);
|
||||
-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);
|
||||
-webkit-transition-property: -webkit-transform;
|
||||
transition-property: -webkit-transform;
|
||||
transition-property: transform;
|
||||
transition-property: transform, -webkit-transform; }
|
||||
md-bottom-sheet.md-has-header {
|
||||
padding-top: 0; }
|
||||
md-bottom-sheet.ng-enter {
|
||||
opacity: 0;
|
||||
-webkit-transform: translate3d(0, 100%, 0);
|
||||
transform: translate3d(0, 100%, 0); }
|
||||
md-bottom-sheet.ng-enter-active {
|
||||
opacity: 1;
|
||||
display: block;
|
||||
-webkit-transform: translate3d(0, 80px, 0) !important;
|
||||
transform: translate3d(0, 80px, 0) !important; }
|
||||
md-bottom-sheet.ng-leave-active {
|
||||
-webkit-transform: translate3d(0, 100%, 0) !important;
|
||||
transform: translate3d(0, 100%, 0) !important;
|
||||
-webkit-transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); }
|
||||
md-bottom-sheet .md-subheader {
|
||||
background-color: transparent;
|
||||
font-family: Roboto, "Helvetica Neue", sans-serif;
|
||||
line-height: 56px;
|
||||
padding: 0;
|
||||
white-space: nowrap; }
|
||||
md-bottom-sheet md-inline-icon {
|
||||
display: inline-block;
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
fill: #444; }
|
||||
md-bottom-sheet md-list-item {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
outline: none; }
|
||||
md-bottom-sheet md-list-item:hover {
|
||||
cursor: pointer; }
|
||||
md-bottom-sheet.md-list md-list-item {
|
||||
padding: 0;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
height: 48px; }
|
||||
md-bottom-sheet.md-grid {
|
||||
padding-left: 24px;
|
||||
padding-right: 24px;
|
||||
padding-top: 0; }
|
||||
md-bottom-sheet.md-grid md-list {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: row;
|
||||
flex-direction: row;
|
||||
-webkit-flex-wrap: wrap;
|
||||
flex-wrap: wrap;
|
||||
-webkit-transition: all 0.5s;
|
||||
transition: all 0.5s;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
align-items: center; }
|
||||
md-bottom-sheet.md-grid md-list-item {
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
-webkit-transition: all 0.5s;
|
||||
transition: all 0.5s;
|
||||
height: 96px;
|
||||
margin-top: 8px;
|
||||
margin-bottom: 8px;
|
||||
/* Mixin for how many grid items to show per row */ }
|
||||
@media (max-width: 960px) {
|
||||
md-bottom-sheet.md-grid md-list-item {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1 1 33.33333%;
|
||||
flex: 1 1 33.33333%;
|
||||
max-width: 33.33333%; }
|
||||
md-bottom-sheet.md-grid md-list-item:nth-of-type(3n + 1) {
|
||||
-webkit-box-align: start;
|
||||
-webkit-align-items: flex-start;
|
||||
align-items: flex-start; }
|
||||
md-bottom-sheet.md-grid md-list-item:nth-of-type(3n) {
|
||||
-webkit-box-align: end;
|
||||
-webkit-align-items: flex-end;
|
||||
align-items: flex-end; } }
|
||||
@media (min-width: 960px) and (max-width: 1279px) {
|
||||
md-bottom-sheet.md-grid md-list-item {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1 1 25%;
|
||||
flex: 1 1 25%;
|
||||
max-width: 25%; } }
|
||||
@media (min-width: 1280px) and (max-width: 1919px) {
|
||||
md-bottom-sheet.md-grid md-list-item {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1 1 16.66667%;
|
||||
flex: 1 1 16.66667%;
|
||||
max-width: 16.66667%; } }
|
||||
@media (min-width: 1920px) {
|
||||
md-bottom-sheet.md-grid md-list-item {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1 1 14.28571%;
|
||||
flex: 1 1 14.28571%;
|
||||
max-width: 14.28571%; } }
|
||||
md-bottom-sheet.md-grid md-list-item::before {
|
||||
display: none; }
|
||||
md-bottom-sheet.md-grid md-list-item .md-list-item-content {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
width: 48px;
|
||||
padding-bottom: 16px; }
|
||||
md-bottom-sheet.md-grid md-list-item .md-grid-item-content {
|
||||
border: 1px solid transparent;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
width: 80px; }
|
||||
md-bottom-sheet.md-grid md-list-item .md-grid-text {
|
||||
font-weight: 400;
|
||||
line-height: 16px;
|
||||
font-size: 13px;
|
||||
margin: 0;
|
||||
white-space: nowrap;
|
||||
width: 64px;
|
||||
text-align: center;
|
||||
text-transform: none;
|
||||
padding-top: 8px; }
|
||||
|
||||
@media screen and (-ms-high-contrast: active) {
|
||||
md-bottom-sheet {
|
||||
border: 1px solid #fff; } }
|
332
xstatic/pkg/angular_material/data/modules/closure/bottomSheet/bottomSheet.js
vendored
Executable file
332
xstatic/pkg/angular_material/data/modules/closure/bottomSheet/bottomSheet.js
vendored
Executable file
@ -0,0 +1,332 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
goog.provide('ngmaterial.components.bottomSheet');
|
||||
goog.require('ngmaterial.components.backdrop');
|
||||
goog.require('ngmaterial.core');
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.components.bottomSheet
|
||||
* @description
|
||||
* BottomSheet
|
||||
*/
|
||||
MdBottomSheetDirective['$inject'] = ["$mdBottomSheet"];
|
||||
MdBottomSheetProvider['$inject'] = ["$$interimElementProvider"];
|
||||
angular
|
||||
.module('material.components.bottomSheet', [
|
||||
'material.core',
|
||||
'material.components.backdrop'
|
||||
])
|
||||
.directive('mdBottomSheet', MdBottomSheetDirective)
|
||||
.provider('$mdBottomSheet', MdBottomSheetProvider);
|
||||
|
||||
/* ngInject */
|
||||
function MdBottomSheetDirective($mdBottomSheet) {
|
||||
return {
|
||||
restrict: 'E',
|
||||
link : function postLink(scope, element) {
|
||||
element.addClass('_md'); // private md component indicator for styling
|
||||
|
||||
// When navigation force destroys an interimElement, then
|
||||
// listen and $destroy() that interim instance...
|
||||
scope.$on('$destroy', function() {
|
||||
$mdBottomSheet.destroy();
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @ngdoc service
|
||||
* @name $mdBottomSheet
|
||||
* @module material.components.bottomSheet
|
||||
*
|
||||
* @description
|
||||
* `$mdBottomSheet` opens a bottom sheet over the app and provides a simple promise API.
|
||||
*
|
||||
* ## Restrictions
|
||||
*
|
||||
* - The bottom sheet's template must have an outer `<md-bottom-sheet>` element.
|
||||
* - Add the `md-grid` class to the bottom sheet for a grid layout.
|
||||
* - Add the `md-list` class to the bottom sheet for a list layout.
|
||||
*
|
||||
* @usage
|
||||
* <hljs lang="html">
|
||||
* <div ng-controller="MyController">
|
||||
* <md-button ng-click="openBottomSheet()">
|
||||
* Open a Bottom Sheet!
|
||||
* </md-button>
|
||||
* </div>
|
||||
* </hljs>
|
||||
* <hljs lang="js">
|
||||
* var app = angular.module('app', ['ngMaterial']);
|
||||
* app.controller('MyController', function($scope, $mdBottomSheet) {
|
||||
* $scope.openBottomSheet = function() {
|
||||
* $mdBottomSheet.show({
|
||||
* template: '<md-bottom-sheet>' +
|
||||
* 'Hello! <md-button ng-click="closeBottomSheet()">Close</md-button>' +
|
||||
* '</md-bottom-sheet>'
|
||||
* })
|
||||
*
|
||||
* // Fires when the hide() method is used
|
||||
* .then(function() {
|
||||
* console.log('You clicked the button to close the bottom sheet!');
|
||||
* })
|
||||
*
|
||||
* // Fires when the cancel() method is used
|
||||
* .catch(function() {
|
||||
* console.log('You hit escape or clicked the backdrop to close.');
|
||||
* });
|
||||
* };
|
||||
*
|
||||
* $scope.closeBottomSheet = function($scope, $mdBottomSheet) {
|
||||
* $mdBottomSheet.hide();
|
||||
* }
|
||||
*
|
||||
* });
|
||||
* </hljs>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
* @name $mdBottomSheet#show
|
||||
*
|
||||
* @description
|
||||
* Show a bottom sheet with the specified options.
|
||||
*
|
||||
* <em><b>Note:</b> You should <b>always</b> provide a `.catch()` method in case the user hits the
|
||||
* `esc` key or clicks the background to close. In this case, the `cancel()` method will
|
||||
* automatically be called on the bottom sheet which will `reject()` the promise. See the @usage
|
||||
* section above for an example.
|
||||
*
|
||||
* Newer versions of Angular will throw a `Possibly unhandled rejection` exception if you forget
|
||||
* this.</em>
|
||||
*
|
||||
* @param {object} options An options object, with the following properties:
|
||||
*
|
||||
* - `templateUrl` - `{string=}`: The url of an html template file that will
|
||||
* be used as the content of the bottom sheet. Restrictions: the template must
|
||||
* have an outer `md-bottom-sheet` element.
|
||||
* - `template` - `{string=}`: Same as templateUrl, except this is an actual
|
||||
* template string.
|
||||
* - `scope` - `{object=}`: the scope to link the template / controller to. If none is specified, it will create a new child scope.
|
||||
* This scope will be destroyed when the bottom sheet is removed unless `preserveScope` is set to true.
|
||||
* - `preserveScope` - `{boolean=}`: whether to preserve the scope when the element is removed. Default is false
|
||||
* - `controller` - `{string=}`: The controller to associate with this bottom sheet.
|
||||
* - `locals` - `{string=}`: An object containing key/value pairs. The keys will
|
||||
* be used as names of values to inject into the controller. For example,
|
||||
* `locals: {three: 3}` would inject `three` into the controller with the value
|
||||
* of 3.
|
||||
* - `clickOutsideToClose` - `{boolean=}`: Whether the user can click outside the bottom sheet to
|
||||
* close it. Default true.
|
||||
* - `bindToController` - `{boolean=}`: When set to true, the locals will be bound to the controller instance.
|
||||
* - `disableBackdrop` - `{boolean=}`: When set to true, the bottomsheet will not show a backdrop.
|
||||
* - `escapeToClose` - `{boolean=}`: Whether the user can press escape to close the bottom sheet.
|
||||
* Default true.
|
||||
* - `resolve` - `{object=}`: Similar to locals, except it takes promises as values
|
||||
* and the bottom sheet will not open until the promises resolve.
|
||||
* - `controllerAs` - `{string=}`: An alias to assign the controller to on the scope.
|
||||
* - `parent` - `{element=}`: The element to append the bottom sheet to. The `parent` may be a `function`, `string`,
|
||||
* `object`, or null. Defaults to appending to the body of the root element (or the root element) of the application.
|
||||
* e.g. angular.element(document.getElementById('content')) or "#content"
|
||||
* - `disableParentScroll` - `{boolean=}`: Whether to disable scrolling while the bottom sheet is open.
|
||||
* Default true.
|
||||
*
|
||||
* @returns {promise} A promise that can be resolved with `$mdBottomSheet.hide()` or
|
||||
* rejected with `$mdBottomSheet.cancel()`.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
* @name $mdBottomSheet#hide
|
||||
*
|
||||
* @description
|
||||
* Hide the existing bottom sheet and resolve the promise returned from
|
||||
* `$mdBottomSheet.show()`. This call will close the most recently opened/current bottomsheet (if
|
||||
* any).
|
||||
*
|
||||
* <em><b>Note:</b> Use a `.then()` on your `.show()` to handle this callback.</em>
|
||||
*
|
||||
* @param {*=} response An argument for the resolved promise.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
* @name $mdBottomSheet#cancel
|
||||
*
|
||||
* @description
|
||||
* Hide the existing bottom sheet and reject the promise returned from
|
||||
* `$mdBottomSheet.show()`.
|
||||
*
|
||||
* <em><b>Note:</b> Use a `.catch()` on your `.show()` to handle this callback.</em>
|
||||
*
|
||||
* @param {*=} response An argument for the rejected promise.
|
||||
*
|
||||
*/
|
||||
|
||||
function MdBottomSheetProvider($$interimElementProvider) {
|
||||
// how fast we need to flick down to close the sheet, pixels/ms
|
||||
bottomSheetDefaults['$inject'] = ["$animate", "$mdConstant", "$mdUtil", "$mdTheming", "$mdBottomSheet", "$rootElement", "$mdGesture", "$log"];
|
||||
var CLOSING_VELOCITY = 0.5;
|
||||
var PADDING = 80; // same as css
|
||||
|
||||
return $$interimElementProvider('$mdBottomSheet')
|
||||
.setDefaults({
|
||||
methods: ['disableParentScroll', 'escapeToClose', 'clickOutsideToClose'],
|
||||
options: bottomSheetDefaults
|
||||
});
|
||||
|
||||
/* ngInject */
|
||||
function bottomSheetDefaults($animate, $mdConstant, $mdUtil, $mdTheming, $mdBottomSheet, $rootElement,
|
||||
$mdGesture, $log) {
|
||||
var backdrop;
|
||||
|
||||
return {
|
||||
themable: true,
|
||||
onShow: onShow,
|
||||
onRemove: onRemove,
|
||||
disableBackdrop: false,
|
||||
escapeToClose: true,
|
||||
clickOutsideToClose: true,
|
||||
disableParentScroll: true
|
||||
};
|
||||
|
||||
|
||||
function onShow(scope, element, options, controller) {
|
||||
|
||||
element = $mdUtil.extractElementByName(element, 'md-bottom-sheet');
|
||||
|
||||
// prevent tab focus or click focus on the bottom-sheet container
|
||||
element.attr('tabindex',"-1");
|
||||
|
||||
// Once the md-bottom-sheet has `ng-cloak` applied on his template the opening animation will not work properly.
|
||||
// This is a very common problem, so we have to notify the developer about this.
|
||||
if (element.hasClass('ng-cloak')) {
|
||||
var message = '$mdBottomSheet: using `<md-bottom-sheet ng-cloak >` will affect the bottom-sheet opening animations.';
|
||||
$log.warn( message, element[0] );
|
||||
}
|
||||
|
||||
if (!options.disableBackdrop) {
|
||||
// Add a backdrop that will close on click
|
||||
backdrop = $mdUtil.createBackdrop(scope, "md-bottom-sheet-backdrop md-opaque");
|
||||
|
||||
// Prevent mouse focus on backdrop; ONLY programatic focus allowed.
|
||||
// This allows clicks on backdrop to propogate to the $rootElement and
|
||||
// ESC key events to be detected properly.
|
||||
|
||||
backdrop[0].tabIndex = -1;
|
||||
|
||||
if (options.clickOutsideToClose) {
|
||||
backdrop.on('click', function() {
|
||||
$mdUtil.nextTick($mdBottomSheet.cancel,true);
|
||||
});
|
||||
}
|
||||
|
||||
$mdTheming.inherit(backdrop, options.parent);
|
||||
|
||||
$animate.enter(backdrop, options.parent, null);
|
||||
}
|
||||
|
||||
var bottomSheet = new BottomSheet(element, options.parent);
|
||||
options.bottomSheet = bottomSheet;
|
||||
|
||||
$mdTheming.inherit(bottomSheet.element, options.parent);
|
||||
|
||||
if (options.disableParentScroll) {
|
||||
options.restoreScroll = $mdUtil.disableScrollAround(bottomSheet.element, options.parent);
|
||||
}
|
||||
|
||||
return $animate.enter(bottomSheet.element, options.parent, backdrop)
|
||||
.then(function() {
|
||||
var focusable = $mdUtil.findFocusTarget(element) || angular.element(
|
||||
element[0].querySelector('button') ||
|
||||
element[0].querySelector('a') ||
|
||||
element[0].querySelector($mdUtil.prefixer('ng-click', true))
|
||||
) || backdrop;
|
||||
|
||||
if (options.escapeToClose) {
|
||||
options.rootElementKeyupCallback = function(e) {
|
||||
if (e.keyCode === $mdConstant.KEY_CODE.ESCAPE) {
|
||||
$mdUtil.nextTick($mdBottomSheet.cancel,true);
|
||||
}
|
||||
};
|
||||
|
||||
$rootElement.on('keyup', options.rootElementKeyupCallback);
|
||||
focusable && focusable.focus();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function onRemove(scope, element, options) {
|
||||
|
||||
var bottomSheet = options.bottomSheet;
|
||||
|
||||
if (!options.disableBackdrop) $animate.leave(backdrop);
|
||||
return $animate.leave(bottomSheet.element).then(function() {
|
||||
if (options.disableParentScroll) {
|
||||
options.restoreScroll();
|
||||
delete options.restoreScroll;
|
||||
}
|
||||
|
||||
bottomSheet.cleanup();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* BottomSheet class to apply bottom-sheet behavior to an element
|
||||
*/
|
||||
function BottomSheet(element, parent) {
|
||||
var deregister = $mdGesture.register(parent, 'drag', { horizontal: false });
|
||||
parent.on('$md.dragstart', onDragStart)
|
||||
.on('$md.drag', onDrag)
|
||||
.on('$md.dragend', onDragEnd);
|
||||
|
||||
return {
|
||||
element: element,
|
||||
cleanup: function cleanup() {
|
||||
deregister();
|
||||
parent.off('$md.dragstart', onDragStart);
|
||||
parent.off('$md.drag', onDrag);
|
||||
parent.off('$md.dragend', onDragEnd);
|
||||
}
|
||||
};
|
||||
|
||||
function onDragStart(ev) {
|
||||
// Disable transitions on transform so that it feels fast
|
||||
element.css($mdConstant.CSS.TRANSITION_DURATION, '0ms');
|
||||
}
|
||||
|
||||
function onDrag(ev) {
|
||||
var transform = ev.pointer.distanceY;
|
||||
if (transform < 5) {
|
||||
// Slow down drag when trying to drag up, and stop after PADDING
|
||||
transform = Math.max(-PADDING, transform / 2);
|
||||
}
|
||||
element.css($mdConstant.CSS.TRANSFORM, 'translate3d(0,' + (PADDING + transform) + 'px,0)');
|
||||
}
|
||||
|
||||
function onDragEnd(ev) {
|
||||
if (ev.pointer.distanceY > 0 &&
|
||||
(ev.pointer.distanceY > 20 || Math.abs(ev.pointer.velocityY) > CLOSING_VELOCITY)) {
|
||||
var distanceRemaining = element.prop('offsetHeight') - ev.pointer.distanceY;
|
||||
var transitionDuration = Math.min(distanceRemaining / ev.pointer.velocityY * 0.75, 500);
|
||||
element.css($mdConstant.CSS.TRANSITION_DURATION, transitionDuration + 'ms');
|
||||
$mdUtil.nextTick($mdBottomSheet.cancel,true);
|
||||
} else {
|
||||
element.css($mdConstant.CSS.TRANSITION_DURATION, '');
|
||||
element.css($mdConstant.CSS.TRANSFORM, '');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ngmaterial.components.bottomSheet = angular.module("material.components.bottomSheet");
|
6
xstatic/pkg/angular_material/data/modules/closure/bottomSheet/bottomSheet.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/bottomSheet/bottomSheet.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px;z-index:70;border-top-width:1px;border-top-style:solid;-webkit-transform:translate3d(0,80px,0);transform:translate3d(0,80px,0);-webkit-transition:all .4s cubic-bezier(.25,.8,.25,1);transition:all .4s cubic-bezier(.25,.8,.25,1);-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;-webkit-transform:translate3d(0,80px,0)!important;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{-webkit-transform:translate3d(0,100%,0)!important;transform:translate3d(0,100%,0)!important;-webkit-transition:all .3s cubic-bezier(.55,0,.55,.2);transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,Helvetica Neue,sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:-webkit-box;display:-webkit-flex;display:flex;outline:none}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;-webkit-box-align:center;-webkit-align-items:center;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:horizontal;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;flex-wrap:wrap}md-bottom-sheet.md-grid md-list,md-bottom-sheet.md-grid md-list-item{-webkit-box-direction:normal;-webkit-transition:all .5s;transition:all .5s;-webkit-box-align:center;-webkit-align-items:center;align-items:center}md-bottom-sheet.md-grid md-list-item{-webkit-box-orient:vertical;-webkit-flex-direction:column;flex-direction:column;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{-webkit-box-flex:1;-webkit-flex:1 1 33.33333%;flex:1 1 33.33333%;max-width:33.33333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){-webkit-box-align:end;-webkit-align-items:flex-end;align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{-webkit-box-flex:1;-webkit-flex:1 1 25%;flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{-webkit-box-flex:1;-webkit-flex:1 1 16.66667%;flex:1 1 16.66667%;max-width:16.66667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{-webkit-box-flex:1;-webkit-flex:1 1 14.28571%;flex:1 1 14.28571%;max-width:14.28571%}}md-bottom-sheet.md-grid md-list-item:before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content,md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}
|
7
xstatic/pkg/angular_material/data/modules/closure/bottomSheet/bottomSheet.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/bottomSheet/bottomSheet.min.js
vendored
Executable file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/
|
||||
function MdBottomSheetDirective(e){return{restrict:"E",link:function(t,o){o.addClass("_md"),t.$on("$destroy",function(){e.destroy()})}}}function MdBottomSheetProvider(e){function t(e,t,r,a,i,c,l,m){function d(o,n,l,d){if(n=r.extractElementByName(n,"md-bottom-sheet"),n.attr("tabindex","-1"),n.hasClass("ng-cloak")){var s="$mdBottomSheet: using `<md-bottom-sheet ng-cloak >` will affect the bottom-sheet opening animations.";m.warn(s,n[0])}l.disableBackdrop||(S=r.createBackdrop(o,"md-bottom-sheet-backdrop md-opaque"),S[0].tabIndex=-1,l.clickOutsideToClose&&S.on("click",function(){r.nextTick(i.cancel,!0)}),a.inherit(S,l.parent),e.enter(S,l.parent,null));var p=new u(n,l.parent);return l.bottomSheet=p,a.inherit(p.element,l.parent),l.disableParentScroll&&(l.restoreScroll=r.disableScrollAround(p.element,l.parent)),e.enter(p.element,l.parent,S).then(function(){var e=r.findFocusTarget(n)||angular.element(n[0].querySelector("button")||n[0].querySelector("a")||n[0].querySelector(r.prefixer("ng-click",!0)))||S;l.escapeToClose&&(l.rootElementKeyupCallback=function(e){e.keyCode===t.KEY_CODE.ESCAPE&&r.nextTick(i.cancel,!0)},c.on("keyup",l.rootElementKeyupCallback),e&&e.focus())})}function s(t,o,n){var r=n.bottomSheet;return n.disableBackdrop||e.leave(S),e.leave(r.element).then(function(){n.disableParentScroll&&(n.restoreScroll(),delete n.restoreScroll),r.cleanup()})}function u(e,a){function c(o){e.css(t.CSS.TRANSITION_DURATION,"0ms")}function m(o){var r=o.pointer.distanceY;r<5&&(r=Math.max(-n,r/2)),e.css(t.CSS.TRANSFORM,"translate3d(0,"+(n+r)+"px,0)")}function d(n){if(n.pointer.distanceY>0&&(n.pointer.distanceY>20||Math.abs(n.pointer.velocityY)>o)){var a=e.prop("offsetHeight")-n.pointer.distanceY,c=Math.min(a/n.pointer.velocityY*.75,500);e.css(t.CSS.TRANSITION_DURATION,c+"ms"),r.nextTick(i.cancel,!0)}else e.css(t.CSS.TRANSITION_DURATION,""),e.css(t.CSS.TRANSFORM,"")}var s=l.register(a,"drag",{horizontal:!1});return a.on("$md.dragstart",c).on("$md.drag",m).on("$md.dragend",d),{element:e,cleanup:function(){s(),a.off("$md.dragstart",c),a.off("$md.drag",m),a.off("$md.dragend",d)}}}var S;return{themable:!0,onShow:d,onRemove:s,disableBackdrop:!1,escapeToClose:!0,clickOutsideToClose:!0,disableParentScroll:!0}}t.$inject=["$animate","$mdConstant","$mdUtil","$mdTheming","$mdBottomSheet","$rootElement","$mdGesture","$log"];var o=.5,n=80;return e("$mdBottomSheet").setDefaults({methods:["disableParentScroll","escapeToClose","clickOutsideToClose"],options:t})}goog.provide("ngmaterial.components.bottomSheet"),goog.require("ngmaterial.components.backdrop"),goog.require("ngmaterial.core"),MdBottomSheetDirective.$inject=["$mdBottomSheet"],MdBottomSheetProvider.$inject=["$$interimElementProvider"],angular.module("material.components.bottomSheet",["material.core","material.components.backdrop"]).directive("mdBottomSheet",MdBottomSheetDirective).provider("$mdBottomSheet",MdBottomSheetProvider),ngmaterial.components.bottomSheet=angular.module("material.components.bottomSheet");
|
@ -0,0 +1,113 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
.md-button.md-THEME_NAME-theme:not([disabled]):hover {
|
||||
background-color: '{{background-500-0.2}}'; }
|
||||
|
||||
.md-button.md-THEME_NAME-theme:not([disabled]).md-focused {
|
||||
background-color: '{{background-500-0.2}}'; }
|
||||
|
||||
.md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover {
|
||||
background-color: transparent; }
|
||||
|
||||
.md-button.md-THEME_NAME-theme.md-fab {
|
||||
background-color: '{{accent-color}}';
|
||||
color: '{{accent-contrast}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-fab md-icon {
|
||||
color: '{{accent-contrast}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover {
|
||||
background-color: '{{accent-A700}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused {
|
||||
background-color: '{{accent-A700}}'; }
|
||||
|
||||
.md-button.md-THEME_NAME-theme.md-primary {
|
||||
color: '{{primary-color}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-primary.md-raised, .md-button.md-THEME_NAME-theme.md-primary.md-fab {
|
||||
color: '{{primary-contrast}}';
|
||||
background-color: '{{primary-color}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]) md-icon {
|
||||
color: '{{primary-contrast}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover {
|
||||
background-color: '{{primary-600}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused {
|
||||
background-color: '{{primary-600}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-primary:not([disabled]) md-icon {
|
||||
color: '{{primary-color}}'; }
|
||||
|
||||
.md-button.md-THEME_NAME-theme.md-fab {
|
||||
background-color: '{{accent-color}}';
|
||||
color: '{{accent-contrast}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-fab:not([disabled]) .md-icon {
|
||||
color: '{{accent-contrast}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover {
|
||||
background-color: '{{accent-A700}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused {
|
||||
background-color: '{{accent-A700}}'; }
|
||||
|
||||
.md-button.md-THEME_NAME-theme.md-raised {
|
||||
color: '{{background-900}}';
|
||||
background-color: '{{background-50}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-raised:not([disabled]) md-icon {
|
||||
color: '{{background-900}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover {
|
||||
background-color: '{{background-50}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused {
|
||||
background-color: '{{background-200}}'; }
|
||||
|
||||
.md-button.md-THEME_NAME-theme.md-warn {
|
||||
color: '{{warn-color}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-warn.md-raised, .md-button.md-THEME_NAME-theme.md-warn.md-fab {
|
||||
color: '{{warn-contrast}}';
|
||||
background-color: '{{warn-color}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]) md-icon {
|
||||
color: '{{warn-contrast}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover {
|
||||
background-color: '{{warn-600}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused {
|
||||
background-color: '{{warn-600}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-warn:not([disabled]) md-icon {
|
||||
color: '{{warn-color}}'; }
|
||||
|
||||
.md-button.md-THEME_NAME-theme.md-accent {
|
||||
color: '{{accent-color}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-accent.md-raised, .md-button.md-THEME_NAME-theme.md-accent.md-fab {
|
||||
color: '{{accent-contrast}}';
|
||||
background-color: '{{accent-color}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]) md-icon {
|
||||
color: '{{accent-contrast}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover {
|
||||
background-color: '{{accent-A700}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused {
|
||||
background-color: '{{accent-A700}}'; }
|
||||
.md-button.md-THEME_NAME-theme.md-accent:not([disabled]) md-icon {
|
||||
color: '{{accent-color}}'; }
|
||||
|
||||
.md-button.md-THEME_NAME-theme[disabled], .md-button.md-THEME_NAME-theme.md-raised[disabled], .md-button.md-THEME_NAME-theme.md-fab[disabled], .md-button.md-THEME_NAME-theme.md-accent[disabled], .md-button.md-THEME_NAME-theme.md-warn[disabled] {
|
||||
color: '{{foreground-3}}';
|
||||
cursor: default; }
|
||||
.md-button.md-THEME_NAME-theme[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-accent[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-warn[disabled] md-icon {
|
||||
color: '{{foreground-3}}'; }
|
||||
|
||||
.md-button.md-THEME_NAME-theme.md-raised[disabled], .md-button.md-THEME_NAME-theme.md-fab[disabled] {
|
||||
background-color: '{{foreground-4}}'; }
|
||||
|
||||
.md-button.md-THEME_NAME-theme[disabled] {
|
||||
background-color: transparent; }
|
||||
|
||||
._md a.md-THEME_NAME-theme:not(.md-button).md-primary {
|
||||
color: '{{primary-color}}'; }
|
||||
._md a.md-THEME_NAME-theme:not(.md-button).md-primary:hover {
|
||||
color: '{{primary-700}}'; }
|
||||
|
||||
._md a.md-THEME_NAME-theme:not(.md-button).md-accent {
|
||||
color: '{{accent-color}}'; }
|
||||
._md a.md-THEME_NAME-theme:not(.md-button).md-accent:hover {
|
||||
color: '{{accent-A700}}'; }
|
||||
|
||||
._md a.md-THEME_NAME-theme:not(.md-button).md-warn {
|
||||
color: '{{warn-color}}'; }
|
||||
._md a.md-THEME_NAME-theme:not(.md-button).md-warn:hover {
|
||||
color: '{{warn-700}}'; }
|
6
xstatic/pkg/angular_material/data/modules/closure/button/button-default-theme.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/button/button-default-theme.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/.md-button.md-THEME_NAME-theme:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme:not([disabled]):hover{background-color:"{{background-500-0.2}}"}.md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover{background-color:transparent}.md-button.md-THEME_NAME-theme.md-fab md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-primary{color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab,.md-button.md-THEME_NAME-theme.md-primary.md-raised{color:"{{primary-contrast}}";background-color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]) md-icon{color:"{{primary-contrast}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover{background-color:"{{primary-600}}"}.md-button.md-THEME_NAME-theme.md-primary:not([disabled]) md-icon{color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-fab{background-color:"{{accent-color}}";color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-fab:not([disabled]) .md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover{background-color:"{{accent-A700}}"}.md-button.md-THEME_NAME-theme.md-raised{color:"{{background-900}}";background-color:"{{background-50}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]) md-icon{color:"{{background-900}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover{background-color:"{{background-50}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused{background-color:"{{background-200}}"}.md-button.md-THEME_NAME-theme.md-warn{color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab,.md-button.md-THEME_NAME-theme.md-warn.md-raised{color:"{{warn-contrast}}";background-color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]) md-icon{color:"{{warn-contrast}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover{background-color:"{{warn-600}}"}.md-button.md-THEME_NAME-theme.md-warn:not([disabled]) md-icon{color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-accent{color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab,.md-button.md-THEME_NAME-theme.md-accent.md-raised{color:"{{accent-contrast}}";background-color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]) md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover{background-color:"{{accent-A700}}"}.md-button.md-THEME_NAME-theme.md-accent:not([disabled]) md-icon{color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent[disabled],.md-button.md-THEME_NAME-theme.md-fab[disabled],.md-button.md-THEME_NAME-theme.md-raised[disabled],.md-button.md-THEME_NAME-theme.md-warn[disabled],.md-button.md-THEME_NAME-theme[disabled]{color:"{{foreground-3}}";cursor:default}.md-button.md-THEME_NAME-theme.md-accent[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-warn[disabled] md-icon,.md-button.md-THEME_NAME-theme[disabled] md-icon{color:"{{foreground-3}}"}.md-button.md-THEME_NAME-theme.md-fab[disabled],.md-button.md-THEME_NAME-theme.md-raised[disabled]{background-color:"{{foreground-4}}"}.md-button.md-THEME_NAME-theme[disabled]{background-color:transparent}._md a.md-THEME_NAME-theme:not(.md-button).md-primary{color:"{{primary-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-primary:hover{color:"{{primary-700}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-accent{color:"{{accent-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-accent:hover{color:"{{accent-A700}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-warn{color:"{{warn-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-warn:hover{color:"{{warn-700}}"}
|
205
xstatic/pkg/angular_material/data/modules/closure/button/button.css
Executable file
205
xstatic/pkg/angular_material/data/modules/closure/button/button.css
Executable file
@ -0,0 +1,205 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
button.md-button::-moz-focus-inner {
|
||||
border: 0; }
|
||||
|
||||
.md-button {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
/** Alignment adjustments */
|
||||
min-height: 36px;
|
||||
min-width: 88px;
|
||||
line-height: 36px;
|
||||
vertical-align: middle;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
border-radius: 2px;
|
||||
box-sizing: border-box;
|
||||
/* Reset default button appearance */
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
outline: none;
|
||||
border: 0;
|
||||
/** Custom styling for button */
|
||||
padding: 0 6px;
|
||||
margin: 6px 8px;
|
||||
background: transparent;
|
||||
color: currentColor;
|
||||
white-space: nowrap;
|
||||
/* Uppercase text content */
|
||||
text-transform: uppercase;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
font-style: inherit;
|
||||
font-variant: inherit;
|
||||
font-family: inherit;
|
||||
text-decoration: none;
|
||||
overflow: hidden;
|
||||
-webkit-transition: box-shadow 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), background-color 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||
transition: box-shadow 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), background-color 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); }
|
||||
.md-dense > .md-button:not(.md-dense-disabled),
|
||||
.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled) {
|
||||
min-height: 32px; }
|
||||
.md-dense > .md-button:not(.md-dense-disabled),
|
||||
.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled) {
|
||||
line-height: 32px; }
|
||||
.md-dense > .md-button:not(.md-dense-disabled),
|
||||
.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled) {
|
||||
font-size: 13px; }
|
||||
.md-button:focus {
|
||||
outline: none; }
|
||||
.md-button:hover, .md-button:focus {
|
||||
text-decoration: none; }
|
||||
.md-button.ng-hide, .md-button.ng-leave {
|
||||
-webkit-transition: none;
|
||||
transition: none; }
|
||||
.md-button.md-cornered {
|
||||
border-radius: 0; }
|
||||
.md-button.md-icon {
|
||||
padding: 0;
|
||||
background: none; }
|
||||
.md-button.md-raised:not([disabled]) {
|
||||
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); }
|
||||
.md-button.md-icon-button {
|
||||
margin: 0 6px;
|
||||
height: 40px;
|
||||
min-width: 0;
|
||||
line-height: 24px;
|
||||
padding: 8px;
|
||||
width: 40px;
|
||||
border-radius: 50%; }
|
||||
.md-button.md-icon-button .md-ripple-container {
|
||||
border-radius: 50%;
|
||||
background-clip: padding-box;
|
||||
overflow: hidden;
|
||||
-webkit-mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC"); }
|
||||
.md-button.md-fab {
|
||||
z-index: 20;
|
||||
line-height: 56px;
|
||||
min-width: 0;
|
||||
width: 56px;
|
||||
height: 56px;
|
||||
vertical-align: middle;
|
||||
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
|
||||
border-radius: 50%;
|
||||
background-clip: padding-box;
|
||||
overflow: hidden;
|
||||
-webkit-transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
-webkit-transition-property: background-color, box-shadow, -webkit-transform;
|
||||
transition-property: background-color, box-shadow, -webkit-transform;
|
||||
transition-property: background-color, box-shadow, transform;
|
||||
transition-property: background-color, box-shadow, transform, -webkit-transform; }
|
||||
.md-button.md-fab.md-fab-bottom-right {
|
||||
top: auto;
|
||||
right: 20px;
|
||||
bottom: 20px;
|
||||
left: auto;
|
||||
position: absolute; }
|
||||
.md-button.md-fab.md-fab-bottom-left {
|
||||
top: auto;
|
||||
right: auto;
|
||||
bottom: 20px;
|
||||
left: 20px;
|
||||
position: absolute; }
|
||||
.md-button.md-fab.md-fab-top-right {
|
||||
top: 20px;
|
||||
right: 20px;
|
||||
bottom: auto;
|
||||
left: auto;
|
||||
position: absolute; }
|
||||
.md-button.md-fab.md-fab-top-left {
|
||||
top: 20px;
|
||||
right: auto;
|
||||
bottom: auto;
|
||||
left: 20px;
|
||||
position: absolute; }
|
||||
.md-button.md-fab .md-ripple-container {
|
||||
border-radius: 50%;
|
||||
background-clip: padding-box;
|
||||
overflow: hidden;
|
||||
-webkit-mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC"); }
|
||||
.md-button.md-fab.md-mini {
|
||||
line-height: 40px;
|
||||
width: 40px;
|
||||
height: 40px; }
|
||||
.md-button.md-fab.ng-hide, .md-button.md-fab.ng-leave {
|
||||
-webkit-transition: none;
|
||||
transition: none; }
|
||||
.md-button:not([disabled]).md-raised.md-focused, .md-button:not([disabled]).md-fab.md-focused {
|
||||
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); }
|
||||
.md-button:not([disabled]).md-raised:active, .md-button:not([disabled]).md-fab:active {
|
||||
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.4); }
|
||||
.md-button .md-ripple-container {
|
||||
border-radius: 2px;
|
||||
background-clip: padding-box;
|
||||
overflow: hidden;
|
||||
-webkit-mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC"); }
|
||||
|
||||
.md-button.md-icon-button md-icon,
|
||||
button.md-button.md-fab md-icon {
|
||||
display: block; }
|
||||
|
||||
.md-toast-open-top .md-button.md-fab-top-left,
|
||||
.md-toast-open-top .md-button.md-fab-top-right {
|
||||
-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);
|
||||
-webkit-transform: translate3d(0, 42px, 0);
|
||||
transform: translate3d(0, 42px, 0); }
|
||||
.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused, .md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,
|
||||
.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,
|
||||
.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover {
|
||||
-webkit-transform: translate3d(0, 41px, 0);
|
||||
transform: translate3d(0, 41px, 0); }
|
||||
|
||||
.md-toast-open-bottom .md-button.md-fab-bottom-left,
|
||||
.md-toast-open-bottom .md-button.md-fab-bottom-right {
|
||||
-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);
|
||||
-webkit-transform: translate3d(0, -42px, 0);
|
||||
transform: translate3d(0, -42px, 0); }
|
||||
.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused, .md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,
|
||||
.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,
|
||||
.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover {
|
||||
-webkit-transform: translate3d(0, -43px, 0);
|
||||
transform: translate3d(0, -43px, 0); }
|
||||
|
||||
.md-button-group {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1;
|
||||
flex: 1;
|
||||
width: 100%; }
|
||||
.md-button-group > .md-button {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1;
|
||||
flex: 1;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
width: 0;
|
||||
border-width: 1px 0px 1px 1px;
|
||||
border-radius: 0;
|
||||
text-align: center;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap; }
|
||||
.md-button-group > .md-button:first-child {
|
||||
border-radius: 2px 0px 0px 2px; }
|
||||
.md-button-group > .md-button:last-child {
|
||||
border-right-width: 1px;
|
||||
border-radius: 0px 2px 2px 0px; }
|
||||
|
||||
@media screen and (-ms-high-contrast: active) {
|
||||
.md-button.md-raised,
|
||||
.md-button.md-fab {
|
||||
border: 1px solid #fff; } }
|
194
xstatic/pkg/angular_material/data/modules/closure/button/button.js
vendored
Executable file
194
xstatic/pkg/angular_material/data/modules/closure/button/button.js
vendored
Executable file
@ -0,0 +1,194 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
goog.provide('ngmaterial.components.button');
|
||||
goog.require('ngmaterial.core');
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.components.button
|
||||
* @description
|
||||
*
|
||||
* Button
|
||||
*/
|
||||
MdButtonDirective['$inject'] = ["$mdButtonInkRipple", "$mdTheming", "$mdAria", "$mdInteraction"];
|
||||
MdAnchorDirective['$inject'] = ["$mdTheming"];
|
||||
angular
|
||||
.module('material.components.button', [ 'material.core' ])
|
||||
.directive('mdButton', MdButtonDirective)
|
||||
.directive('a', MdAnchorDirective);
|
||||
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @restrict E
|
||||
*
|
||||
* @description
|
||||
* `a` is an anchor directive used to inherit theme colors for md-primary, md-accent, etc.
|
||||
*
|
||||
* @usage
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-content md-theme="myTheme">
|
||||
* <a href="#chapter1" class="md-accent"></a>
|
||||
* </md-content>
|
||||
* </hljs>
|
||||
*/
|
||||
function MdAnchorDirective($mdTheming) {
|
||||
return {
|
||||
restrict : 'E',
|
||||
link : function postLink(scope, element) {
|
||||
// Make sure to inherit theme so stand-alone anchors
|
||||
// support theme colors for md-primary, md-accent, etc.
|
||||
$mdTheming(element);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name mdButton
|
||||
* @module material.components.button
|
||||
*
|
||||
* @restrict E
|
||||
*
|
||||
* @description
|
||||
* `<md-button>` is a button directive with optional ink ripples (default enabled).
|
||||
*
|
||||
* If you supply a `href` or `ng-href` attribute, it will become an `<a>` element. Otherwise, it
|
||||
* will become a `<button>` element. As per the
|
||||
* [Material Design specifications](https://material.google.com/style/color.html#color-color-palette)
|
||||
* the FAB button background is filled with the accent color [by default]. The primary color palette
|
||||
* may be used with the `md-primary` class.
|
||||
*
|
||||
* Developers can also change the color palette of the button, by using the following classes
|
||||
* - `md-primary`
|
||||
* - `md-accent`
|
||||
* - `md-warn`
|
||||
*
|
||||
* See for example
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-button class="md-primary">Primary Button</md-button>
|
||||
* </hljs>
|
||||
*
|
||||
* Button can be also raised, which means that they will use the current color palette to fill the button.
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-button class="md-accent md-raised">Raised and Accent Button</md-button>
|
||||
* </hljs>
|
||||
*
|
||||
* It is also possible to disable the focus effect on the button, by using the following markup.
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-button class="md-no-focus">No Focus Style</md-button>
|
||||
* </hljs>
|
||||
*
|
||||
* @param {boolean=} md-no-ink If present, disable ripple ink effects.
|
||||
* @param {expression=} ng-disabled En/Disable based on the expression
|
||||
* @param {string=} md-ripple-size Overrides the default ripple size logic. Options: `full`, `partial`, `auto`
|
||||
* @param {string=} aria-label Adds alternative text to button for accessibility, useful for icon buttons.
|
||||
* If no default text is found, a warning will be logged.
|
||||
*
|
||||
* @usage
|
||||
*
|
||||
* Regular buttons:
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-button> Flat Button </md-button>
|
||||
* <md-button href="http://google.com"> Flat link </md-button>
|
||||
* <md-button class="md-raised"> Raised Button </md-button>
|
||||
* <md-button ng-disabled="true"> Disabled Button </md-button>
|
||||
* <md-button>
|
||||
* <md-icon md-svg-src="your/icon.svg"></md-icon>
|
||||
* Register Now
|
||||
* </md-button>
|
||||
* </hljs>
|
||||
*
|
||||
* FAB buttons:
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-button class="md-fab" aria-label="FAB">
|
||||
* <md-icon md-svg-src="your/icon.svg"></md-icon>
|
||||
* </md-button>
|
||||
* <!-- mini-FAB -->
|
||||
* <md-button class="md-fab md-mini" aria-label="Mini FAB">
|
||||
* <md-icon md-svg-src="your/icon.svg"></md-icon>
|
||||
* </md-button>
|
||||
* <!-- Button with SVG Icon -->
|
||||
* <md-button class="md-icon-button" aria-label="Custom Icon Button">
|
||||
* <md-icon md-svg-icon="path/to/your.svg"></md-icon>
|
||||
* </md-button>
|
||||
* </hljs>
|
||||
*/
|
||||
function MdButtonDirective($mdButtonInkRipple, $mdTheming, $mdAria, $mdInteraction) {
|
||||
|
||||
return {
|
||||
restrict: 'EA',
|
||||
replace: true,
|
||||
transclude: true,
|
||||
template: getTemplate,
|
||||
link: postLink
|
||||
};
|
||||
|
||||
function isAnchor(attr) {
|
||||
return angular.isDefined(attr.href) || angular.isDefined(attr.ngHref) || angular.isDefined(attr.ngLink) || angular.isDefined(attr.uiSref);
|
||||
}
|
||||
|
||||
function getTemplate(element, attr) {
|
||||
if (isAnchor(attr)) {
|
||||
return '<a class="md-button" ng-transclude></a>';
|
||||
} else {
|
||||
//If buttons don't have type="button", they will submit forms automatically.
|
||||
var btnType = (typeof attr.type === 'undefined') ? 'button' : attr.type;
|
||||
return '<button class="md-button" type="' + btnType + '" ng-transclude></button>';
|
||||
}
|
||||
}
|
||||
|
||||
function postLink(scope, element, attr) {
|
||||
$mdTheming(element);
|
||||
$mdButtonInkRipple.attach(scope, element);
|
||||
|
||||
// Use async expect to support possible bindings in the button label
|
||||
$mdAria.expectWithoutText(element, 'aria-label');
|
||||
|
||||
// For anchor elements, we have to set tabindex manually when the
|
||||
// element is disabled
|
||||
if (isAnchor(attr) && angular.isDefined(attr.ngDisabled) ) {
|
||||
scope.$watch(attr.ngDisabled, function(isDisabled) {
|
||||
element.attr('tabindex', isDisabled ? -1 : 0);
|
||||
});
|
||||
}
|
||||
|
||||
// disabling click event when disabled is true
|
||||
element.on('click', function(e){
|
||||
if (attr.disabled === true) {
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
}
|
||||
});
|
||||
|
||||
if (!element.hasClass('md-no-focus')) {
|
||||
|
||||
element.on('focus', function() {
|
||||
|
||||
// Only show the focus effect when being focused through keyboard interaction or programmatically
|
||||
if (!$mdInteraction.isUserInvoked() || $mdInteraction.getLastInteractionType() === 'keyboard') {
|
||||
element.addClass('md-focused');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
element.on('blur', function() {
|
||||
element.removeClass('md-focused');
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ngmaterial.components.button = angular.module("material.components.button");
|
6
xstatic/pkg/angular_material/data/modules/closure/button/button.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/button/button.min.css
vendored
Executable file
File diff suppressed because one or more lines are too long
7
xstatic/pkg/angular_material/data/modules/closure/button/button.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/button/button.min.js
vendored
Executable file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/
|
||||
function MdAnchorDirective(t){return{restrict:"E",link:function(n,e){t(e)}}}function MdButtonDirective(t,n,e,i){function a(t){return angular.isDefined(t.href)||angular.isDefined(t.ngHref)||angular.isDefined(t.ngLink)||angular.isDefined(t.uiSref)}function o(t,n){if(a(n))return'<a class="md-button" ng-transclude></a>';var e="undefined"==typeof n.type?"button":n.type;return'<button class="md-button" type="'+e+'" ng-transclude></button>'}function r(o,r,u){n(r),t.attach(o,r),e.expectWithoutText(r,"aria-label"),a(u)&&angular.isDefined(u.ngDisabled)&&o.$watch(u.ngDisabled,function(t){r.attr("tabindex",t?-1:0)}),r.on("click",function(t){u.disabled===!0&&(t.preventDefault(),t.stopImmediatePropagation())}),r.hasClass("md-no-focus")||(r.on("focus",function(){i.isUserInvoked()&&"keyboard"!==i.getLastInteractionType()||r.addClass("md-focused")}),r.on("blur",function(){r.removeClass("md-focused")}))}return{restrict:"EA",replace:!0,transclude:!0,template:o,link:r}}goog.provide("ngmaterial.components.button"),goog.require("ngmaterial.core"),MdButtonDirective.$inject=["$mdButtonInkRipple","$mdTheming","$mdAria","$mdInteraction"],MdAnchorDirective.$inject=["$mdTheming"],angular.module("material.components.button",["material.core"]).directive("mdButton",MdButtonDirective).directive("a",MdAnchorDirective),ngmaterial.components.button=angular.module("material.components.button");
|
@ -0,0 +1,19 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-card.md-THEME_NAME-theme {
|
||||
color: '{{foreground-1}}';
|
||||
background-color: '{{background-hue-1}}';
|
||||
border-radius: 2px; }
|
||||
md-card.md-THEME_NAME-theme .md-card-image {
|
||||
border-radius: 2px 2px 0 0; }
|
||||
md-card.md-THEME_NAME-theme md-card-header md-card-avatar md-icon {
|
||||
color: '{{background-color}}';
|
||||
background-color: '{{foreground-3}}'; }
|
||||
md-card.md-THEME_NAME-theme md-card-header md-card-header-text .md-subhead {
|
||||
color: '{{foreground-2}}'; }
|
||||
md-card.md-THEME_NAME-theme md-card-title md-card-title-text:not(:only-child) .md-subhead {
|
||||
color: '{{foreground-2}}'; }
|
6
xstatic/pkg/angular_material/data/modules/closure/card/card-default-theme.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/card/card-default-theme.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-card.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-hue-1}}";border-radius:2px}md-card.md-THEME_NAME-theme .md-card-image{border-radius:2px 2px 0 0}md-card.md-THEME_NAME-theme md-card-header md-card-avatar md-icon{color:"{{background-color}}";background-color:"{{foreground-3}}"}md-card.md-THEME_NAME-theme md-card-header md-card-header-text .md-subhead,md-card.md-THEME_NAME-theme md-card-title md-card-title-text:not(:only-child) .md-subhead{color:"{{foreground-2}}"}
|
202
xstatic/pkg/angular_material/data/modules/closure/card/card.css
Executable file
202
xstatic/pkg/angular_material/data/modules/closure/card/card.css
Executable file
@ -0,0 +1,202 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-card {
|
||||
box-sizing: border-box;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
flex-direction: column;
|
||||
margin: 8px;
|
||||
box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12); }
|
||||
md-card md-card-header {
|
||||
padding: 16px;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: row;
|
||||
flex-direction: row; }
|
||||
md-card md-card-header:first-child md-card-avatar {
|
||||
margin-right: 12px; }
|
||||
[dir=rtl] md-card md-card-header:first-child md-card-avatar {
|
||||
margin-right: auto;
|
||||
margin-left: 12px; }
|
||||
md-card md-card-header:last-child md-card-avatar {
|
||||
margin-left: 12px; }
|
||||
[dir=rtl] md-card md-card-header:last-child md-card-avatar {
|
||||
margin-left: auto;
|
||||
margin-right: 12px; }
|
||||
md-card md-card-header md-card-avatar {
|
||||
width: 40px;
|
||||
height: 40px; }
|
||||
md-card md-card-header md-card-avatar .md-user-avatar,
|
||||
md-card md-card-header md-card-avatar md-icon {
|
||||
border-radius: 50%; }
|
||||
md-card md-card-header md-card-avatar md-icon {
|
||||
padding: 8px; }
|
||||
md-card md-card-header md-card-avatar md-icon > svg {
|
||||
height: inherit;
|
||||
width: inherit; }
|
||||
md-card md-card-header md-card-avatar + md-card-header-text {
|
||||
max-height: 40px; }
|
||||
md-card md-card-header md-card-avatar + md-card-header-text .md-title {
|
||||
font-size: 14px; }
|
||||
md-card md-card-header md-card-header-text {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1;
|
||||
flex: 1;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
flex-direction: column; }
|
||||
md-card md-card-header md-card-header-text .md-subhead {
|
||||
font-size: 14px; }
|
||||
md-card > img,
|
||||
md-card > md-card-header img,
|
||||
md-card md-card-title-media img {
|
||||
box-sizing: border-box;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-flex: 0;
|
||||
-webkit-flex: 0 0 auto;
|
||||
flex: 0 0 auto;
|
||||
width: 100%;
|
||||
height: auto; }
|
||||
md-card md-card-title {
|
||||
padding: 24px 16px 16px;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1 1 auto;
|
||||
flex: 1 1 auto;
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: row;
|
||||
flex-direction: row; }
|
||||
md-card md-card-title + md-card-content {
|
||||
padding-top: 0; }
|
||||
md-card md-card-title md-card-title-text {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1;
|
||||
flex: 1;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
flex-direction: column;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex; }
|
||||
md-card md-card-title md-card-title-text .md-subhead {
|
||||
padding-top: 0;
|
||||
font-size: 14px; }
|
||||
md-card md-card-title md-card-title-text:only-child .md-subhead {
|
||||
padding-top: 12px; }
|
||||
md-card md-card-title md-card-title-media {
|
||||
margin-top: -8px; }
|
||||
md-card md-card-title md-card-title-media .md-media-sm {
|
||||
height: 80px;
|
||||
width: 80px; }
|
||||
md-card md-card-title md-card-title-media .md-media-md {
|
||||
height: 112px;
|
||||
width: 112px; }
|
||||
md-card md-card-title md-card-title-media .md-media-lg {
|
||||
height: 152px;
|
||||
width: 152px; }
|
||||
md-card md-card-content {
|
||||
display: block;
|
||||
padding: 16px; }
|
||||
md-card md-card-content > p:first-child {
|
||||
margin-top: 0; }
|
||||
md-card md-card-content > p:last-child {
|
||||
margin-bottom: 0; }
|
||||
md-card md-card-content .md-media-xl {
|
||||
height: 240px;
|
||||
width: 240px; }
|
||||
md-card .md-actions, md-card md-card-actions {
|
||||
margin: 8px; }
|
||||
md-card .md-actions.layout-column .md-button:not(.md-icon-button), md-card md-card-actions.layout-column .md-button:not(.md-icon-button) {
|
||||
margin: 2px 0; }
|
||||
md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type, md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type {
|
||||
margin-top: 0; }
|
||||
md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type, md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type {
|
||||
margin-bottom: 0; }
|
||||
md-card .md-actions.layout-column .md-button.md-icon-button, md-card md-card-actions.layout-column .md-button.md-icon-button {
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px; }
|
||||
md-card .md-actions md-card-icon-actions, md-card md-card-actions md-card-icon-actions {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1;
|
||||
flex: 1;
|
||||
-webkit-box-pack: start;
|
||||
-webkit-justify-content: flex-start;
|
||||
justify-content: flex-start;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: row;
|
||||
flex-direction: row; }
|
||||
md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button), md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button) {
|
||||
margin: 0 4px; }
|
||||
md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type, md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type {
|
||||
margin-left: 0; }
|
||||
[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type, [dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type {
|
||||
margin-left: auto;
|
||||
margin-right: 0; }
|
||||
md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type, md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type {
|
||||
margin-right: 0; }
|
||||
[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type, [dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type {
|
||||
margin-right: auto;
|
||||
margin-left: 0; }
|
||||
md-card .md-actions:not(.layout-column) .md-button.md-icon-button, md-card md-card-actions:not(.layout-column) .md-button.md-icon-button {
|
||||
margin-left: 6px;
|
||||
margin-right: 6px; }
|
||||
md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type, md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type {
|
||||
margin-left: 12px; }
|
||||
[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type, [dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type {
|
||||
margin-left: auto;
|
||||
margin-right: 12px; }
|
||||
md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type, md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type {
|
||||
margin-right: 12px; }
|
||||
[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type, [dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type {
|
||||
margin-right: auto;
|
||||
margin-left: 12px; }
|
||||
md-card .md-actions:not(.layout-column) .md-button + md-card-icon-actions, md-card md-card-actions:not(.layout-column) .md-button + md-card-icon-actions {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1;
|
||||
flex: 1;
|
||||
-webkit-box-pack: end;
|
||||
-webkit-justify-content: flex-end;
|
||||
justify-content: flex-end;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: row;
|
||||
flex-direction: row; }
|
||||
md-card md-card-footer {
|
||||
margin-top: auto;
|
||||
padding: 16px; }
|
||||
|
||||
@media screen and (-ms-high-contrast: active) {
|
||||
md-card {
|
||||
border: 1px solid #fff; } }
|
||||
|
||||
.md-image-no-fill > img {
|
||||
width: auto;
|
||||
height: auto; }
|
142
xstatic/pkg/angular_material/data/modules/closure/card/card.js
vendored
Executable file
142
xstatic/pkg/angular_material/data/modules/closure/card/card.js
vendored
Executable file
@ -0,0 +1,142 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
goog.provide('ngmaterial.components.card');
|
||||
goog.require('ngmaterial.core');
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.components.card
|
||||
*
|
||||
* @description
|
||||
* Card components.
|
||||
*/
|
||||
mdCardDirective['$inject'] = ["$mdTheming"];
|
||||
angular.module('material.components.card', [
|
||||
'material.core'
|
||||
])
|
||||
.directive('mdCard', mdCardDirective);
|
||||
|
||||
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name mdCard
|
||||
* @module material.components.card
|
||||
*
|
||||
* @restrict E
|
||||
*
|
||||
* @description
|
||||
* The `<md-card>` directive is a container element used within `<md-content>` containers.
|
||||
*
|
||||
* An image included as a direct descendant will fill the card's width. If you want to avoid this,
|
||||
* you can add the `md-image-no-fill` class to the parent element. The `<md-card-content>`
|
||||
* container will wrap text content and provide padding. An `<md-card-footer>` element can be
|
||||
* optionally included to put content flush against the bottom edge of the card.
|
||||
*
|
||||
* Action buttons can be included in an `<md-card-actions>` element, similar to `<md-dialog-actions>`.
|
||||
* You can then position buttons using layout attributes.
|
||||
*
|
||||
* Card is built with:
|
||||
* * `<md-card-header>` - Header for the card, holds avatar, text and squared image
|
||||
* - `<md-card-avatar>` - Card avatar
|
||||
* - `md-user-avatar` - Class for user image
|
||||
* - `<md-icon>`
|
||||
* - `<md-card-header-text>` - Contains elements for the card description
|
||||
* - `md-title` - Class for the card title
|
||||
* - `md-subhead` - Class for the card sub header
|
||||
* * `<img>` - Image for the card
|
||||
* * `<md-card-title>` - Card content title
|
||||
* - `<md-card-title-text>`
|
||||
* - `md-headline` - Class for the card content title
|
||||
* - `md-subhead` - Class for the card content sub header
|
||||
* - `<md-card-title-media>` - Squared image within the title
|
||||
* - `md-media-sm` - Class for small image
|
||||
* - `md-media-md` - Class for medium image
|
||||
* - `md-media-lg` - Class for large image
|
||||
* - `md-media-xl` - Class for extra large image
|
||||
* * `<md-card-content>` - Card content
|
||||
* * `<md-card-actions>` - Card actions
|
||||
* - `<md-card-icon-actions>` - Icon actions
|
||||
*
|
||||
* Cards have constant width and variable heights; where the maximum height is limited to what can
|
||||
* fit within a single view on a platform, but it can temporarily expand as needed.
|
||||
*
|
||||
* @usage
|
||||
* ### Card with optional footer
|
||||
* <hljs lang="html">
|
||||
* <md-card>
|
||||
* <img src="card-image.png" class="md-card-image" alt="image caption">
|
||||
* <md-card-content>
|
||||
* <h2>Card headline</h2>
|
||||
* <p>Card content</p>
|
||||
* </md-card-content>
|
||||
* <md-card-footer>
|
||||
* Card footer
|
||||
* </md-card-footer>
|
||||
* </md-card>
|
||||
* </hljs>
|
||||
*
|
||||
* ### Card with actions
|
||||
* <hljs lang="html">
|
||||
* <md-card>
|
||||
* <img src="card-image.png" class="md-card-image" alt="image caption">
|
||||
* <md-card-content>
|
||||
* <h2>Card headline</h2>
|
||||
* <p>Card content</p>
|
||||
* </md-card-content>
|
||||
* <md-card-actions layout="row" layout-align="end center">
|
||||
* <md-button>Action 1</md-button>
|
||||
* <md-button>Action 2</md-button>
|
||||
* </md-card-actions>
|
||||
* </md-card>
|
||||
* </hljs>
|
||||
*
|
||||
* ### Card with header, image, title actions and content
|
||||
* <hljs lang="html">
|
||||
* <md-card>
|
||||
* <md-card-header>
|
||||
* <md-card-avatar>
|
||||
* <img class="md-user-avatar" src="avatar.png"/>
|
||||
* </md-card-avatar>
|
||||
* <md-card-header-text>
|
||||
* <span class="md-title">Title</span>
|
||||
* <span class="md-subhead">Sub header</span>
|
||||
* </md-card-header-text>
|
||||
* </md-card-header>
|
||||
* <img ng-src="card-image.png" class="md-card-image" alt="image caption">
|
||||
* <md-card-title>
|
||||
* <md-card-title-text>
|
||||
* <span class="md-headline">Card headline</span>
|
||||
* <span class="md-subhead">Card subheader</span>
|
||||
* </md-card-title-text>
|
||||
* </md-card-title>
|
||||
* <md-card-actions layout="row" layout-align="start center">
|
||||
* <md-button>Action 1</md-button>
|
||||
* <md-button>Action 2</md-button>
|
||||
* <md-card-icon-actions>
|
||||
* <md-button class="md-icon-button" aria-label="icon">
|
||||
* <md-icon md-svg-icon="icon"></md-icon>
|
||||
* </md-button>
|
||||
* </md-card-icon-actions>
|
||||
* </md-card-actions>
|
||||
* <md-card-content>
|
||||
* <p>
|
||||
* Card content
|
||||
* </p>
|
||||
* </md-card-content>
|
||||
* </md-card>
|
||||
* </hljs>
|
||||
*/
|
||||
function mdCardDirective($mdTheming) {
|
||||
return {
|
||||
restrict: 'E',
|
||||
link: function ($scope, $element, attr) {
|
||||
$element.addClass('_md'); // private md component indicator for styling
|
||||
$mdTheming($element);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
ngmaterial.components.card = angular.module("material.components.card");
|
6
xstatic/pkg/angular_material/data/modules/closure/card/card.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/card/card.min.css
vendored
Executable file
File diff suppressed because one or more lines are too long
7
xstatic/pkg/angular_material/data/modules/closure/card/card.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/card/card.min.js
vendored
Executable file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/
|
||||
function mdCardDirective(e){return{restrict:"E",link:function(r,a,i){a.addClass("_md"),e(a)}}}goog.provide("ngmaterial.components.card"),goog.require("ngmaterial.core"),mdCardDirective.$inject=["$mdTheming"],angular.module("material.components.card",["material.core"]).directive("mdCard",mdCardDirective),ngmaterial.components.card=angular.module("material.components.card");
|
@ -0,0 +1,92 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-checkbox.md-THEME_NAME-theme .md-ripple {
|
||||
color: '{{accent-A700}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme.md-checked .md-ripple {
|
||||
color: '{{background-600}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme.md-checked.md-focused .md-container:before {
|
||||
background-color: '{{accent-color-0.26}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme .md-ink-ripple {
|
||||
color: '{{foreground-2}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme.md-checked .md-ink-ripple {
|
||||
color: '{{accent-color-0.87}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not(.md-checked) .md-icon {
|
||||
border-color: '{{foreground-2}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme.md-checked .md-icon {
|
||||
background-color: '{{accent-color-0.87}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme.md-checked .md-icon:after {
|
||||
border-color: '{{accent-contrast-0.87}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ripple {
|
||||
color: '{{primary-600}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ripple {
|
||||
color: '{{background-600}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ink-ripple {
|
||||
color: '{{foreground-2}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple {
|
||||
color: '{{primary-color-0.87}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary:not(.md-checked) .md-icon {
|
||||
border-color: '{{foreground-2}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon {
|
||||
background-color: '{{primary-color-0.87}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked.md-focused .md-container:before {
|
||||
background-color: '{{primary-color-0.26}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon:after {
|
||||
border-color: '{{primary-contrast-0.87}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-indeterminate[disabled] .md-container {
|
||||
color: '{{foreground-3}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ripple {
|
||||
color: '{{warn-600}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ink-ripple {
|
||||
color: '{{foreground-2}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple {
|
||||
color: '{{warn-color-0.87}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn:not(.md-checked) .md-icon {
|
||||
border-color: '{{foreground-2}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon {
|
||||
background-color: '{{warn-color-0.87}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked.md-focused:not([disabled]) .md-container:before {
|
||||
background-color: '{{warn-color-0.26}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon:after {
|
||||
border-color: '{{background-200}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme[disabled]:not(.md-checked) .md-icon {
|
||||
border-color: '{{foreground-3}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon {
|
||||
background-color: '{{foreground-3}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon:after {
|
||||
border-color: '{{background-200}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme[disabled] .md-icon:after {
|
||||
border-color: '{{foreground-3}}'; }
|
||||
|
||||
md-checkbox.md-THEME_NAME-theme[disabled] .md-label {
|
||||
color: '{{foreground-3}}'; }
|
6
xstatic/pkg/angular_material/data/modules/closure/checkbox/checkbox-default-theme.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/checkbox/checkbox-default-theme.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-checkbox.md-THEME_NAME-theme .md-ripple{color:"{{accent-A700}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-ripple{color:"{{background-600}}"}md-checkbox.md-THEME_NAME-theme.md-checked.md-focused .md-container:before{background-color:"{{accent-color-0.26}}"}md-checkbox.md-THEME_NAME-theme .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-ink-ripple{color:"{{accent-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-icon{background-color:"{{accent-color-0.87}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-icon:after{border-color:"{{accent-contrast-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ripple{color:"{{primary-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ripple{color:"{{background-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple{color:"{{primary-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon{background-color:"{{primary-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked.md-focused .md-container:before{background-color:"{{primary-color-0.26}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon:after{border-color:"{{primary-contrast-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-indeterminate[disabled] .md-container{color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ripple{color:"{{warn-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple{color:"{{warn-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon{background-color:"{{warn-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked.md-focused:not([disabled]) .md-container:before{background-color:"{{warn-color-0.26}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon:after{border-color:"{{background-200}}"}md-checkbox.md-THEME_NAME-theme[disabled]:not(.md-checked) .md-icon{border-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon{background-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon:after{border-color:"{{background-200}}"}md-checkbox.md-THEME_NAME-theme[disabled] .md-icon:after{border-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled] .md-label{color:"{{foreground-3}}"}
|
150
xstatic/pkg/angular_material/data/modules/closure/checkbox/checkbox.css
Executable file
150
xstatic/pkg/angular_material/data/modules/closure/checkbox/checkbox.css
Executable file
@ -0,0 +1,150 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
.md-inline-form md-checkbox {
|
||||
margin: 19px 0 18px; }
|
||||
|
||||
md-checkbox {
|
||||
box-sizing: border-box;
|
||||
display: inline-block;
|
||||
margin-bottom: 16px;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
position: relative;
|
||||
min-width: 20px;
|
||||
min-height: 20px;
|
||||
margin-left: 0;
|
||||
margin-right: 16px; }
|
||||
[dir=rtl] md-checkbox {
|
||||
margin-left: 16px; }
|
||||
[dir=rtl] md-checkbox {
|
||||
margin-right: 0; }
|
||||
md-checkbox:last-of-type {
|
||||
margin-left: 0;
|
||||
margin-right: 0; }
|
||||
md-checkbox.md-focused:not([disabled]) .md-container:before {
|
||||
left: -8px;
|
||||
top: -8px;
|
||||
right: -8px;
|
||||
bottom: -8px; }
|
||||
md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before {
|
||||
background-color: rgba(0, 0, 0, 0.12); }
|
||||
md-checkbox.md-align-top-left > div.md-container {
|
||||
top: 12px; }
|
||||
md-checkbox .md-container {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
-webkit-transform: translateY(-50%);
|
||||
transform: translateY(-50%);
|
||||
box-sizing: border-box;
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
left: 0;
|
||||
right: auto; }
|
||||
[dir=rtl] md-checkbox .md-container {
|
||||
left: auto; }
|
||||
[dir=rtl] md-checkbox .md-container {
|
||||
right: 0; }
|
||||
md-checkbox .md-container:before {
|
||||
box-sizing: border-box;
|
||||
background-color: transparent;
|
||||
border-radius: 50%;
|
||||
content: '';
|
||||
position: absolute;
|
||||
display: block;
|
||||
height: auto;
|
||||
left: 0;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
-webkit-transition: all 0.5s;
|
||||
transition: all 0.5s;
|
||||
width: auto; }
|
||||
md-checkbox .md-container:after {
|
||||
box-sizing: border-box;
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: -10px;
|
||||
right: -10px;
|
||||
bottom: -10px;
|
||||
left: -10px; }
|
||||
md-checkbox .md-container .md-ripple-container {
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: auto;
|
||||
height: auto;
|
||||
left: -15px;
|
||||
top: -15px;
|
||||
right: -15px;
|
||||
bottom: -15px; }
|
||||
md-checkbox .md-icon {
|
||||
box-sizing: border-box;
|
||||
-webkit-transition: 240ms;
|
||||
transition: 240ms;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-width: 2px;
|
||||
border-style: solid;
|
||||
border-radius: 2px; }
|
||||
md-checkbox.md-checked .md-icon {
|
||||
border-color: transparent; }
|
||||
md-checkbox.md-checked .md-icon:after {
|
||||
box-sizing: border-box;
|
||||
-webkit-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
position: absolute;
|
||||
left: 4.66667px;
|
||||
top: 0.22222px;
|
||||
display: table;
|
||||
width: 6.66667px;
|
||||
height: 13.33333px;
|
||||
border-width: 2px;
|
||||
border-style: solid;
|
||||
border-top: 0;
|
||||
border-left: 0;
|
||||
content: ''; }
|
||||
md-checkbox[disabled] {
|
||||
cursor: default; }
|
||||
md-checkbox.md-indeterminate .md-icon:after {
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
-webkit-transform: translate(-50%, -50%);
|
||||
transform: translate(-50%, -50%);
|
||||
display: table;
|
||||
width: 12px;
|
||||
height: 2px;
|
||||
border-width: 2px;
|
||||
border-style: solid;
|
||||
border-top: 0;
|
||||
border-left: 0;
|
||||
content: ''; }
|
||||
md-checkbox .md-label {
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
white-space: normal;
|
||||
-webkit-user-select: text;
|
||||
-moz-user-select: text;
|
||||
-ms-user-select: text;
|
||||
user-select: text;
|
||||
margin-left: 30px;
|
||||
margin-right: 0; }
|
||||
[dir=rtl] md-checkbox .md-label {
|
||||
margin-left: 0; }
|
||||
[dir=rtl] md-checkbox .md-label {
|
||||
margin-right: 30px; }
|
219
xstatic/pkg/angular_material/data/modules/closure/checkbox/checkbox.js
vendored
Executable file
219
xstatic/pkg/angular_material/data/modules/closure/checkbox/checkbox.js
vendored
Executable file
@ -0,0 +1,219 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
goog.provide('ngmaterial.components.checkbox');
|
||||
goog.require('ngmaterial.core');
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.components.checkbox
|
||||
* @description Checkbox module!
|
||||
*/
|
||||
MdCheckboxDirective['$inject'] = ["inputDirective", "$mdAria", "$mdConstant", "$mdTheming", "$mdUtil", "$mdInteraction"];
|
||||
angular
|
||||
.module('material.components.checkbox', ['material.core'])
|
||||
.directive('mdCheckbox', MdCheckboxDirective);
|
||||
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name mdCheckbox
|
||||
* @module material.components.checkbox
|
||||
* @restrict E
|
||||
*
|
||||
* @description
|
||||
* The checkbox directive is used like the normal [angular checkbox](https://docs.angularjs.org/api/ng/input/input%5Bcheckbox%5D).
|
||||
*
|
||||
* As per the [material design spec](http://www.google.com/design/spec/style/color.html#color-color-schemes)
|
||||
* the checkbox is in the accent color by default. The primary color palette may be used with
|
||||
* the `md-primary` class.
|
||||
*
|
||||
* @param {string} ng-model Assignable angular expression to data-bind to.
|
||||
* @param {string=} name Property name of the form under which the control is published.
|
||||
* @param {expression=} ng-true-value The value to which the expression should be set when selected.
|
||||
* @param {expression=} ng-false-value The value to which the expression should be set when not selected.
|
||||
* @param {string=} ng-change AngularJS expression to be executed when input changes due to user interaction with the input element.
|
||||
* @param {boolean=} md-no-ink Use of attribute indicates use of ripple ink effects
|
||||
* @param {string=} aria-label Adds label to checkbox for accessibility.
|
||||
* Defaults to checkbox's text. If no default text is found, a warning will be logged.
|
||||
* @param {expression=} md-indeterminate This determines when the checkbox should be rendered as 'indeterminate'.
|
||||
* If a truthy expression or no value is passed in the checkbox renders in the md-indeterminate state.
|
||||
* If falsy expression is passed in it just looks like a normal unchecked checkbox.
|
||||
* The indeterminate, checked, and unchecked states are mutually exclusive. A box cannot be in any two states at the same time.
|
||||
* Adding the 'md-indeterminate' attribute overrides any checked/unchecked rendering logic.
|
||||
* When using the 'md-indeterminate' attribute use 'ng-checked' to define rendering logic instead of using 'ng-model'.
|
||||
* @param {expression=} ng-checked If this expression evaluates as truthy, the 'md-checked' css class is added to the checkbox and it
|
||||
* will appear checked.
|
||||
*
|
||||
* @usage
|
||||
* <hljs lang="html">
|
||||
* <md-checkbox ng-model="isChecked" aria-label="Finished?">
|
||||
* Finished ?
|
||||
* </md-checkbox>
|
||||
*
|
||||
* <md-checkbox md-no-ink ng-model="hasInk" aria-label="No Ink Effects">
|
||||
* No Ink Effects
|
||||
* </md-checkbox>
|
||||
*
|
||||
* <md-checkbox ng-disabled="true" ng-model="isDisabled" aria-label="Disabled">
|
||||
* Disabled
|
||||
* </md-checkbox>
|
||||
*
|
||||
* </hljs>
|
||||
*
|
||||
*/
|
||||
function MdCheckboxDirective(inputDirective, $mdAria, $mdConstant, $mdTheming, $mdUtil, $mdInteraction) {
|
||||
inputDirective = inputDirective[0];
|
||||
|
||||
return {
|
||||
restrict: 'E',
|
||||
transclude: true,
|
||||
require: ['^?mdInputContainer', '?ngModel', '?^form'],
|
||||
priority: $mdConstant.BEFORE_NG_ARIA,
|
||||
template:
|
||||
'<div class="md-container" md-ink-ripple md-ink-ripple-checkbox>' +
|
||||
'<div class="md-icon"></div>' +
|
||||
'</div>' +
|
||||
'<div ng-transclude class="md-label"></div>',
|
||||
compile: compile
|
||||
};
|
||||
|
||||
// **********************************************************
|
||||
// Private Methods
|
||||
// **********************************************************
|
||||
|
||||
function compile (tElement, tAttrs) {
|
||||
tAttrs.$set('tabindex', tAttrs.tabindex || '0');
|
||||
tAttrs.$set('type', 'checkbox');
|
||||
tAttrs.$set('role', tAttrs.type);
|
||||
|
||||
return {
|
||||
pre: function(scope, element) {
|
||||
// Attach a click handler during preLink, in order to immediately stop propagation
|
||||
// (especially for ng-click) when the checkbox is disabled.
|
||||
element.on('click', function(e) {
|
||||
if (this.hasAttribute('disabled')) {
|
||||
e.stopImmediatePropagation();
|
||||
}
|
||||
});
|
||||
},
|
||||
post: postLink
|
||||
};
|
||||
|
||||
function postLink(scope, element, attr, ctrls) {
|
||||
var isIndeterminate;
|
||||
var containerCtrl = ctrls[0];
|
||||
var ngModelCtrl = ctrls[1] || $mdUtil.fakeNgModel();
|
||||
var formCtrl = ctrls[2];
|
||||
|
||||
if (containerCtrl) {
|
||||
var isErrorGetter = containerCtrl.isErrorGetter || function() {
|
||||
return ngModelCtrl.$invalid && (ngModelCtrl.$touched || (formCtrl && formCtrl.$submitted));
|
||||
};
|
||||
|
||||
containerCtrl.input = element;
|
||||
|
||||
scope.$watch(isErrorGetter, containerCtrl.setInvalid);
|
||||
}
|
||||
|
||||
$mdTheming(element);
|
||||
|
||||
// Redirect focus events to the root element, because IE11 is always focusing the container element instead
|
||||
// of the md-checkbox element. This causes issues when using ngModelOptions: `updateOnBlur`
|
||||
element.children().on('focus', function() {
|
||||
element.focus();
|
||||
});
|
||||
|
||||
if ($mdUtil.parseAttributeBoolean(attr.mdIndeterminate)) {
|
||||
setIndeterminateState();
|
||||
scope.$watch(attr.mdIndeterminate, setIndeterminateState);
|
||||
}
|
||||
|
||||
if (attr.ngChecked) {
|
||||
scope.$watch(scope.$eval.bind(scope, attr.ngChecked), function(value) {
|
||||
ngModelCtrl.$setViewValue(value);
|
||||
ngModelCtrl.$render();
|
||||
});
|
||||
}
|
||||
|
||||
$$watchExpr('ngDisabled', 'tabindex', {
|
||||
true: '-1',
|
||||
false: attr.tabindex
|
||||
});
|
||||
|
||||
$mdAria.expectWithText(element, 'aria-label');
|
||||
|
||||
// Reuse the original input[type=checkbox] directive from AngularJS core.
|
||||
// This is a bit hacky as we need our own event listener and own render
|
||||
// function.
|
||||
inputDirective.link.pre(scope, {
|
||||
on: angular.noop,
|
||||
0: {}
|
||||
}, attr, [ngModelCtrl]);
|
||||
|
||||
element.on('click', listener)
|
||||
.on('keypress', keypressHandler)
|
||||
.on('focus', function() {
|
||||
if ($mdInteraction.getLastInteractionType() === 'keyboard') {
|
||||
element.addClass('md-focused');
|
||||
}
|
||||
})
|
||||
.on('blur', function() {
|
||||
element.removeClass('md-focused');
|
||||
});
|
||||
|
||||
ngModelCtrl.$render = render;
|
||||
|
||||
function $$watchExpr(expr, htmlAttr, valueOpts) {
|
||||
if (attr[expr]) {
|
||||
scope.$watch(attr[expr], function(val) {
|
||||
if (valueOpts[val]) {
|
||||
element.attr(htmlAttr, valueOpts[val]);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function keypressHandler(ev) {
|
||||
var keyCode = ev.which || ev.keyCode;
|
||||
if (keyCode === $mdConstant.KEY_CODE.SPACE || keyCode === $mdConstant.KEY_CODE.ENTER) {
|
||||
ev.preventDefault();
|
||||
element.addClass('md-focused');
|
||||
listener(ev);
|
||||
}
|
||||
}
|
||||
|
||||
function listener(ev) {
|
||||
// skipToggle boolean is used by the switch directive to prevent the click event
|
||||
// when releasing the drag. There will be always a click if releasing the drag over the checkbox
|
||||
if (element[0].hasAttribute('disabled') || scope.skipToggle) {
|
||||
return;
|
||||
}
|
||||
|
||||
scope.$apply(function() {
|
||||
// Toggle the checkbox value...
|
||||
var viewValue = attr.ngChecked && attr.ngClick ? attr.checked : !ngModelCtrl.$viewValue;
|
||||
|
||||
ngModelCtrl.$setViewValue(viewValue, ev && ev.type);
|
||||
ngModelCtrl.$render();
|
||||
});
|
||||
}
|
||||
|
||||
function render() {
|
||||
// Cast the $viewValue to a boolean since it could be undefined
|
||||
element.toggleClass('md-checked', !!ngModelCtrl.$viewValue && !isIndeterminate);
|
||||
}
|
||||
|
||||
function setIndeterminateState(newValue) {
|
||||
isIndeterminate = newValue !== false;
|
||||
if (isIndeterminate) {
|
||||
element.attr('aria-checked', 'mixed');
|
||||
}
|
||||
element.toggleClass('md-indeterminate', isIndeterminate);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ngmaterial.components.checkbox = angular.module("material.components.checkbox");
|
6
xstatic/pkg/angular_material/data/modules/closure/checkbox/checkbox.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/checkbox/checkbox.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px;margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto;right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:"";position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;-webkit-transition:all .5s;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:"";position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;-webkit-transition:.24s;transition:.24s;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;-webkit-transform:rotate(45deg);transform:rotate(45deg);position:absolute;left:4.66667px;top:.22222px;display:table;width:6.66667px;height:13.33333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:""}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:""}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0;margin-right:30px}
|
7
xstatic/pkg/angular_material/data/modules/closure/checkbox/checkbox.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/checkbox/checkbox.min.js
vendored
Executable file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/
|
||||
function MdCheckboxDirective(e,t,n,i,o,c){function a(a,r){function d(a,r,d,l){function s(e,t,n){d[e]&&a.$watch(d[e],function(e){n[e]&&r.attr(t,n[e])})}function u(e){var t=e.which||e.keyCode;t!==n.KEY_CODE.SPACE&&t!==n.KEY_CODE.ENTER||(e.preventDefault(),r.addClass("md-focused"),m(e))}function m(e){r[0].hasAttribute("disabled")||a.skipToggle||a.$apply(function(){var t=d.ngChecked&&d.ngClick?d.checked:!k.$viewValue;k.$setViewValue(t,e&&e.type),k.$render()})}function p(){r.toggleClass("md-checked",!!k.$viewValue&&!f)}function h(e){f=e!==!1,f&&r.attr("aria-checked","mixed"),r.toggleClass("md-indeterminate",f)}var f,g=l[0],k=l[1]||o.fakeNgModel(),b=l[2];if(g){var $=g.isErrorGetter||function(){return k.$invalid&&(k.$touched||b&&b.$submitted)};g.input=r,a.$watch($,g.setInvalid)}i(r),r.children().on("focus",function(){r.focus()}),o.parseAttributeBoolean(d.mdIndeterminate)&&(h(),a.$watch(d.mdIndeterminate,h)),d.ngChecked&&a.$watch(a.$eval.bind(a,d.ngChecked),function(e){k.$setViewValue(e),k.$render()}),s("ngDisabled","tabindex",{"true":"-1","false":d.tabindex}),t.expectWithText(r,"aria-label"),e.link.pre(a,{on:angular.noop,0:{}},d,[k]),r.on("click",m).on("keypress",u).on("focus",function(){"keyboard"===c.getLastInteractionType()&&r.addClass("md-focused")}).on("blur",function(){r.removeClass("md-focused")}),k.$render=p}return r.$set("tabindex",r.tabindex||"0"),r.$set("type","checkbox"),r.$set("role",r.type),{pre:function(e,t){t.on("click",function(e){this.hasAttribute("disabled")&&e.stopImmediatePropagation()})},post:d}}return e=e[0],{restrict:"E",transclude:!0,require:["^?mdInputContainer","?ngModel","?^form"],priority:n.BEFORE_NG_ARIA,template:'<div class="md-container" md-ink-ripple md-ink-ripple-checkbox><div class="md-icon"></div></div><div ng-transclude class="md-label"></div>',compile:a}}goog.provide("ngmaterial.components.checkbox"),goog.require("ngmaterial.core"),MdCheckboxDirective.$inject=["inputDirective","$mdAria","$mdConstant","$mdTheming","$mdUtil","$mdInteraction"],angular.module("material.components.checkbox",["material.core"]).directive("mdCheckbox",MdCheckboxDirective),ngmaterial.components.checkbox=angular.module("material.components.checkbox");
|
@ -0,0 +1,42 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-chips.md-THEME_NAME-theme .md-chips {
|
||||
box-shadow: 0 1px '{{foreground-4}}'; }
|
||||
md-chips.md-THEME_NAME-theme .md-chips.md-focused {
|
||||
box-shadow: 0 2px '{{primary-color}}'; }
|
||||
md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input {
|
||||
color: '{{foreground-1}}'; }
|
||||
md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::-webkit-input-placeholder {
|
||||
color: '{{foreground-3}}'; }
|
||||
md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input:-moz-placeholder {
|
||||
color: '{{foreground-3}}'; }
|
||||
md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::-moz-placeholder {
|
||||
color: '{{foreground-3}}'; }
|
||||
md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input:-ms-input-placeholder {
|
||||
color: '{{foreground-3}}'; }
|
||||
md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::-webkit-input-placeholder {
|
||||
color: '{{foreground-3}}'; }
|
||||
|
||||
md-chips.md-THEME_NAME-theme md-chip {
|
||||
background: '{{background-300}}';
|
||||
color: '{{background-800}}'; }
|
||||
md-chips.md-THEME_NAME-theme md-chip md-icon {
|
||||
color: '{{background-700}}'; }
|
||||
md-chips.md-THEME_NAME-theme md-chip.md-focused {
|
||||
background: '{{primary-color}}';
|
||||
color: '{{primary-contrast}}'; }
|
||||
md-chips.md-THEME_NAME-theme md-chip.md-focused md-icon {
|
||||
color: '{{primary-contrast}}'; }
|
||||
md-chips.md-THEME_NAME-theme md-chip._md-chip-editing {
|
||||
background: transparent;
|
||||
color: '{{background-800}}'; }
|
||||
|
||||
md-chips.md-THEME_NAME-theme md-chip-remove .md-button md-icon path {
|
||||
fill: '{{background-500}}'; }
|
||||
|
||||
.md-contact-suggestion span.md-contact-email {
|
||||
color: '{{background-400}}'; }
|
6
xstatic/pkg/angular_material/data/modules/closure/chips/chips-default-theme.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/chips/chips-default-theme.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-chips.md-THEME_NAME-theme .md-chips{box-shadow:0 1px "{{foreground-4}}"}md-chips.md-THEME_NAME-theme .md-chips.md-focused{box-shadow:0 2px "{{primary-color}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input{color:"{{foreground-1}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input:-moz-placeholder,md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::-moz-placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input:-ms-input-placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::-webkit-input-placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme md-chip{background:"{{background-300}}";color:"{{background-800}}"}md-chips.md-THEME_NAME-theme md-chip md-icon{color:"{{background-700}}"}md-chips.md-THEME_NAME-theme md-chip.md-focused{background:"{{primary-color}}";color:"{{primary-contrast}}"}md-chips.md-THEME_NAME-theme md-chip.md-focused md-icon{color:"{{primary-contrast}}"}md-chips.md-THEME_NAME-theme md-chip._md-chip-editing{background:transparent;color:"{{background-800}}"}md-chips.md-THEME_NAME-theme md-chip-remove .md-button md-icon path{fill:"{{background-500}}"}.md-contact-suggestion span.md-contact-email{color:"{{background-400}}"}
|
186
xstatic/pkg/angular_material/data/modules/closure/chips/chips.css
Executable file
186
xstatic/pkg/angular_material/data/modules/closure/chips/chips.css
Executable file
@ -0,0 +1,186 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
.md-contact-chips .md-chips md-chip {
|
||||
padding: 0 25px 0 0; }
|
||||
[dir=rtl] .md-contact-chips .md-chips md-chip {
|
||||
padding: 0 0 0 25px; }
|
||||
.md-contact-chips .md-chips md-chip .md-contact-avatar {
|
||||
float: left; }
|
||||
[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar {
|
||||
float: right; }
|
||||
.md-contact-chips .md-chips md-chip .md-contact-avatar img {
|
||||
height: 32px;
|
||||
border-radius: 16px; }
|
||||
.md-contact-chips .md-chips md-chip .md-contact-name {
|
||||
display: inline-block;
|
||||
height: 32px;
|
||||
margin-left: 8px; }
|
||||
[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name {
|
||||
margin-left: auto;
|
||||
margin-right: 8px; }
|
||||
|
||||
.md-contact-suggestion {
|
||||
height: 56px; }
|
||||
.md-contact-suggestion img {
|
||||
height: 40px;
|
||||
border-radius: 20px;
|
||||
margin-top: 8px; }
|
||||
.md-contact-suggestion .md-contact-name {
|
||||
margin-left: 8px;
|
||||
width: 120px; }
|
||||
[dir=rtl] .md-contact-suggestion .md-contact-name {
|
||||
margin-left: auto;
|
||||
margin-right: 8px; }
|
||||
.md-contact-suggestion .md-contact-name, .md-contact-suggestion .md-contact-email {
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis; }
|
||||
|
||||
.md-contact-chips-suggestions li {
|
||||
height: 100%; }
|
||||
|
||||
.md-chips {
|
||||
display: block;
|
||||
font-family: Roboto, "Helvetica Neue", sans-serif;
|
||||
font-size: 16px;
|
||||
padding: 0 0 8px 3px;
|
||||
vertical-align: middle; }
|
||||
.md-chips:after {
|
||||
content: '';
|
||||
display: table;
|
||||
clear: both; }
|
||||
[dir=rtl] .md-chips {
|
||||
padding: 0 3px 8px 0; }
|
||||
.md-chips.md-readonly .md-chip-input-container {
|
||||
min-height: 32px; }
|
||||
.md-chips:not(.md-readonly) {
|
||||
cursor: text; }
|
||||
.md-chips.md-removable md-chip {
|
||||
padding-right: 22px; }
|
||||
[dir=rtl] .md-chips.md-removable md-chip {
|
||||
padding-right: 0;
|
||||
padding-left: 22px; }
|
||||
.md-chips.md-removable md-chip .md-chip-content {
|
||||
padding-right: 4px; }
|
||||
[dir=rtl] .md-chips.md-removable md-chip .md-chip-content {
|
||||
padding-right: 0;
|
||||
padding-left: 4px; }
|
||||
.md-chips md-chip {
|
||||
cursor: default;
|
||||
border-radius: 16px;
|
||||
display: block;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
margin: 8px 8px 0 0;
|
||||
padding: 0 12px 0 12px;
|
||||
float: left;
|
||||
box-sizing: border-box;
|
||||
max-width: 100%;
|
||||
position: relative; }
|
||||
[dir=rtl] .md-chips md-chip {
|
||||
margin: 8px 0 0 8px; }
|
||||
[dir=rtl] .md-chips md-chip {
|
||||
float: right; }
|
||||
.md-chips md-chip .md-chip-content {
|
||||
display: block;
|
||||
float: left;
|
||||
white-space: nowrap;
|
||||
max-width: 100%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis; }
|
||||
[dir=rtl] .md-chips md-chip .md-chip-content {
|
||||
float: right; }
|
||||
.md-chips md-chip .md-chip-content:focus {
|
||||
outline: none; }
|
||||
.md-chips md-chip._md-chip-content-edit-is-enabled {
|
||||
-webkit-user-select: none;
|
||||
/* webkit (safari, chrome) browsers */
|
||||
-moz-user-select: none;
|
||||
/* mozilla browsers */
|
||||
-khtml-user-select: none;
|
||||
/* webkit (konqueror) browsers */
|
||||
-ms-user-select: none;
|
||||
/* IE10+ */ }
|
||||
.md-chips md-chip .md-chip-remove-container {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
line-height: 22px; }
|
||||
[dir=rtl] .md-chips md-chip .md-chip-remove-container {
|
||||
right: auto;
|
||||
left: 0; }
|
||||
.md-chips md-chip .md-chip-remove {
|
||||
text-align: center;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
background: transparent;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
margin: 0;
|
||||
position: relative; }
|
||||
.md-chips md-chip .md-chip-remove md-icon {
|
||||
height: 18px;
|
||||
width: 18px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
-webkit-transform: translate3d(-50%, -50%, 0);
|
||||
transform: translate3d(-50%, -50%, 0); }
|
||||
.md-chips .md-chip-input-container {
|
||||
display: block;
|
||||
line-height: 32px;
|
||||
margin: 8px 8px 0 0;
|
||||
padding: 0;
|
||||
float: left; }
|
||||
[dir=rtl] .md-chips .md-chip-input-container {
|
||||
margin: 8px 0 0 8px; }
|
||||
[dir=rtl] .md-chips .md-chip-input-container {
|
||||
float: right; }
|
||||
.md-chips .md-chip-input-container input:not([type]), .md-chips .md-chip-input-container input[type="email"], .md-chips .md-chip-input-container input[type="number"], .md-chips .md-chip-input-container input[type="tel"], .md-chips .md-chip-input-container input[type="url"], .md-chips .md-chip-input-container input[type="text"] {
|
||||
border: 0;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
padding: 0; }
|
||||
.md-chips .md-chip-input-container input:not([type]):focus, .md-chips .md-chip-input-container input[type="email"]:focus, .md-chips .md-chip-input-container input[type="number"]:focus, .md-chips .md-chip-input-container input[type="tel"]:focus, .md-chips .md-chip-input-container input[type="url"]:focus, .md-chips .md-chip-input-container input[type="text"]:focus {
|
||||
outline: none; }
|
||||
.md-chips .md-chip-input-container md-autocomplete, .md-chips .md-chip-input-container md-autocomplete-wrap {
|
||||
background: transparent;
|
||||
height: 32px; }
|
||||
.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap {
|
||||
box-shadow: none; }
|
||||
.md-chips .md-chip-input-container md-autocomplete input {
|
||||
position: relative; }
|
||||
.md-chips .md-chip-input-container input {
|
||||
border: 0;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
padding: 0; }
|
||||
.md-chips .md-chip-input-container input:focus {
|
||||
outline: none; }
|
||||
.md-chips .md-chip-input-container md-autocomplete, .md-chips .md-chip-input-container md-autocomplete-wrap {
|
||||
height: 32px; }
|
||||
.md-chips .md-chip-input-container md-autocomplete {
|
||||
box-shadow: none; }
|
||||
.md-chips .md-chip-input-container md-autocomplete input {
|
||||
position: relative; }
|
||||
.md-chips .md-chip-input-container:not(:first-child) {
|
||||
margin: 8px 8px 0 0; }
|
||||
[dir=rtl] .md-chips .md-chip-input-container:not(:first-child) {
|
||||
margin: 8px 0 0 8px; }
|
||||
.md-chips .md-chip-input-container input {
|
||||
background: transparent;
|
||||
border-width: 0; }
|
||||
.md-chips md-autocomplete button {
|
||||
display: none; }
|
||||
|
||||
@media screen and (-ms-high-contrast: active) {
|
||||
.md-chip-input-container,
|
||||
md-chip {
|
||||
border: 1px solid #fff; }
|
||||
.md-chip-input-container md-autocomplete {
|
||||
border: none; } }
|
1802
xstatic/pkg/angular_material/data/modules/closure/chips/chips.js
vendored
Executable file
1802
xstatic/pkg/angular_material/data/modules/closure/chips/chips.js
vendored
Executable file
File diff suppressed because it is too large
Load Diff
6
xstatic/pkg/angular_material/data/modules/closure/chips/chips.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/chips/chips.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,Helvetica Neue,sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:"";display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px;float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:none}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:transparent;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px;float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:none}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:transparent}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:none}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:transparent;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}
|
7
xstatic/pkg/angular_material/data/modules/closure/chips/chips.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/chips/chips.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
410
xstatic/pkg/angular_material/data/modules/closure/colors/colors.js
vendored
Executable file
410
xstatic/pkg/angular_material/data/modules/closure/colors/colors.js
vendored
Executable file
@ -0,0 +1,410 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
goog.provide('ngmaterial.components.colors');
|
||||
goog.require('ngmaterial.core');
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Use a RegExp to check if the `md-colors="<expression>"` is static string
|
||||
* or one that should be observed and dynamically interpolated.
|
||||
*/
|
||||
MdColorsDirective['$inject'] = ["$mdColors", "$mdUtil", "$log", "$parse"];
|
||||
MdColorsService['$inject'] = ["$mdTheming", "$mdUtil", "$log"];
|
||||
var STATIC_COLOR_EXPRESSION = /^{((\s|,)*?["'a-zA-Z-]+?\s*?:\s*?('|")[a-zA-Z0-9-.]*('|"))+\s*}$/;
|
||||
var colorPalettes = null;
|
||||
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.components.colors
|
||||
*
|
||||
* @description
|
||||
* Define $mdColors service and a `md-colors=""` attribute directive
|
||||
*/
|
||||
angular
|
||||
.module('material.components.colors', ['material.core'])
|
||||
.directive('mdColors', MdColorsDirective)
|
||||
.service('$mdColors', MdColorsService);
|
||||
|
||||
/**
|
||||
* @ngdoc service
|
||||
* @name $mdColors
|
||||
* @module material.components.colors
|
||||
*
|
||||
* @description
|
||||
* With only defining themes, one couldn't get non AngularJS Material elements colored with Material colors,
|
||||
* `$mdColors` service is used by the md-color directive to convert the 1..n color expressions to RGBA values and will apply
|
||||
* those values to element as CSS property values.
|
||||
*
|
||||
* @usage
|
||||
* <hljs lang="js">
|
||||
* angular.controller('myCtrl', function ($mdColors) {
|
||||
* var color = $mdColors.getThemeColor('myTheme-red-200-0.5');
|
||||
* ...
|
||||
* });
|
||||
* </hljs>
|
||||
*
|
||||
*/
|
||||
function MdColorsService($mdTheming, $mdUtil, $log) {
|
||||
colorPalettes = colorPalettes || Object.keys($mdTheming.PALETTES);
|
||||
|
||||
// Publish service instance
|
||||
return {
|
||||
applyThemeColors: applyThemeColors,
|
||||
getThemeColor: getThemeColor,
|
||||
hasTheme: hasTheme
|
||||
};
|
||||
|
||||
// ********************************************
|
||||
// Internal Methods
|
||||
// ********************************************
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
* @name $mdColors#applyThemeColors
|
||||
*
|
||||
* @description
|
||||
* Gets a color json object, keys are css properties and values are string of the wanted color
|
||||
* Then calculate the rgba() values based on the theme color parts
|
||||
*
|
||||
* @param {DOMElement} element the element to apply the styles on.
|
||||
* @param {object} colorExpression json object, keys are css properties and values are string of the wanted color,
|
||||
* for example: `{color: 'red-A200-0.3'}`.
|
||||
*
|
||||
* @usage
|
||||
* <hljs lang="js">
|
||||
* app.directive('myDirective', function($mdColors) {
|
||||
* return {
|
||||
* ...
|
||||
* link: function (scope, elem) {
|
||||
* $mdColors.applyThemeColors(elem, {color: 'red'});
|
||||
* }
|
||||
* }
|
||||
* });
|
||||
* </hljs>
|
||||
*/
|
||||
function applyThemeColors(element, colorExpression) {
|
||||
try {
|
||||
if (colorExpression) {
|
||||
// Assign the calculate RGBA color values directly as inline CSS
|
||||
element.css(interpolateColors(colorExpression));
|
||||
}
|
||||
} catch (e) {
|
||||
$log.error(e.message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
* @name $mdColors#getThemeColor
|
||||
*
|
||||
* @description
|
||||
* Get parsed color from expression
|
||||
*
|
||||
* @param {string} expression string of a color expression (for instance `'red-700-0.8'`)
|
||||
*
|
||||
* @returns {string} a css color expression (for instance `rgba(211, 47, 47, 0.8)`)
|
||||
*
|
||||
* @usage
|
||||
* <hljs lang="js">
|
||||
* angular.controller('myCtrl', function ($mdColors) {
|
||||
* var color = $mdColors.getThemeColor('myTheme-red-200-0.5');
|
||||
* ...
|
||||
* });
|
||||
* </hljs>
|
||||
*/
|
||||
function getThemeColor(expression) {
|
||||
var color = extractColorOptions(expression);
|
||||
|
||||
return parseColor(color);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the parsed color
|
||||
* @param color hashmap of color definitions
|
||||
* @param contrast whether use contrast color for foreground
|
||||
* @returns rgba color string
|
||||
*/
|
||||
function parseColor(color, contrast) {
|
||||
contrast = contrast || false;
|
||||
var rgbValues = $mdTheming.PALETTES[color.palette][color.hue];
|
||||
|
||||
rgbValues = contrast ? rgbValues.contrast : rgbValues.value;
|
||||
|
||||
return $mdUtil.supplant('rgba({0}, {1}, {2}, {3})',
|
||||
[rgbValues[0], rgbValues[1], rgbValues[2], rgbValues[3] || color.opacity]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert the color expression into an object with scope-interpolated values
|
||||
* Then calculate the rgba() values based on the theme color parts
|
||||
*
|
||||
* @results Hashmap of CSS properties with associated `rgba( )` string vales
|
||||
*
|
||||
*
|
||||
*/
|
||||
function interpolateColors(themeColors) {
|
||||
var rgbColors = {};
|
||||
|
||||
var hasColorProperty = themeColors.hasOwnProperty('color');
|
||||
|
||||
angular.forEach(themeColors, function (value, key) {
|
||||
var color = extractColorOptions(value);
|
||||
var hasBackground = key.indexOf('background') > -1;
|
||||
|
||||
rgbColors[key] = parseColor(color);
|
||||
if (hasBackground && !hasColorProperty) {
|
||||
rgbColors.color = parseColor(color, true);
|
||||
}
|
||||
});
|
||||
|
||||
return rgbColors;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if expression has defined theme
|
||||
* e.g.
|
||||
* 'myTheme-primary' => true
|
||||
* 'red-800' => false
|
||||
*/
|
||||
function hasTheme(expression) {
|
||||
return angular.isDefined($mdTheming.THEMES[expression.split('-')[0]]);
|
||||
}
|
||||
|
||||
/**
|
||||
* For the evaluated expression, extract the color parts into a hash map
|
||||
*/
|
||||
function extractColorOptions(expression) {
|
||||
var parts = expression.split('-');
|
||||
var hasTheme = angular.isDefined($mdTheming.THEMES[parts[0]]);
|
||||
var theme = hasTheme ? parts.splice(0, 1)[0] : $mdTheming.defaultTheme();
|
||||
|
||||
return {
|
||||
theme: theme,
|
||||
palette: extractPalette(parts, theme),
|
||||
hue: extractHue(parts, theme),
|
||||
opacity: parts[2] || 1
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate the theme palette name
|
||||
*/
|
||||
function extractPalette(parts, theme) {
|
||||
// If the next section is one of the palettes we assume it's a two word palette
|
||||
// Two word palette can be also written in camelCase, forming camelCase to dash-case
|
||||
|
||||
var isTwoWord = parts.length > 1 && colorPalettes.indexOf(parts[1]) !== -1;
|
||||
var palette = parts[0].replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
|
||||
|
||||
if (isTwoWord) palette = parts[0] + '-' + parts.splice(1, 1);
|
||||
|
||||
if (colorPalettes.indexOf(palette) === -1) {
|
||||
// If the palette is not in the palette list it's one of primary/accent/warn/background
|
||||
var scheme = $mdTheming.THEMES[theme].colors[palette];
|
||||
if (!scheme) {
|
||||
throw new Error($mdUtil.supplant('mdColors: couldn\'t find \'{palette}\' in the palettes.', {palette: palette}));
|
||||
}
|
||||
palette = scheme.name;
|
||||
}
|
||||
|
||||
return palette;
|
||||
}
|
||||
|
||||
function extractHue(parts, theme) {
|
||||
var themeColors = $mdTheming.THEMES[theme].colors;
|
||||
|
||||
if (parts[1] === 'hue') {
|
||||
var hueNumber = parseInt(parts.splice(2, 1)[0], 10);
|
||||
|
||||
if (hueNumber < 1 || hueNumber > 3) {
|
||||
throw new Error($mdUtil.supplant('mdColors: \'hue-{hueNumber}\' is not a valid hue, can be only \'hue-1\', \'hue-2\' and \'hue-3\'', {hueNumber: hueNumber}));
|
||||
}
|
||||
parts[1] = 'hue-' + hueNumber;
|
||||
|
||||
if (!(parts[0] in themeColors)) {
|
||||
throw new Error($mdUtil.supplant('mdColors: \'hue-x\' can only be used with [{availableThemes}], but was used with \'{usedTheme}\'', {
|
||||
availableThemes: Object.keys(themeColors).join(', '),
|
||||
usedTheme: parts[0]
|
||||
}));
|
||||
}
|
||||
|
||||
return themeColors[parts[0]].hues[parts[1]];
|
||||
}
|
||||
|
||||
return parts[1] || themeColors[parts[0] in themeColors ? parts[0] : 'primary'].hues['default'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name mdColors
|
||||
* @module material.components.colors
|
||||
*
|
||||
* @restrict A
|
||||
*
|
||||
* @description
|
||||
* `mdColors` directive will apply the theme-based color expression as RGBA CSS style values.
|
||||
*
|
||||
* The format will be similar to our color defining in the scss files:
|
||||
*
|
||||
* ## `[?theme]-[palette]-[?hue]-[?opacity]`
|
||||
* - [theme] - default value is the default theme
|
||||
* - [palette] - can be either palette name or primary/accent/warn/background
|
||||
* - [hue] - default is 500 (hue-x can be used with primary/accent/warn/background)
|
||||
* - [opacity] - default is 1
|
||||
*
|
||||
* > `?` indicates optional parameter
|
||||
*
|
||||
* @usage
|
||||
* <hljs lang="html">
|
||||
* <div md-colors="{background: 'myTheme-accent-900-0.43'}">
|
||||
* <div md-colors="{color: 'red-A100', 'border-color': 'primary-600'}">
|
||||
* <span>Color demo</span>
|
||||
* </div>
|
||||
* </div>
|
||||
* </hljs>
|
||||
*
|
||||
* `mdColors` directive will automatically watch for changes in the expression if it recognizes an interpolation
|
||||
* expression or a function. For performance options, you can use `::` prefix to the `md-colors` expression
|
||||
* to indicate a one-time data binding.
|
||||
* <hljs lang="html">
|
||||
* <md-card md-colors="::{background: '{{theme}}-primary-700'}">
|
||||
* </md-card>
|
||||
* </hljs>
|
||||
*
|
||||
*/
|
||||
function MdColorsDirective($mdColors, $mdUtil, $log, $parse) {
|
||||
return {
|
||||
restrict: 'A',
|
||||
require: ['^?mdTheme'],
|
||||
compile: function (tElem, tAttrs) {
|
||||
var shouldWatch = shouldColorsWatch();
|
||||
|
||||
return function (scope, element, attrs, ctrl) {
|
||||
var mdThemeController = ctrl[0];
|
||||
|
||||
var lastColors = {};
|
||||
|
||||
var parseColors = function (theme) {
|
||||
if (typeof theme !== 'string') {
|
||||
theme = '';
|
||||
}
|
||||
|
||||
if (!attrs.mdColors) {
|
||||
attrs.mdColors = '{}';
|
||||
}
|
||||
|
||||
/**
|
||||
* Json.parse() does not work because the keys are not quoted;
|
||||
* use $parse to convert to a hash map
|
||||
*/
|
||||
var colors = $parse(attrs.mdColors)(scope);
|
||||
|
||||
/**
|
||||
* If mdTheme is defined up the DOM tree
|
||||
* we add mdTheme theme to colors who doesn't specified a theme
|
||||
*
|
||||
* # example
|
||||
* <hljs lang="html">
|
||||
* <div md-theme="myTheme">
|
||||
* <div md-colors="{background: 'primary-600'}">
|
||||
* <span md-colors="{background: 'mySecondTheme-accent-200'}">Color demo</span>
|
||||
* </div>
|
||||
* </div>
|
||||
* </hljs>
|
||||
*
|
||||
* 'primary-600' will be 'myTheme-primary-600',
|
||||
* but 'mySecondTheme-accent-200' will stay the same cause it has a theme prefix
|
||||
*/
|
||||
if (mdThemeController) {
|
||||
Object.keys(colors).forEach(function (prop) {
|
||||
var color = colors[prop];
|
||||
if (!$mdColors.hasTheme(color)) {
|
||||
colors[prop] = (theme || mdThemeController.$mdTheme) + '-' + color;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
cleanElement(colors);
|
||||
|
||||
return colors;
|
||||
};
|
||||
|
||||
var cleanElement = function (colors) {
|
||||
if (!angular.equals(colors, lastColors)) {
|
||||
var keys = Object.keys(lastColors);
|
||||
|
||||
if (lastColors.background && !keys.color) {
|
||||
keys.push('color');
|
||||
}
|
||||
|
||||
keys.forEach(function (key) {
|
||||
element.css(key, '');
|
||||
});
|
||||
}
|
||||
|
||||
lastColors = colors;
|
||||
};
|
||||
|
||||
/**
|
||||
* Registering for mgTheme changes and asking mdTheme controller run our callback whenever a theme changes
|
||||
*/
|
||||
var unregisterChanges = angular.noop;
|
||||
|
||||
if (mdThemeController) {
|
||||
unregisterChanges = mdThemeController.registerChanges(function (theme) {
|
||||
$mdColors.applyThemeColors(element, parseColors(theme));
|
||||
});
|
||||
}
|
||||
|
||||
scope.$on('$destroy', function () {
|
||||
unregisterChanges();
|
||||
});
|
||||
|
||||
try {
|
||||
if (shouldWatch) {
|
||||
scope.$watch(parseColors, angular.bind(this,
|
||||
$mdColors.applyThemeColors, element
|
||||
), true);
|
||||
}
|
||||
else {
|
||||
$mdColors.applyThemeColors(element, parseColors());
|
||||
}
|
||||
|
||||
}
|
||||
catch (e) {
|
||||
$log.error(e.message);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
function shouldColorsWatch() {
|
||||
// Simulate 1x binding and mark mdColorsWatch == false
|
||||
var rawColorExpression = tAttrs.mdColors;
|
||||
var bindOnce = rawColorExpression.indexOf('::') > -1;
|
||||
var isStatic = bindOnce ? true : STATIC_COLOR_EXPRESSION.test(tAttrs.mdColors);
|
||||
|
||||
// Remove it for the postLink...
|
||||
tAttrs.mdColors = rawColorExpression.replace('::', '');
|
||||
|
||||
var hasWatchAttr = angular.isDefined(tAttrs.mdColorsWatch);
|
||||
|
||||
return (bindOnce || isStatic) ? false :
|
||||
hasWatchAttr ? $mdUtil.parseAttributeBoolean(tAttrs.mdColorsWatch) : true;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
||||
})();
|
||||
|
||||
ngmaterial.components.colors = angular.module("material.components.colors");
|
7
xstatic/pkg/angular_material/data/modules/closure/colors/colors.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/colors/colors.min.js
vendored
Executable file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/
|
||||
goog.provide("ngmaterial.components.colors"),goog.require("ngmaterial.core"),function(){"use strict";function e(e,r,o){function t(e,r){try{r&&e.css(s(r))}catch(n){o.error(n.message)}}function a(e){var r=i(e);return l(r)}function l(o,n){n=n||!1;var t=e.PALETTES[o.palette][o.hue];return t=n?t.contrast:t.value,r.supplant("rgba({0}, {1}, {2}, {3})",[t[0],t[1],t[2],t[3]||o.opacity])}function s(e){var r={},o=e.hasOwnProperty("color");return angular.forEach(e,function(e,n){var t=i(e),a=n.indexOf("background")>-1;r[n]=l(t),a&&!o&&(r.color=l(t,!0))}),r}function u(r){return angular.isDefined(e.THEMES[r.split("-")[0]])}function i(r){var o=r.split("-"),n=angular.isDefined(e.THEMES[o[0]]),t=n?o.splice(0,1)[0]:e.defaultTheme();return{theme:t,palette:c(o,t),hue:m(o,t),opacity:o[2]||1}}function c(o,t){var a=o.length>1&&n.indexOf(o[1])!==-1,l=o[0].replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();if(a&&(l=o[0]+"-"+o.splice(1,1)),n.indexOf(l)===-1){var s=e.THEMES[t].colors[l];if(!s)throw new Error(r.supplant("mdColors: couldn't find '{palette}' in the palettes.",{palette:l}));l=s.name}return l}function m(o,n){var t=e.THEMES[n].colors;if("hue"===o[1]){var a=parseInt(o.splice(2,1)[0],10);if(a<1||a>3)throw new Error(r.supplant("mdColors: 'hue-{hueNumber}' is not a valid hue, can be only 'hue-1', 'hue-2' and 'hue-3'",{hueNumber:a}));if(o[1]="hue-"+a,!(o[0]in t))throw new Error(r.supplant("mdColors: 'hue-x' can only be used with [{availableThemes}], but was used with '{usedTheme}'",{availableThemes:Object.keys(t).join(", "),usedTheme:o[0]}));return t[o[0]].hues[o[1]]}return o[1]||t[o[0]in t?o[0]:"primary"].hues["default"]}return n=n||Object.keys(e.PALETTES),{applyThemeColors:t,getThemeColor:a,hasTheme:u}}function r(e,r,n,t){return{restrict:"A",require:["^?mdTheme"],compile:function(a,l){function s(){var e=l.mdColors,n=e.indexOf("::")>-1,t=!!n||o.test(l.mdColors);l.mdColors=e.replace("::","");var a=angular.isDefined(l.mdColorsWatch);return!n&&!t&&(!a||r.parseAttributeBoolean(l.mdColorsWatch))}var u=s();return function(r,o,a,l){var s=l[0],i={},c=function(o){"string"!=typeof o&&(o=""),a.mdColors||(a.mdColors="{}");var n=t(a.mdColors)(r);return s&&Object.keys(n).forEach(function(r){var t=n[r];e.hasTheme(t)||(n[r]=(o||s.$mdTheme)+"-"+t)}),m(n),n},m=function(e){if(!angular.equals(e,i)){var r=Object.keys(i);i.background&&!r.color&&r.push("color"),r.forEach(function(e){o.css(e,"")})}i=e},h=angular.noop;s&&(h=s.registerChanges(function(r){e.applyThemeColors(o,c(r))})),r.$on("$destroy",function(){h()});try{u?r.$watch(c,angular.bind(this,e.applyThemeColors,o),!0):e.applyThemeColors(o,c())}catch(d){n.error(d.message)}}}}}r.$inject=["$mdColors","$mdUtil","$log","$parse"],e.$inject=["$mdTheming","$mdUtil","$log"];var o=/^{((\s|,)*?["'a-zA-Z-]+?\s*?:\s*?('|")[a-zA-Z0-9-.]*('|"))+\s*}$/,n=null;angular.module("material.components.colors",["material.core"]).directive("mdColors",r).service("$mdColors",e)}(),ngmaterial.components.colors=angular.module("material.components.colors");
|
@ -0,0 +1,9 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-content.md-THEME_NAME-theme {
|
||||
color: '{{foreground-1}}';
|
||||
background-color: '{{background-default}}'; }
|
6
xstatic/pkg/angular_material/data/modules/closure/content/content-default-theme.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/content/content-default-theme.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-content.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-default}}"}
|
20
xstatic/pkg/angular_material/data/modules/closure/content/content.css
Executable file
20
xstatic/pkg/angular_material/data/modules/closure/content/content.css
Executable file
@ -0,0 +1,20 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-content {
|
||||
display: block;
|
||||
position: relative;
|
||||
overflow: auto;
|
||||
-webkit-overflow-scrolling: touch; }
|
||||
md-content[md-scroll-y] {
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden; }
|
||||
md-content[md-scroll-x] {
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden; }
|
||||
@media print {
|
||||
md-content {
|
||||
overflow: visible !important; } }
|
102
xstatic/pkg/angular_material/data/modules/closure/content/content.js
vendored
Executable file
102
xstatic/pkg/angular_material/data/modules/closure/content/content.js
vendored
Executable file
@ -0,0 +1,102 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
goog.provide('ngmaterial.components.content');
|
||||
goog.require('ngmaterial.core');
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.components.content
|
||||
*
|
||||
* @description
|
||||
* Scrollable content
|
||||
*/
|
||||
mdContentDirective['$inject'] = ["$mdTheming"];
|
||||
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. It achieves
|
||||
* this by setting the CSS `overflow` property to `auto` so that content can properly scroll.
|
||||
*
|
||||
* In general, `<md-content>` components are not designed to be nested inside one another. If
|
||||
* possible, it is better to make them siblings. This often results in a better user experience as
|
||||
* having nested scrollbars may confuse the user.
|
||||
*
|
||||
* ## Troubleshooting
|
||||
*
|
||||
* In some cases, you may wish to apply the `md-no-momentum` class to ensure that Safari's
|
||||
* momentum scrolling is disabled. Momentum scrolling can cause flickering issues while scrolling
|
||||
* SVG icons and some other components.
|
||||
*
|
||||
* Additionally, we now also offer the `md-no-flicker` class which can be applied to any element
|
||||
* and uses a Webkit-specific filter of `blur(0px)` that forces GPU rendering of all elements
|
||||
* inside (which eliminates the flicker on iOS devices).
|
||||
*
|
||||
* _<b>Note:</b> Forcing an element to render on the GPU can have unintended side-effects, especially
|
||||
* related to the z-index of elements. Please use with caution and only on the elements needed._
|
||||
*
|
||||
* @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) {
|
||||
element.addClass('_md'); // private md component indicator for styling
|
||||
|
||||
$mdTheming(element);
|
||||
scope.$broadcast('$mdContentLoaded', element);
|
||||
|
||||
iosScrollFix(element[0]);
|
||||
}
|
||||
};
|
||||
|
||||
function ContentController($scope, $element) {
|
||||
this.$scope = $scope;
|
||||
this.$element = $element;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
ngmaterial.components.content = angular.module("material.components.content");
|
6
xstatic/pkg/angular_material/data/modules/closure/content/content.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/content/content.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}
|
7
xstatic/pkg/angular_material/data/modules/closure/content/content.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/content/content.min.js
vendored
Executable file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/
|
||||
function mdContentDirective(e){function o(e,o){this.$scope=e,this.$element=o}return{restrict:"E",controller:["$scope","$element",o],link:function(o,t){t.addClass("_md"),e(t),o.$broadcast("$mdContentLoaded",t),iosScrollFix(t[0])}}}function iosScrollFix(e){angular.element(e).on("$md.pressdown",function(o){"t"===o.pointer.type&&(o.$materialScrollFixed||(o.$materialScrollFixed=!0,0===e.scrollTop?e.scrollTop=1:e.scrollHeight===e.scrollTop+e.offsetHeight&&(e.scrollTop-=1)))})}goog.provide("ngmaterial.components.content"),goog.require("ngmaterial.core"),mdContentDirective.$inject=["$mdTheming"],angular.module("material.components.content",["material.core"]).directive("mdContent",mdContentDirective),ngmaterial.components.content=angular.module("material.components.content");
|
@ -0,0 +1,10 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
/* Only used with Theme processes */
|
||||
html.md-THEME_NAME-theme, body.md-THEME_NAME-theme {
|
||||
color: '{{foreground-1}}';
|
||||
background-color: '{{background-color}}'; }
|
6
xstatic/pkg/angular_material/data/modules/closure/core/core-default-theme.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/core/core-default-theme.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/body.md-THEME_NAME-theme,html.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-color}}"}
|
12791
xstatic/pkg/angular_material/data/modules/closure/core/core.css
Executable file
12791
xstatic/pkg/angular_material/data/modules/closure/core/core.css
Executable file
File diff suppressed because it is too large
Load Diff
8018
xstatic/pkg/angular_material/data/modules/closure/core/core.js
vendored
Executable file
8018
xstatic/pkg/angular_material/data/modules/closure/core/core.js
vendored
Executable file
File diff suppressed because one or more lines are too long
6
xstatic/pkg/angular_material/data/modules/closure/core/core.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/core/core.min.css
vendored
Executable file
File diff suppressed because one or more lines are too long
10
xstatic/pkg/angular_material/data/modules/closure/core/core.min.js
vendored
Executable file
10
xstatic/pkg/angular_material/data/modules/closure/core/core.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
4
xstatic/pkg/angular_material/data/modules/closure/core/default-theme.js
vendored
Executable file
4
xstatic/pkg/angular_material/data/modules/closure/core/default-theme.js
vendored
Executable file
File diff suppressed because one or more lines are too long
@ -0,0 +1,84 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
/** Theme styles for mdCalendar. */
|
||||
.md-calendar.md-THEME_NAME-theme {
|
||||
background: '{{background-A100}}';
|
||||
color: '{{background-A200-0.87}}'; }
|
||||
.md-calendar.md-THEME_NAME-theme tr:last-child td {
|
||||
border-bottom-color: '{{background-200}}'; }
|
||||
|
||||
.md-THEME_NAME-theme .md-calendar-day-header {
|
||||
background: '{{background-300}}';
|
||||
color: '{{background-A200-0.87}}'; }
|
||||
|
||||
.md-THEME_NAME-theme .md-calendar-date.md-calendar-date-today .md-calendar-date-selection-indicator {
|
||||
border: 1px solid '{{primary-500}}'; }
|
||||
|
||||
.md-THEME_NAME-theme .md-calendar-date.md-calendar-date-today.md-calendar-date-disabled {
|
||||
color: '{{primary-500-0.6}}'; }
|
||||
|
||||
.md-calendar-date.md-focus .md-THEME_NAME-theme .md-calendar-date-selection-indicator, .md-THEME_NAME-theme .md-calendar-date-selection-indicator:hover {
|
||||
background: '{{background-300}}'; }
|
||||
|
||||
.md-THEME_NAME-theme .md-calendar-date.md-calendar-selected-date .md-calendar-date-selection-indicator,
|
||||
.md-THEME_NAME-theme .md-calendar-date.md-focus.md-calendar-selected-date .md-calendar-date-selection-indicator {
|
||||
background: '{{primary-500}}';
|
||||
color: '{{primary-500-contrast}}';
|
||||
border-color: transparent; }
|
||||
|
||||
.md-THEME_NAME-theme .md-calendar-date-disabled,
|
||||
.md-THEME_NAME-theme .md-calendar-month-label-disabled {
|
||||
color: '{{background-A200-0.435}}'; }
|
||||
|
||||
/** Theme styles for mdDatepicker. */
|
||||
.md-THEME_NAME-theme .md-datepicker-input {
|
||||
color: '{{foreground-1}}'; }
|
||||
.md-THEME_NAME-theme .md-datepicker-input::-webkit-input-placeholder {
|
||||
color: '{{foreground-3}}'; }
|
||||
.md-THEME_NAME-theme .md-datepicker-input:-moz-placeholder {
|
||||
color: '{{foreground-3}}'; }
|
||||
.md-THEME_NAME-theme .md-datepicker-input::-moz-placeholder {
|
||||
color: '{{foreground-3}}'; }
|
||||
.md-THEME_NAME-theme .md-datepicker-input:-ms-input-placeholder {
|
||||
color: '{{foreground-3}}'; }
|
||||
.md-THEME_NAME-theme .md-datepicker-input::-webkit-input-placeholder {
|
||||
color: '{{foreground-3}}'; }
|
||||
|
||||
.md-THEME_NAME-theme .md-datepicker-input-container {
|
||||
border-bottom-color: '{{foreground-4}}'; }
|
||||
.md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused {
|
||||
border-bottom-color: '{{primary-color}}'; }
|
||||
.md-accent .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused {
|
||||
border-bottom-color: '{{accent-color}}'; }
|
||||
.md-warn .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused {
|
||||
border-bottom-color: '{{warn-A700}}'; }
|
||||
.md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-invalid {
|
||||
border-bottom-color: '{{warn-A700}}'; }
|
||||
|
||||
.md-THEME_NAME-theme .md-datepicker-calendar-pane {
|
||||
border-color: '{{background-hue-1}}'; }
|
||||
|
||||
.md-THEME_NAME-theme .md-datepicker-triangle-button .md-datepicker-expand-triangle {
|
||||
border-top-color: '{{foreground-2}}'; }
|
||||
|
||||
.md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon {
|
||||
color: '{{primary-color}}'; }
|
||||
|
||||
.md-THEME_NAME-theme .md-datepicker-open.md-accent .md-datepicker-calendar-icon, .md-accent .md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon {
|
||||
color: '{{accent-color}}'; }
|
||||
|
||||
.md-THEME_NAME-theme .md-datepicker-open.md-warn .md-datepicker-calendar-icon, .md-warn .md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon {
|
||||
color: '{{warn-A700}}'; }
|
||||
|
||||
.md-THEME_NAME-theme .md-datepicker-calendar {
|
||||
background: '{{background-A100}}'; }
|
||||
|
||||
.md-THEME_NAME-theme .md-datepicker-input-mask-opaque {
|
||||
box-shadow: 0 0 0 9999px "{{background-hue-1}}"; }
|
||||
|
||||
.md-THEME_NAME-theme .md-datepicker-open .md-datepicker-input-container {
|
||||
background: "{{background-hue-1}}"; }
|
6
xstatic/pkg/angular_material/data/modules/closure/datepicker/datepicker-default-theme.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/datepicker/datepicker-default-theme.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/.md-calendar.md-THEME_NAME-theme{background:"{{background-A100}}";color:"{{background-A200-0.87}}"}.md-calendar.md-THEME_NAME-theme tr:last-child td{border-bottom-color:"{{background-200}}"}.md-THEME_NAME-theme .md-calendar-day-header{background:"{{background-300}}";color:"{{background-A200-0.87}}"}.md-THEME_NAME-theme .md-calendar-date.md-calendar-date-today .md-calendar-date-selection-indicator{border:1px solid}.md-THEME_NAME-theme .md-calendar-date.md-calendar-date-today.md-calendar-date-disabled{color:"{{primary-500-0.6}}"}.md-calendar-date.md-focus .md-THEME_NAME-theme .md-calendar-date-selection-indicator,.md-THEME_NAME-theme .md-calendar-date-selection-indicator:hover{background:"{{background-300}}"}.md-THEME_NAME-theme .md-calendar-date.md-calendar-selected-date .md-calendar-date-selection-indicator,.md-THEME_NAME-theme .md-calendar-date.md-focus.md-calendar-selected-date .md-calendar-date-selection-indicator{background:"{{primary-500}}";color:"{{primary-500-contrast}}";border-color:transparent}.md-THEME_NAME-theme .md-calendar-date-disabled,.md-THEME_NAME-theme .md-calendar-month-label-disabled{color:"{{background-A200-0.435}}"}.md-THEME_NAME-theme .md-datepicker-input{color:"{{foreground-1}}"}.md-THEME_NAME-theme .md-datepicker-input:-moz-placeholder,.md-THEME_NAME-theme .md-datepicker-input::-moz-placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input:-ms-input-placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input::-webkit-input-placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input-container{border-bottom-color:"{{foreground-4}}"}.md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{primary-color}}"}.md-accent .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{accent-color}}"}.md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-invalid,.md-warn .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{warn-A700}}"}.md-THEME_NAME-theme .md-datepicker-calendar-pane{border-color:"{{background-hue-1}}"}.md-THEME_NAME-theme .md-datepicker-triangle-button .md-datepicker-expand-triangle{border-top-color:"{{foreground-2}}"}.md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon{color:"{{primary-color}}"}.md-accent .md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon,.md-THEME_NAME-theme .md-datepicker-open.md-accent .md-datepicker-calendar-icon{color:"{{accent-color}}"}.md-THEME_NAME-theme .md-datepicker-open.md-warn .md-datepicker-calendar-icon,.md-warn .md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon{color:"{{warn-A700}}"}.md-THEME_NAME-theme .md-datepicker-calendar{background:"{{background-A100}}"}.md-THEME_NAME-theme .md-datepicker-input-mask-opaque{box-shadow:0 0 0 9999px "{{background-hue-1}}"}.md-THEME_NAME-theme .md-datepicker-open .md-datepicker-input-container{background:"{{background-hue-1}}"}
|
311
xstatic/pkg/angular_material/data/modules/closure/datepicker/datepicker.css
Executable file
311
xstatic/pkg/angular_material/data/modules/closure/datepicker/datepicker.css
Executable file
@ -0,0 +1,311 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
/** Styles for mdCalendar. */
|
||||
md-calendar {
|
||||
font-size: 13px;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none; }
|
||||
|
||||
.md-calendar-scroll-mask {
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
height: 308px; }
|
||||
.md-calendar-scroll-mask .md-virtual-repeat-scroller {
|
||||
overflow-y: scroll;
|
||||
-webkit-overflow-scrolling: touch; }
|
||||
.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar {
|
||||
display: none; }
|
||||
.md-calendar-scroll-mask .md-virtual-repeat-offsetter {
|
||||
width: 100%; }
|
||||
|
||||
.md-calendar-scroll-container {
|
||||
box-shadow: inset -3px 3px 6px rgba(0, 0, 0, 0.2);
|
||||
display: inline-block;
|
||||
height: 308px;
|
||||
width: 346px; }
|
||||
|
||||
.md-calendar-date {
|
||||
height: 44px;
|
||||
width: 44px;
|
||||
text-align: center;
|
||||
padding: 0;
|
||||
border: none;
|
||||
box-sizing: content-box; }
|
||||
.md-calendar-date:first-child {
|
||||
padding-left: 16px; }
|
||||
[dir=rtl] .md-calendar-date:first-child {
|
||||
padding-left: 0;
|
||||
padding-right: 16px; }
|
||||
.md-calendar-date:last-child {
|
||||
padding-right: 16px; }
|
||||
[dir=rtl] .md-calendar-date:last-child {
|
||||
padding-right: 0;
|
||||
padding-left: 16px; }
|
||||
.md-calendar-date.md-calendar-date-disabled {
|
||||
cursor: default; }
|
||||
|
||||
.md-calendar-date-selection-indicator {
|
||||
-webkit-transition: background-color, color 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||
transition: background-color, color 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
line-height: 40px; }
|
||||
.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator {
|
||||
cursor: pointer; }
|
||||
|
||||
.md-calendar-month-label {
|
||||
height: 44px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
padding: 0 0 0 24px; }
|
||||
[dir=rtl] .md-calendar-month-label {
|
||||
padding: 0 24px 0 0; }
|
||||
md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled) {
|
||||
cursor: pointer; }
|
||||
.md-calendar-month-label md-icon {
|
||||
-webkit-transform: rotate(180deg);
|
||||
transform: rotate(180deg); }
|
||||
[dir=rtl] .md-calendar-month-label md-icon {
|
||||
-webkit-transform: none;
|
||||
transform: none; }
|
||||
.md-calendar-month-label span {
|
||||
vertical-align: middle; }
|
||||
|
||||
.md-calendar-day-header {
|
||||
table-layout: fixed;
|
||||
border-spacing: 0;
|
||||
border-collapse: collapse; }
|
||||
.md-calendar-day-header th {
|
||||
height: 40px;
|
||||
width: 44px;
|
||||
text-align: center;
|
||||
padding: 0;
|
||||
border: none;
|
||||
box-sizing: content-box;
|
||||
font-weight: normal; }
|
||||
.md-calendar-day-header th:first-child {
|
||||
padding-left: 16px; }
|
||||
[dir=rtl] .md-calendar-day-header th:first-child {
|
||||
padding-left: 0;
|
||||
padding-right: 16px; }
|
||||
.md-calendar-day-header th:last-child {
|
||||
padding-right: 16px; }
|
||||
[dir=rtl] .md-calendar-day-header th:last-child {
|
||||
padding-right: 0;
|
||||
padding-left: 16px; }
|
||||
|
||||
.md-calendar {
|
||||
table-layout: fixed;
|
||||
border-spacing: 0;
|
||||
border-collapse: collapse; }
|
||||
.md-calendar tr:last-child td {
|
||||
border-bottom-width: 1px;
|
||||
border-bottom-style: solid; }
|
||||
.md-calendar:first-child {
|
||||
border-top: 1px solid transparent; }
|
||||
.md-calendar tbody, .md-calendar td, .md-calendar tr {
|
||||
vertical-align: middle;
|
||||
box-sizing: content-box; }
|
||||
|
||||
/** Styles for mdDatepicker. */
|
||||
md-datepicker {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
vertical-align: middle; }
|
||||
|
||||
.md-inline-form md-datepicker {
|
||||
margin-top: 12px; }
|
||||
|
||||
.md-datepicker-button {
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
background: none;
|
||||
vertical-align: middle;
|
||||
position: relative; }
|
||||
.md-datepicker-button:before {
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
position: absolute;
|
||||
content: '';
|
||||
speak: none; }
|
||||
|
||||
.md-datepicker-input {
|
||||
font-size: 14px;
|
||||
box-sizing: border-box;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
min-width: 120px;
|
||||
max-width: 328px;
|
||||
padding: 0 0 5px; }
|
||||
.md-datepicker-input::-ms-clear {
|
||||
display: none; }
|
||||
|
||||
._md-datepicker-floating-label > md-datepicker {
|
||||
overflow: visible; }
|
||||
._md-datepicker-floating-label > md-datepicker .md-datepicker-input-container {
|
||||
border: none; }
|
||||
._md-datepicker-floating-label > md-datepicker .md-datepicker-button {
|
||||
float: left;
|
||||
margin-top: -12px;
|
||||
top: 9.5px; }
|
||||
[dir=rtl] ._md-datepicker-floating-label > md-datepicker .md-datepicker-button {
|
||||
float: right; }
|
||||
|
||||
._md-datepicker-floating-label .md-input {
|
||||
float: none; }
|
||||
|
||||
._md-datepicker-floating-label._md-datepicker-has-calendar-icon > label:not(.md-no-float):not(.md-container-ignore) {
|
||||
right: 18px;
|
||||
left: auto;
|
||||
width: calc(100% - 84px); }
|
||||
[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon > label:not(.md-no-float):not(.md-container-ignore) {
|
||||
right: auto; }
|
||||
[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon > label:not(.md-no-float):not(.md-container-ignore) {
|
||||
left: 18px; }
|
||||
|
||||
._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation {
|
||||
margin-left: 64px; }
|
||||
[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation {
|
||||
margin-left: auto;
|
||||
margin-right: 64px; }
|
||||
|
||||
._md-datepicker-has-triangle-icon {
|
||||
padding-right: 18px;
|
||||
margin-right: -18px; }
|
||||
[dir=rtl] ._md-datepicker-has-triangle-icon {
|
||||
padding-right: 0;
|
||||
padding-left: 18px; }
|
||||
[dir=rtl] ._md-datepicker-has-triangle-icon {
|
||||
margin-right: auto;
|
||||
margin-left: -18px; }
|
||||
|
||||
.md-datepicker-input-container {
|
||||
position: relative;
|
||||
border-bottom-width: 1px;
|
||||
border-bottom-style: solid;
|
||||
display: inline-block;
|
||||
width: auto; }
|
||||
.md-icon-button + .md-datepicker-input-container {
|
||||
margin-left: 12px; }
|
||||
[dir=rtl] .md-icon-button + .md-datepicker-input-container {
|
||||
margin-left: auto;
|
||||
margin-right: 12px; }
|
||||
.md-datepicker-input-container.md-datepicker-focused {
|
||||
border-bottom-width: 2px; }
|
||||
|
||||
.md-datepicker-is-showing .md-scroll-mask {
|
||||
z-index: 99; }
|
||||
|
||||
.md-datepicker-calendar-pane {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: -100%;
|
||||
z-index: 100;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
background: transparent;
|
||||
-webkit-transform: scale(0);
|
||||
transform: scale(0);
|
||||
-webkit-transform-origin: 0 0;
|
||||
transform-origin: 0 0;
|
||||
-webkit-transition: -webkit-transform 0.2s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||
transition: -webkit-transform 0.2s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||
transition: transform 0.2s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||
transition: transform 0.2s cubic-bezier(0.25, 0.8, 0.25, 1), -webkit-transform 0.2s cubic-bezier(0.25, 0.8, 0.25, 1); }
|
||||
.md-datepicker-calendar-pane.md-pane-open {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
|
||||
.md-datepicker-input-mask {
|
||||
height: 40px;
|
||||
width: 340px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
background: transparent;
|
||||
pointer-events: none;
|
||||
cursor: text; }
|
||||
|
||||
.md-datepicker-calendar {
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.2s cubic-bezier(0.5, 0, 0.25, 1);
|
||||
transition: opacity 0.2s cubic-bezier(0.5, 0, 0.25, 1); }
|
||||
.md-pane-open .md-datepicker-calendar {
|
||||
opacity: 1; }
|
||||
.md-datepicker-calendar md-calendar:focus {
|
||||
outline: none; }
|
||||
|
||||
.md-datepicker-expand-triangle {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
-webkit-transform: translate(-50%, -50%);
|
||||
transform: translate(-50%, -50%);
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 5px solid transparent;
|
||||
border-right: 5px solid transparent;
|
||||
border-top: 5px solid; }
|
||||
|
||||
.md-datepicker-triangle-button {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: -2.5px;
|
||||
-webkit-transform: translateX(45%);
|
||||
transform: translateX(45%); }
|
||||
[dir=rtl] .md-datepicker-triangle-button {
|
||||
right: auto;
|
||||
left: 0; }
|
||||
[dir=rtl] .md-datepicker-triangle-button {
|
||||
-webkit-transform: translateX(-45%);
|
||||
transform: translateX(-45%); }
|
||||
|
||||
.md-datepicker-triangle-button.md-button.md-icon-button {
|
||||
height: 36px;
|
||||
width: 36px;
|
||||
position: absolute;
|
||||
padding: 8px; }
|
||||
|
||||
md-datepicker[disabled] .md-datepicker-input-container {
|
||||
border-bottom-color: transparent; }
|
||||
|
||||
md-datepicker[disabled] .md-datepicker-triangle-button {
|
||||
display: none; }
|
||||
|
||||
.md-datepicker-open {
|
||||
overflow: hidden; }
|
||||
.md-datepicker-open .md-datepicker-input-container,
|
||||
.md-datepicker-open input.md-input {
|
||||
border-bottom-color: transparent; }
|
||||
.md-datepicker-open .md-datepicker-triangle-button,
|
||||
.md-datepicker-open.md-input-has-value > label,
|
||||
.md-datepicker-open.md-input-has-placeholder > label {
|
||||
display: none; }
|
||||
|
||||
.md-datepicker-pos-adjusted .md-datepicker-input-mask {
|
||||
display: none; }
|
||||
|
||||
.md-datepicker-calendar-pane .md-calendar {
|
||||
-webkit-transform: translateY(-85px);
|
||||
transform: translateY(-85px);
|
||||
-webkit-transition: -webkit-transform 0.65s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||
transition: -webkit-transform 0.65s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||
transition: transform 0.65s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||
transition: transform 0.65s cubic-bezier(0.25, 0.8, 0.25, 1), -webkit-transform 0.65s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||
-webkit-transition-delay: 0.125s;
|
||||
transition-delay: 0.125s; }
|
||||
|
||||
.md-datepicker-calendar-pane.md-pane-open .md-calendar {
|
||||
-webkit-transform: translateY(0);
|
||||
transform: translateY(0); }
|
3058
xstatic/pkg/angular_material/data/modules/closure/datepicker/datepicker.js
vendored
Executable file
3058
xstatic/pkg/angular_material/data/modules/closure/datepicker/datepicker.js
vendored
Executable file
File diff suppressed because it is too large
Load Diff
6
xstatic/pkg/angular_material/data/modules/closure/datepicker/datepicker.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/datepicker/datepicker.min.css
vendored
Executable file
File diff suppressed because one or more lines are too long
8
xstatic/pkg/angular_material/data/modules/closure/datepicker/datepicker.min.js
vendored
Executable file
8
xstatic/pkg/angular_material/data/modules/closure/datepicker/datepicker.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
@ -0,0 +1,12 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-dialog.md-THEME_NAME-theme {
|
||||
border-radius: 4px;
|
||||
background-color: '{{background-hue-1}}';
|
||||
color: '{{foreground-1}}'; }
|
||||
md-dialog.md-THEME_NAME-theme.md-content-overflow .md-actions, md-dialog.md-THEME_NAME-theme.md-content-overflow md-dialog-actions {
|
||||
border-top-color: '{{foreground-4}}'; }
|
6
xstatic/pkg/angular_material/data/modules/closure/dialog/dialog-default-theme.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/dialog/dialog-default-theme.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-dialog.md-THEME_NAME-theme{border-radius:4px;background-color:"{{background-hue-1}}";color:"{{foreground-1}}"}md-dialog.md-THEME_NAME-theme.md-content-overflow .md-actions,md-dialog.md-THEME_NAME-theme.md-content-overflow md-dialog-actions{border-top-color:"{{foreground-4}}"}
|
131
xstatic/pkg/angular_material/data/modules/closure/dialog/dialog.css
Executable file
131
xstatic/pkg/angular_material/data/modules/closure/dialog/dialog.css
Executable file
@ -0,0 +1,131 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
.md-dialog-is-showing {
|
||||
max-height: 100%; }
|
||||
|
||||
.md-dialog-container {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-pack: center;
|
||||
-webkit-justify-content: center;
|
||||
justify-content: center;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 80;
|
||||
overflow: hidden; }
|
||||
|
||||
md-dialog {
|
||||
opacity: 0;
|
||||
min-width: 240px;
|
||||
max-width: 80%;
|
||||
max-height: 80%;
|
||||
position: relative;
|
||||
overflow: auto;
|
||||
box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
flex-direction: column; }
|
||||
md-dialog.md-transition-in {
|
||||
opacity: 1;
|
||||
-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);
|
||||
-webkit-transform: translate(0, 0) scale(1);
|
||||
transform: translate(0, 0) scale(1); }
|
||||
md-dialog.md-transition-out {
|
||||
opacity: 0;
|
||||
-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);
|
||||
-webkit-transform: translate(0, 100%) scale(0.2);
|
||||
transform: translate(0, 100%) scale(0.2); }
|
||||
md-dialog > form {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
flex-direction: column;
|
||||
overflow: auto; }
|
||||
md-dialog .md-dialog-content {
|
||||
padding: 24px; }
|
||||
md-dialog md-dialog-content {
|
||||
-webkit-box-ordinal-group: 2;
|
||||
-webkit-order: 1;
|
||||
order: 1;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
flex-direction: column;
|
||||
overflow: auto;
|
||||
-webkit-overflow-scrolling: touch; }
|
||||
md-dialog md-dialog-content:not([layout=row]) > *:first-child:not(.md-subheader) {
|
||||
margin-top: 0; }
|
||||
md-dialog md-dialog-content:focus {
|
||||
outline: none; }
|
||||
md-dialog md-dialog-content .md-subheader {
|
||||
margin: 0; }
|
||||
md-dialog md-dialog-content .md-dialog-content-body {
|
||||
width: 100%; }
|
||||
md-dialog md-dialog-content .md-prompt-input-container {
|
||||
width: 100%;
|
||||
box-sizing: border-box; }
|
||||
md-dialog .md-actions, md-dialog md-dialog-actions {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-ordinal-group: 3;
|
||||
-webkit-order: 2;
|
||||
order: 2;
|
||||
box-sizing: border-box;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
-webkit-box-pack: end;
|
||||
-webkit-justify-content: flex-end;
|
||||
justify-content: flex-end;
|
||||
margin-bottom: 0;
|
||||
padding-right: 8px;
|
||||
padding-left: 16px;
|
||||
min-height: 52px;
|
||||
overflow: hidden; }
|
||||
[dir=rtl] md-dialog .md-actions, [dir=rtl] md-dialog md-dialog-actions {
|
||||
padding-right: 16px; }
|
||||
[dir=rtl] md-dialog .md-actions, [dir=rtl] md-dialog md-dialog-actions {
|
||||
padding-left: 8px; }
|
||||
md-dialog .md-actions .md-button, md-dialog md-dialog-actions .md-button {
|
||||
margin-bottom: 8px;
|
||||
margin-left: 8px;
|
||||
margin-right: 0;
|
||||
margin-top: 8px; }
|
||||
[dir=rtl] md-dialog .md-actions .md-button, [dir=rtl] md-dialog md-dialog-actions .md-button {
|
||||
margin-left: 0; }
|
||||
[dir=rtl] md-dialog .md-actions .md-button, [dir=rtl] md-dialog md-dialog-actions .md-button {
|
||||
margin-right: 8px; }
|
||||
md-dialog.md-content-overflow .md-actions, md-dialog.md-content-overflow md-dialog-actions {
|
||||
border-top-width: 1px;
|
||||
border-top-style: solid; }
|
||||
|
||||
@media screen and (-ms-high-contrast: active) {
|
||||
md-dialog {
|
||||
border: 1px solid #fff; } }
|
||||
|
||||
@media (max-width: 959px) {
|
||||
md-dialog.md-dialog-fullscreen {
|
||||
min-height: 100%;
|
||||
min-width: 100%;
|
||||
border-radius: 0; } }
|
1305
xstatic/pkg/angular_material/data/modules/closure/dialog/dialog.js
vendored
Executable file
1305
xstatic/pkg/angular_material/data/modules/closure/dialog/dialog.js
vendored
Executable file
File diff suppressed because it is too large
Load Diff
6
xstatic/pkg/angular_material/data/modules/closure/dialog/dialog.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/dialog/dialog.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/.md-dialog-is-showing{max-height:100%}.md-dialog-container{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}.md-dialog-container,md-dialog{display:-webkit-box;display:-webkit-flex;display:flex}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}md-dialog.md-transition-in{opacity:1;-webkit-transform:translate(0,0) scale(1);transform:translate(0,0) scale(1)}md-dialog.md-transition-in,md-dialog.md-transition-out{-webkit-transition:all .4s cubic-bezier(.25,.8,.25,1);transition:all .4s cubic-bezier(.25,.8,.25,1)}md-dialog.md-transition-out{opacity:0;-webkit-transform:translate(0,100%) scale(.2);transform:translate(0,100%) scale(.2)}md-dialog>form{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{-webkit-box-ordinal-group:2;-webkit-order:1;order:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:none}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-ordinal-group:3;-webkit-order:2;order:2;box-sizing:border-box;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px;padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin:8px 0 8px 8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0;margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}
|
7
xstatic/pkg/angular_material/data/modules/closure/dialog/dialog.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/dialog/dialog.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
@ -0,0 +1,16 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-divider.md-THEME_NAME-theme {
|
||||
border-top-color: '{{foreground-4}}'; }
|
||||
|
||||
.layout-row > md-divider.md-THEME_NAME-theme,
|
||||
.layout-xs-row > md-divider.md-THEME_NAME-theme, .layout-gt-xs-row > md-divider.md-THEME_NAME-theme,
|
||||
.layout-sm-row > md-divider.md-THEME_NAME-theme, .layout-gt-sm-row > md-divider.md-THEME_NAME-theme,
|
||||
.layout-md-row > md-divider.md-THEME_NAME-theme, .layout-gt-md-row > md-divider.md-THEME_NAME-theme,
|
||||
.layout-lg-row > md-divider.md-THEME_NAME-theme, .layout-gt-lg-row > md-divider.md-THEME_NAME-theme,
|
||||
.layout-xl-row > md-divider.md-THEME_NAME-theme {
|
||||
border-right-color: '{{foreground-4}}'; }
|
6
xstatic/pkg/angular_material/data/modules/closure/divider/divider-default-theme.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/divider/divider-default-theme.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-divider.md-THEME_NAME-theme{border-top-color:"{{foreground-4}}"}.layout-gt-lg-row>md-divider.md-THEME_NAME-theme,.layout-gt-md-row>md-divider.md-THEME_NAME-theme,.layout-gt-sm-row>md-divider.md-THEME_NAME-theme,.layout-gt-xs-row>md-divider.md-THEME_NAME-theme,.layout-lg-row>md-divider.md-THEME_NAME-theme,.layout-md-row>md-divider.md-THEME_NAME-theme,.layout-row>md-divider.md-THEME_NAME-theme,.layout-sm-row>md-divider.md-THEME_NAME-theme,.layout-xl-row>md-divider.md-THEME_NAME-theme,.layout-xs-row>md-divider.md-THEME_NAME-theme{border-right-color:"{{foreground-4}}"}
|
26
xstatic/pkg/angular_material/data/modules/closure/divider/divider.css
Executable file
26
xstatic/pkg/angular_material/data/modules/closure/divider/divider.css
Executable file
@ -0,0 +1,26 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-divider {
|
||||
display: block;
|
||||
border-top-width: 1px;
|
||||
border-top-style: solid;
|
||||
margin: 0; }
|
||||
md-divider[md-inset] {
|
||||
margin-left: 80px; }
|
||||
[dir=rtl] md-divider[md-inset] {
|
||||
margin-left: auto;
|
||||
margin-right: 80px; }
|
||||
|
||||
.layout-row > md-divider,
|
||||
.layout-xs-row > md-divider, .layout-gt-xs-row > md-divider,
|
||||
.layout-sm-row > md-divider, .layout-gt-sm-row > md-divider,
|
||||
.layout-md-row > md-divider, .layout-gt-md-row > md-divider,
|
||||
.layout-lg-row > md-divider, .layout-gt-lg-row > md-divider,
|
||||
.layout-xl-row > md-divider {
|
||||
border-top-width: 0;
|
||||
border-right-width: 1px;
|
||||
border-right-style: solid; }
|
45
xstatic/pkg/angular_material/data/modules/closure/divider/divider.js
vendored
Executable file
45
xstatic/pkg/angular_material/data/modules/closure/divider/divider.js
vendored
Executable file
@ -0,0 +1,45 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
goog.provide('ngmaterial.components.divider');
|
||||
goog.require('ngmaterial.core');
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.components.divider
|
||||
* @description Divider module!
|
||||
*/
|
||||
MdDividerDirective['$inject'] = ["$mdTheming"];
|
||||
angular.module('material.components.divider', [
|
||||
'material.core'
|
||||
])
|
||||
.directive('mdDivider', MdDividerDirective);
|
||||
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name mdDivider
|
||||
* @module material.components.divider
|
||||
* @restrict E
|
||||
*
|
||||
* @description
|
||||
* Dividers group and separate content within lists and page layouts using strong visual and spatial distinctions. This divider is a thin rule, lightweight enough to not distract the user from content.
|
||||
*
|
||||
* @param {boolean=} md-inset Add this attribute to activate the inset divider style.
|
||||
* @usage
|
||||
* <hljs lang="html">
|
||||
* <md-divider></md-divider>
|
||||
*
|
||||
* <md-divider md-inset></md-divider>
|
||||
* </hljs>
|
||||
*
|
||||
*/
|
||||
function MdDividerDirective($mdTheming) {
|
||||
return {
|
||||
restrict: 'E',
|
||||
link: $mdTheming
|
||||
};
|
||||
}
|
||||
|
||||
ngmaterial.components.divider = angular.module("material.components.divider");
|
6
xstatic/pkg/angular_material/data/modules/closure/divider/divider.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/divider/divider.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}
|
7
xstatic/pkg/angular_material/data/modules/closure/divider/divider.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/divider/divider.min.js
vendored
Executable file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/
|
||||
function MdDividerDirective(e){return{restrict:"E",link:e}}goog.provide("ngmaterial.components.divider"),goog.require("ngmaterial.core"),MdDividerDirective.$inject=["$mdTheming"],angular.module("material.components.divider",["material.core"]).directive("mdDivider",MdDividerDirective),ngmaterial.components.divider=angular.module("material.components.divider");
|
60
xstatic/pkg/angular_material/data/modules/closure/fabActions/fabActions.js
vendored
Executable file
60
xstatic/pkg/angular_material/data/modules/closure/fabActions/fabActions.js
vendored
Executable file
@ -0,0 +1,60 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
goog.provide('ngmaterial.components.fabActions');
|
||||
goog.require('ngmaterial.core');
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.components.fabActions
|
||||
*/
|
||||
MdFabActionsDirective['$inject'] = ["$mdUtil"];
|
||||
angular
|
||||
.module('material.components.fabActions', ['material.core'])
|
||||
.directive('mdFabActions', MdFabActionsDirective);
|
||||
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name mdFabActions
|
||||
* @module material.components.fabActions
|
||||
*
|
||||
* @restrict E
|
||||
*
|
||||
* @description
|
||||
* The `<md-fab-actions>` directive is used inside of a `<md-fab-speed-dial>` or
|
||||
* `<md-fab-toolbar>` directive to mark an element (or elements) as the actions and setup the
|
||||
* proper event listeners.
|
||||
*
|
||||
* @usage
|
||||
* See the `<md-fab-speed-dial>` or `<md-fab-toolbar>` directives for example usage.
|
||||
*/
|
||||
function MdFabActionsDirective($mdUtil) {
|
||||
return {
|
||||
restrict: 'E',
|
||||
|
||||
require: ['^?mdFabSpeedDial', '^?mdFabToolbar'],
|
||||
|
||||
compile: function(element, attributes) {
|
||||
var children = element.children();
|
||||
|
||||
var hasNgRepeat = $mdUtil.prefixer().hasAttribute(children, 'ng-repeat');
|
||||
|
||||
// Support both ng-repeat and static content
|
||||
if (hasNgRepeat) {
|
||||
children.addClass('md-fab-action-item');
|
||||
} else {
|
||||
// Wrap every child in a new div and add a class that we can scale/fling independently
|
||||
children.wrap('<div class="md-fab-action-item">');
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
})();
|
||||
|
||||
ngmaterial.components.fabActions = angular.module("material.components.fabActions");
|
7
xstatic/pkg/angular_material/data/modules/closure/fabActions/fabActions.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/fabActions/fabActions.min.js
vendored
Executable file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/
|
||||
goog.provide("ngmaterial.components.fabActions"),goog.require("ngmaterial.core"),function(){"use strict";function a(a){return{restrict:"E",require:["^?mdFabSpeedDial","^?mdFabToolbar"],compile:function(e,t){var i=e.children(),n=a.prefixer().hasAttribute(i,"ng-repeat");n?i.addClass("md-fab-action-item"):i.wrap('<div class="md-fab-action-item">')}}}a.$inject=["$mdUtil"],angular.module("material.components.fabActions",["material.core"]).directive("mdFabActions",a)}(),ngmaterial.components.fabActions=angular.module("material.components.fabActions");
|
154
xstatic/pkg/angular_material/data/modules/closure/fabSpeedDial/fabSpeedDial.css
Executable file
154
xstatic/pkg/angular_material/data/modules/closure/fabSpeedDial/fabSpeedDial.css
Executable file
@ -0,0 +1,154 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-fab-speed-dial {
|
||||
position: relative;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
z-index: 20;
|
||||
/*
|
||||
* Hide some graphics glitches if switching animation types
|
||||
*/
|
||||
/*
|
||||
* Handle the animations
|
||||
*/ }
|
||||
md-fab-speed-dial.md-fab-bottom-right {
|
||||
top: auto;
|
||||
right: 20px;
|
||||
bottom: 20px;
|
||||
left: auto;
|
||||
position: absolute; }
|
||||
md-fab-speed-dial.md-fab-bottom-left {
|
||||
top: auto;
|
||||
right: auto;
|
||||
bottom: 20px;
|
||||
left: 20px;
|
||||
position: absolute; }
|
||||
md-fab-speed-dial.md-fab-top-right {
|
||||
top: 20px;
|
||||
right: 20px;
|
||||
bottom: auto;
|
||||
left: auto;
|
||||
position: absolute; }
|
||||
md-fab-speed-dial.md-fab-top-left {
|
||||
top: 20px;
|
||||
right: auto;
|
||||
bottom: auto;
|
||||
left: 20px;
|
||||
position: absolute; }
|
||||
md-fab-speed-dial:not(.md-hover-full) {
|
||||
pointer-events: none; }
|
||||
md-fab-speed-dial:not(.md-hover-full) md-fab-trigger, md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item {
|
||||
pointer-events: auto; }
|
||||
md-fab-speed-dial:not(.md-hover-full).md-is-open {
|
||||
pointer-events: auto; }
|
||||
md-fab-speed-dial ._md-css-variables {
|
||||
z-index: 20; }
|
||||
md-fab-speed-dial.md-is-open .md-fab-action-item {
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
align-items: center; }
|
||||
md-fab-speed-dial md-fab-actions {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
height: auto; }
|
||||
md-fab-speed-dial md-fab-actions .md-fab-action-item {
|
||||
-webkit-transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); }
|
||||
md-fab-speed-dial.md-down {
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
flex-direction: column; }
|
||||
md-fab-speed-dial.md-down md-fab-trigger {
|
||||
-webkit-box-ordinal-group: 2;
|
||||
-webkit-order: 1;
|
||||
order: 1; }
|
||||
md-fab-speed-dial.md-down md-fab-actions {
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-ordinal-group: 3;
|
||||
-webkit-order: 2;
|
||||
order: 2; }
|
||||
md-fab-speed-dial.md-up {
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
flex-direction: column; }
|
||||
md-fab-speed-dial.md-up md-fab-trigger {
|
||||
-webkit-box-ordinal-group: 3;
|
||||
-webkit-order: 2;
|
||||
order: 2; }
|
||||
md-fab-speed-dial.md-up md-fab-actions {
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: reverse;
|
||||
-webkit-flex-direction: column-reverse;
|
||||
flex-direction: column-reverse;
|
||||
-webkit-box-ordinal-group: 2;
|
||||
-webkit-order: 1;
|
||||
order: 1; }
|
||||
md-fab-speed-dial.md-left {
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: row;
|
||||
flex-direction: row; }
|
||||
md-fab-speed-dial.md-left md-fab-trigger {
|
||||
-webkit-box-ordinal-group: 3;
|
||||
-webkit-order: 2;
|
||||
order: 2; }
|
||||
md-fab-speed-dial.md-left md-fab-actions {
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: reverse;
|
||||
-webkit-flex-direction: row-reverse;
|
||||
flex-direction: row-reverse;
|
||||
-webkit-box-ordinal-group: 2;
|
||||
-webkit-order: 1;
|
||||
order: 1; }
|
||||
md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item {
|
||||
-webkit-transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); }
|
||||
md-fab-speed-dial.md-right {
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: row;
|
||||
flex-direction: row; }
|
||||
md-fab-speed-dial.md-right md-fab-trigger {
|
||||
-webkit-box-ordinal-group: 2;
|
||||
-webkit-order: 1;
|
||||
order: 1; }
|
||||
md-fab-speed-dial.md-right md-fab-actions {
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: row;
|
||||
flex-direction: row;
|
||||
-webkit-box-ordinal-group: 3;
|
||||
-webkit-order: 2;
|
||||
order: 2; }
|
||||
md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item {
|
||||
-webkit-transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); }
|
||||
md-fab-speed-dial.md-fling-remove .md-fab-action-item > *, md-fab-speed-dial.md-scale-remove .md-fab-action-item > * {
|
||||
visibility: hidden; }
|
||||
md-fab-speed-dial.md-fling .md-fab-action-item {
|
||||
opacity: 1; }
|
||||
md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item {
|
||||
opacity: 0;
|
||||
-webkit-transition-duration: 0s;
|
||||
transition-duration: 0s; }
|
||||
md-fab-speed-dial.md-scale .md-fab-action-item {
|
||||
-webkit-transform: scale(0);
|
||||
transform: scale(0);
|
||||
-webkit-transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
-webkit-transition-duration: 0.14286s;
|
||||
transition-duration: 0.14286s; }
|
575
xstatic/pkg/angular_material/data/modules/closure/fabSpeedDial/fabSpeedDial.js
vendored
Executable file
575
xstatic/pkg/angular_material/data/modules/closure/fabSpeedDial/fabSpeedDial.js
vendored
Executable file
@ -0,0 +1,575 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
goog.provide('ngmaterial.components.fabShared');
|
||||
goog.require('ngmaterial.core');
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
MdFabController['$inject'] = ["$scope", "$element", "$animate", "$mdUtil", "$mdConstant", "$timeout"];
|
||||
angular.module('material.components.fabShared', ['material.core'])
|
||||
.controller('MdFabController', MdFabController);
|
||||
|
||||
function MdFabController($scope, $element, $animate, $mdUtil, $mdConstant, $timeout) {
|
||||
var vm = this;
|
||||
var initialAnimationAttempts = 0;
|
||||
|
||||
// NOTE: We use async eval(s) below to avoid conflicts with any existing digest loops
|
||||
|
||||
vm.open = function() {
|
||||
$scope.$evalAsync("vm.isOpen = true");
|
||||
};
|
||||
|
||||
vm.close = function() {
|
||||
// Async eval to avoid conflicts with existing digest loops
|
||||
$scope.$evalAsync("vm.isOpen = false");
|
||||
|
||||
// Focus the trigger when the element closes so users can still tab to the next item
|
||||
$element.find('md-fab-trigger')[0].focus();
|
||||
};
|
||||
|
||||
// Toggle the open/close state when the trigger is clicked
|
||||
vm.toggle = function() {
|
||||
$scope.$evalAsync("vm.isOpen = !vm.isOpen");
|
||||
};
|
||||
|
||||
/*
|
||||
* AngularJS Lifecycle hook for newer AngularJS versions.
|
||||
* Bindings are not guaranteed to have been assigned in the controller, but they are in the $onInit hook.
|
||||
*/
|
||||
vm.$onInit = function() {
|
||||
setupDefaults();
|
||||
setupListeners();
|
||||
setupWatchers();
|
||||
|
||||
fireInitialAnimations();
|
||||
};
|
||||
|
||||
// For AngularJS 1.4 and older, where there are no lifecycle hooks but bindings are pre-assigned,
|
||||
// manually call the $onInit hook.
|
||||
if (angular.version.major === 1 && angular.version.minor <= 4) {
|
||||
this.$onInit();
|
||||
}
|
||||
|
||||
function setupDefaults() {
|
||||
// Set the default direction to 'down' if none is specified
|
||||
vm.direction = vm.direction || 'down';
|
||||
|
||||
// Set the default to be closed
|
||||
vm.isOpen = vm.isOpen || false;
|
||||
|
||||
// Start the keyboard interaction at the first action
|
||||
resetActionIndex();
|
||||
|
||||
// Add an animations waiting class so we know not to run
|
||||
$element.addClass('md-animations-waiting');
|
||||
}
|
||||
|
||||
function setupListeners() {
|
||||
var eventTypes = [
|
||||
'click', 'focusin', 'focusout'
|
||||
];
|
||||
|
||||
// Add our listeners
|
||||
angular.forEach(eventTypes, function(eventType) {
|
||||
$element.on(eventType, parseEvents);
|
||||
});
|
||||
|
||||
// Remove our listeners when destroyed
|
||||
$scope.$on('$destroy', function() {
|
||||
angular.forEach(eventTypes, function(eventType) {
|
||||
$element.off(eventType, parseEvents);
|
||||
});
|
||||
|
||||
// remove any attached keyboard handlers in case element is removed while
|
||||
// speed dial is open
|
||||
disableKeyboard();
|
||||
});
|
||||
}
|
||||
|
||||
var closeTimeout;
|
||||
function parseEvents(event) {
|
||||
// If the event is a click, just handle it
|
||||
if (event.type == 'click') {
|
||||
handleItemClick(event);
|
||||
}
|
||||
|
||||
// If we focusout, set a timeout to close the element
|
||||
if (event.type == 'focusout' && !closeTimeout) {
|
||||
closeTimeout = $timeout(function() {
|
||||
vm.close();
|
||||
}, 100, false);
|
||||
}
|
||||
|
||||
// If we see a focusin and there is a timeout about to run, cancel it so we stay open
|
||||
if (event.type == 'focusin' && closeTimeout) {
|
||||
$timeout.cancel(closeTimeout);
|
||||
closeTimeout = null;
|
||||
}
|
||||
}
|
||||
|
||||
function resetActionIndex() {
|
||||
vm.currentActionIndex = -1;
|
||||
}
|
||||
|
||||
function setupWatchers() {
|
||||
// Watch for changes to the direction and update classes/attributes
|
||||
$scope.$watch('vm.direction', function(newDir, oldDir) {
|
||||
// Add the appropriate classes so we can target the direction in the CSS
|
||||
$animate.removeClass($element, 'md-' + oldDir);
|
||||
$animate.addClass($element, 'md-' + newDir);
|
||||
|
||||
// Reset the action index since it may have changed
|
||||
resetActionIndex();
|
||||
});
|
||||
|
||||
var trigger, actions;
|
||||
|
||||
// Watch for changes to md-open
|
||||
$scope.$watch('vm.isOpen', function(isOpen) {
|
||||
// Reset the action index since it may have changed
|
||||
resetActionIndex();
|
||||
|
||||
// We can't get the trigger/actions outside of the watch because the component hasn't been
|
||||
// linked yet, so we wait until the first watch fires to cache them.
|
||||
if (!trigger || !actions) {
|
||||
trigger = getTriggerElement();
|
||||
actions = getActionsElement();
|
||||
}
|
||||
|
||||
if (isOpen) {
|
||||
enableKeyboard();
|
||||
} else {
|
||||
disableKeyboard();
|
||||
}
|
||||
|
||||
var toAdd = isOpen ? 'md-is-open' : '';
|
||||
var toRemove = isOpen ? '' : 'md-is-open';
|
||||
|
||||
// Set the proper ARIA attributes
|
||||
trigger.attr('aria-haspopup', true);
|
||||
trigger.attr('aria-expanded', isOpen);
|
||||
actions.attr('aria-hidden', !isOpen);
|
||||
|
||||
// Animate the CSS classes
|
||||
$animate.setClass($element, toAdd, toRemove);
|
||||
});
|
||||
}
|
||||
|
||||
function fireInitialAnimations() {
|
||||
// If the element is actually visible on the screen
|
||||
if ($element[0].scrollHeight > 0) {
|
||||
// Fire our animation
|
||||
$animate.addClass($element, '_md-animations-ready').then(function() {
|
||||
// Remove the waiting class
|
||||
$element.removeClass('md-animations-waiting');
|
||||
});
|
||||
}
|
||||
|
||||
// Otherwise, try for up to 1 second before giving up
|
||||
else if (initialAnimationAttempts < 10) {
|
||||
$timeout(fireInitialAnimations, 100);
|
||||
|
||||
// Increment our counter
|
||||
initialAnimationAttempts = initialAnimationAttempts + 1;
|
||||
}
|
||||
}
|
||||
|
||||
function enableKeyboard() {
|
||||
$element.on('keydown', keyPressed);
|
||||
|
||||
// On the next tick, setup a check for outside clicks; we do this on the next tick to avoid
|
||||
// clicks/touches that result in the isOpen attribute changing (e.g. a bound radio button)
|
||||
$mdUtil.nextTick(function() {
|
||||
angular.element(document).on('click touchend', checkForOutsideClick);
|
||||
});
|
||||
|
||||
// TODO: On desktop, we should be able to reset the indexes so you cannot tab through, but
|
||||
// this breaks accessibility, especially on mobile, since you have no arrow keys to press
|
||||
//resetActionTabIndexes();
|
||||
}
|
||||
|
||||
function disableKeyboard() {
|
||||
$element.off('keydown', keyPressed);
|
||||
angular.element(document).off('click touchend', checkForOutsideClick);
|
||||
}
|
||||
|
||||
function checkForOutsideClick(event) {
|
||||
if (event.target) {
|
||||
var closestTrigger = $mdUtil.getClosest(event.target, 'md-fab-trigger');
|
||||
var closestActions = $mdUtil.getClosest(event.target, 'md-fab-actions');
|
||||
|
||||
if (!closestTrigger && !closestActions) {
|
||||
vm.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function keyPressed(event) {
|
||||
switch (event.which) {
|
||||
case $mdConstant.KEY_CODE.ESCAPE: vm.close(); event.preventDefault(); return false;
|
||||
case $mdConstant.KEY_CODE.LEFT_ARROW: doKeyLeft(event); return false;
|
||||
case $mdConstant.KEY_CODE.UP_ARROW: doKeyUp(event); return false;
|
||||
case $mdConstant.KEY_CODE.RIGHT_ARROW: doKeyRight(event); return false;
|
||||
case $mdConstant.KEY_CODE.DOWN_ARROW: doKeyDown(event); return false;
|
||||
}
|
||||
}
|
||||
|
||||
function doActionPrev(event) {
|
||||
focusAction(event, -1);
|
||||
}
|
||||
|
||||
function doActionNext(event) {
|
||||
focusAction(event, 1);
|
||||
}
|
||||
|
||||
function focusAction(event, direction) {
|
||||
var actions = resetActionTabIndexes();
|
||||
|
||||
// Increment/decrement the counter with restrictions
|
||||
vm.currentActionIndex = vm.currentActionIndex + direction;
|
||||
vm.currentActionIndex = Math.min(actions.length - 1, vm.currentActionIndex);
|
||||
vm.currentActionIndex = Math.max(0, vm.currentActionIndex);
|
||||
|
||||
// Focus the element
|
||||
var focusElement = angular.element(actions[vm.currentActionIndex]).children()[0];
|
||||
angular.element(focusElement).attr('tabindex', 0);
|
||||
focusElement.focus();
|
||||
|
||||
// Make sure the event doesn't bubble and cause something else
|
||||
event.preventDefault();
|
||||
event.stopImmediatePropagation();
|
||||
}
|
||||
|
||||
function resetActionTabIndexes() {
|
||||
// Grab all of the actions
|
||||
var actions = getActionsElement()[0].querySelectorAll('.md-fab-action-item');
|
||||
|
||||
// Disable all other actions for tabbing
|
||||
angular.forEach(actions, function(action) {
|
||||
angular.element(angular.element(action).children()[0]).attr('tabindex', -1);
|
||||
});
|
||||
|
||||
return actions;
|
||||
}
|
||||
|
||||
function doKeyLeft(event) {
|
||||
if (vm.direction === 'left') {
|
||||
doActionNext(event);
|
||||
} else {
|
||||
doActionPrev(event);
|
||||
}
|
||||
}
|
||||
|
||||
function doKeyUp(event) {
|
||||
if (vm.direction === 'down') {
|
||||
doActionPrev(event);
|
||||
} else {
|
||||
doActionNext(event);
|
||||
}
|
||||
}
|
||||
|
||||
function doKeyRight(event) {
|
||||
if (vm.direction === 'left') {
|
||||
doActionPrev(event);
|
||||
} else {
|
||||
doActionNext(event);
|
||||
}
|
||||
}
|
||||
|
||||
function doKeyDown(event) {
|
||||
if (vm.direction === 'up') {
|
||||
doActionPrev(event);
|
||||
} else {
|
||||
doActionNext(event);
|
||||
}
|
||||
}
|
||||
|
||||
function isTrigger(element) {
|
||||
return $mdUtil.getClosest(element, 'md-fab-trigger');
|
||||
}
|
||||
|
||||
function isAction(element) {
|
||||
return $mdUtil.getClosest(element, 'md-fab-actions');
|
||||
}
|
||||
|
||||
function handleItemClick(event) {
|
||||
if (isTrigger(event.target)) {
|
||||
vm.toggle();
|
||||
}
|
||||
|
||||
if (isAction(event.target)) {
|
||||
vm.close();
|
||||
}
|
||||
}
|
||||
|
||||
function getTriggerElement() {
|
||||
return $element.find('md-fab-trigger');
|
||||
}
|
||||
|
||||
function getActionsElement() {
|
||||
return $element.find('md-fab-actions');
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* The duration of the CSS animation in milliseconds.
|
||||
*
|
||||
* @type {number}
|
||||
*/
|
||||
MdFabSpeedDialFlingAnimation['$inject'] = ["$timeout"];
|
||||
MdFabSpeedDialScaleAnimation['$inject'] = ["$timeout"];
|
||||
var cssAnimationDuration = 300;
|
||||
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.components.fabSpeedDial
|
||||
*/
|
||||
angular
|
||||
// Declare our module
|
||||
.module('material.components.fabSpeedDial', [
|
||||
'material.core',
|
||||
'material.components.fabShared',
|
||||
'material.components.fabActions'
|
||||
])
|
||||
|
||||
// Register our directive
|
||||
.directive('mdFabSpeedDial', MdFabSpeedDialDirective)
|
||||
|
||||
// Register our custom animations
|
||||
.animation('.md-fling', MdFabSpeedDialFlingAnimation)
|
||||
.animation('.md-scale', MdFabSpeedDialScaleAnimation)
|
||||
|
||||
// Register a service for each animation so that we can easily inject them into unit tests
|
||||
.service('mdFabSpeedDialFlingAnimation', MdFabSpeedDialFlingAnimation)
|
||||
.service('mdFabSpeedDialScaleAnimation', MdFabSpeedDialScaleAnimation);
|
||||
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name mdFabSpeedDial
|
||||
* @module material.components.fabSpeedDial
|
||||
*
|
||||
* @restrict E
|
||||
*
|
||||
* @description
|
||||
* The `<md-fab-speed-dial>` directive is used to present a series of popup elements (usually
|
||||
* `<md-button>`s) for quick access to common actions.
|
||||
*
|
||||
* There are currently two animations available by applying one of the following classes to
|
||||
* the component:
|
||||
*
|
||||
* - `md-fling` - The speed dial items appear from underneath the trigger and move into their
|
||||
* appropriate positions.
|
||||
* - `md-scale` - The speed dial items appear in their proper places by scaling from 0% to 100%.
|
||||
*
|
||||
* You may also easily position the trigger by applying one one of the following classes to the
|
||||
* `<md-fab-speed-dial>` element:
|
||||
* - `md-fab-top-left`
|
||||
* - `md-fab-top-right`
|
||||
* - `md-fab-bottom-left`
|
||||
* - `md-fab-bottom-right`
|
||||
*
|
||||
* These CSS classes use `position: absolute`, so you need to ensure that the container element
|
||||
* also uses `position: absolute` or `position: relative` in order for them to work.
|
||||
*
|
||||
* Additionally, you may use the standard `ng-mouseenter` and `ng-mouseleave` directives to
|
||||
* open or close the speed dial. However, if you wish to allow users to hover over the empty
|
||||
* space where the actions will appear, you must also add the `md-hover-full` class to the speed
|
||||
* dial element. Without this, the hover effect will only occur on top of the trigger.
|
||||
*
|
||||
* See the demos for more information.
|
||||
*
|
||||
* ## Troubleshooting
|
||||
*
|
||||
* If your speed dial shows the closing animation upon launch, you may need to use `ng-cloak` on
|
||||
* the parent container to ensure that it is only visible once ready. We have plans to remove this
|
||||
* necessity in the future.
|
||||
*
|
||||
* @usage
|
||||
* <hljs lang="html">
|
||||
* <md-fab-speed-dial md-direction="up" class="md-fling">
|
||||
* <md-fab-trigger>
|
||||
* <md-button aria-label="Add..."><md-icon md-svg-src="/img/icons/plus.svg"></md-icon></md-button>
|
||||
* </md-fab-trigger>
|
||||
*
|
||||
* <md-fab-actions>
|
||||
* <md-button aria-label="Add User">
|
||||
* <md-icon md-svg-src="/img/icons/user.svg"></md-icon>
|
||||
* </md-button>
|
||||
*
|
||||
* <md-button aria-label="Add Group">
|
||||
* <md-icon md-svg-src="/img/icons/group.svg"></md-icon>
|
||||
* </md-button>
|
||||
* </md-fab-actions>
|
||||
* </md-fab-speed-dial>
|
||||
* </hljs>
|
||||
*
|
||||
* @param {string} md-direction From which direction you would like the speed dial to appear
|
||||
* relative to the trigger element.
|
||||
* @param {expression=} md-open Programmatically control whether or not the speed-dial is visible.
|
||||
*/
|
||||
function MdFabSpeedDialDirective() {
|
||||
return {
|
||||
restrict: 'E',
|
||||
|
||||
scope: {
|
||||
direction: '@?mdDirection',
|
||||
isOpen: '=?mdOpen'
|
||||
},
|
||||
|
||||
bindToController: true,
|
||||
controller: 'MdFabController',
|
||||
controllerAs: 'vm',
|
||||
|
||||
link: FabSpeedDialLink
|
||||
};
|
||||
|
||||
function FabSpeedDialLink(scope, element) {
|
||||
// Prepend an element to hold our CSS variables so we can use them in the animations below
|
||||
element.prepend('<div class="_md-css-variables"></div>');
|
||||
}
|
||||
}
|
||||
|
||||
function MdFabSpeedDialFlingAnimation($timeout) {
|
||||
function delayDone(done) { $timeout(done, cssAnimationDuration, false); }
|
||||
|
||||
function runAnimation(element) {
|
||||
// Don't run if we are still waiting and we are not ready
|
||||
if (element.hasClass('md-animations-waiting') && !element.hasClass('_md-animations-ready')) {
|
||||
return;
|
||||
}
|
||||
|
||||
var el = element[0];
|
||||
var ctrl = element.controller('mdFabSpeedDial');
|
||||
var items = el.querySelectorAll('.md-fab-action-item');
|
||||
|
||||
// Grab our trigger element
|
||||
var triggerElement = el.querySelector('md-fab-trigger');
|
||||
|
||||
// Grab our element which stores CSS variables
|
||||
var variablesElement = el.querySelector('._md-css-variables');
|
||||
|
||||
// Setup JS variables based on our CSS variables
|
||||
var startZIndex = parseInt(window.getComputedStyle(variablesElement).zIndex);
|
||||
|
||||
// Always reset the items to their natural position/state
|
||||
angular.forEach(items, function(item, index) {
|
||||
var styles = item.style;
|
||||
|
||||
styles.transform = styles.webkitTransform = '';
|
||||
styles.transitionDelay = '';
|
||||
styles.opacity = 1;
|
||||
|
||||
// Make the items closest to the trigger have the highest z-index
|
||||
styles.zIndex = (items.length - index) + startZIndex;
|
||||
});
|
||||
|
||||
// Set the trigger to be above all of the actions so they disappear behind it.
|
||||
triggerElement.style.zIndex = startZIndex + items.length + 1;
|
||||
|
||||
// If the control is closed, hide the items behind the trigger
|
||||
if (!ctrl.isOpen) {
|
||||
angular.forEach(items, function(item, index) {
|
||||
var newPosition, axis;
|
||||
var styles = item.style;
|
||||
|
||||
// Make sure to account for differences in the dimensions of the trigger verses the items
|
||||
// so that we can properly center everything; this helps hide the item's shadows behind
|
||||
// the trigger.
|
||||
var triggerItemHeightOffset = (triggerElement.clientHeight - item.clientHeight) / 2;
|
||||
var triggerItemWidthOffset = (triggerElement.clientWidth - item.clientWidth) / 2;
|
||||
|
||||
switch (ctrl.direction) {
|
||||
case 'up':
|
||||
newPosition = (item.scrollHeight * (index + 1) + triggerItemHeightOffset);
|
||||
axis = 'Y';
|
||||
break;
|
||||
case 'down':
|
||||
newPosition = -(item.scrollHeight * (index + 1) + triggerItemHeightOffset);
|
||||
axis = 'Y';
|
||||
break;
|
||||
case 'left':
|
||||
newPosition = (item.scrollWidth * (index + 1) + triggerItemWidthOffset);
|
||||
axis = 'X';
|
||||
break;
|
||||
case 'right':
|
||||
newPosition = -(item.scrollWidth * (index + 1) + triggerItemWidthOffset);
|
||||
axis = 'X';
|
||||
break;
|
||||
}
|
||||
|
||||
var newTranslate = 'translate' + axis + '(' + newPosition + 'px)';
|
||||
|
||||
styles.transform = styles.webkitTransform = newTranslate;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
addClass: function(element, className, done) {
|
||||
if (element.hasClass('md-fling')) {
|
||||
runAnimation(element);
|
||||
delayDone(done);
|
||||
} else {
|
||||
done();
|
||||
}
|
||||
},
|
||||
removeClass: function(element, className, done) {
|
||||
runAnimation(element);
|
||||
delayDone(done);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function MdFabSpeedDialScaleAnimation($timeout) {
|
||||
function delayDone(done) { $timeout(done, cssAnimationDuration, false); }
|
||||
|
||||
var delay = 65;
|
||||
|
||||
function runAnimation(element) {
|
||||
var el = element[0];
|
||||
var ctrl = element.controller('mdFabSpeedDial');
|
||||
var items = el.querySelectorAll('.md-fab-action-item');
|
||||
|
||||
// Grab our element which stores CSS variables
|
||||
var variablesElement = el.querySelector('._md-css-variables');
|
||||
|
||||
// Setup JS variables based on our CSS variables
|
||||
var startZIndex = parseInt(window.getComputedStyle(variablesElement).zIndex);
|
||||
|
||||
// Always reset the items to their natural position/state
|
||||
angular.forEach(items, function(item, index) {
|
||||
var styles = item.style,
|
||||
offsetDelay = index * delay;
|
||||
|
||||
styles.opacity = ctrl.isOpen ? 1 : 0;
|
||||
styles.transform = styles.webkitTransform = ctrl.isOpen ? 'scale(1)' : 'scale(0)';
|
||||
styles.transitionDelay = (ctrl.isOpen ? offsetDelay : (items.length - offsetDelay)) + 'ms';
|
||||
|
||||
// Make the items closest to the trigger have the highest z-index
|
||||
styles.zIndex = (items.length - index) + startZIndex;
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
addClass: function(element, className, done) {
|
||||
runAnimation(element);
|
||||
delayDone(done);
|
||||
},
|
||||
|
||||
removeClass: function(element, className, done) {
|
||||
runAnimation(element);
|
||||
delayDone(done);
|
||||
}
|
||||
};
|
||||
}
|
||||
})();
|
||||
|
||||
ngmaterial.components.fabShared = angular.module("material.components.fabShared");
|
6
xstatic/pkg/angular_material/data/modules/closure/fabSpeedDial/fabSpeedDial.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/fabSpeedDial/fabSpeedDial.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-fab-speed-dial{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full).md-is-open,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{-webkit-box-align:center;-webkit-align-items:center;align-items:center}md-fab-speed-dial md-fab-actions{display:-webkit-box;display:-webkit-flex;display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{-webkit-transition:all .3s cubic-bezier(.55,0,.55,.2);transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{-webkit-box-ordinal-group:2;-webkit-order:1;order:1}md-fab-speed-dial.md-down md-fab-actions{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-ordinal-group:3;-webkit-order:2;order:2}md-fab-speed-dial.md-up{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{-webkit-box-ordinal-group:3;-webkit-order:2;order:2}md-fab-speed-dial.md-up md-fab-actions{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-ordinal-group:2;-webkit-order:1;order:1}md-fab-speed-dial.md-left{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{-webkit-box-ordinal-group:3;-webkit-order:2;order:2}md-fab-speed-dial.md-left md-fab-actions{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-box-ordinal-group:2;-webkit-order:1;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{-webkit-transition:all .3s cubic-bezier(.55,0,.55,.2);transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{-webkit-box-ordinal-group:2;-webkit-order:1;order:1}md-fab-speed-dial.md-right md-fab-actions{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row;-webkit-box-ordinal-group:3;-webkit-order:2;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{-webkit-transition:all .3s cubic-bezier(.55,0,.55,.2);transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;-webkit-transition-duration:0s;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{-webkit-transform:scale(0);transform:scale(0);-webkit-transition:all .3s cubic-bezier(.55,0,.55,.2);transition:all .3s cubic-bezier(.55,0,.55,.2);-webkit-transition-duration:.14286s;transition-duration:.14286s}
|
7
xstatic/pkg/angular_material/data/modules/closure/fabSpeedDial/fabSpeedDial.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/fabSpeedDial/fabSpeedDial.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
119
xstatic/pkg/angular_material/data/modules/closure/fabToolbar/fabToolbar.css
Executable file
119
xstatic/pkg/angular_material/data/modules/closure/fabToolbar/fabToolbar.css
Executable file
@ -0,0 +1,119 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
md-fab-toolbar {
|
||||
display: block;
|
||||
/*
|
||||
* Closed styling
|
||||
*/
|
||||
/*
|
||||
* Hover styling
|
||||
*/ }
|
||||
md-fab-toolbar.md-fab-bottom-right {
|
||||
top: auto;
|
||||
right: 20px;
|
||||
bottom: 20px;
|
||||
left: auto;
|
||||
position: absolute; }
|
||||
md-fab-toolbar.md-fab-bottom-left {
|
||||
top: auto;
|
||||
right: auto;
|
||||
bottom: 20px;
|
||||
left: 20px;
|
||||
position: absolute; }
|
||||
md-fab-toolbar.md-fab-top-right {
|
||||
top: 20px;
|
||||
right: 20px;
|
||||
bottom: auto;
|
||||
left: auto;
|
||||
position: absolute; }
|
||||
md-fab-toolbar.md-fab-top-left {
|
||||
top: 20px;
|
||||
right: auto;
|
||||
bottom: auto;
|
||||
left: 20px;
|
||||
position: absolute; }
|
||||
md-fab-toolbar .md-fab-toolbar-wrapper {
|
||||
display: block;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
height: 68px; }
|
||||
md-fab-toolbar md-fab-trigger {
|
||||
position: absolute;
|
||||
z-index: 20; }
|
||||
md-fab-toolbar md-fab-trigger button {
|
||||
overflow: visible !important; }
|
||||
md-fab-toolbar md-fab-trigger .md-fab-toolbar-background {
|
||||
display: block;
|
||||
position: absolute;
|
||||
z-index: 21;
|
||||
opacity: 1;
|
||||
-webkit-transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); }
|
||||
md-fab-toolbar md-fab-trigger md-icon {
|
||||
position: relative;
|
||||
z-index: 22;
|
||||
opacity: 1;
|
||||
-webkit-transition: all 200ms ease-in;
|
||||
transition: all 200ms ease-in; }
|
||||
md-fab-toolbar.md-left md-fab-trigger {
|
||||
right: 0; }
|
||||
[dir=rtl] md-fab-toolbar.md-left md-fab-trigger {
|
||||
right: auto;
|
||||
left: 0; }
|
||||
md-fab-toolbar.md-left .md-toolbar-tools {
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: reverse;
|
||||
-webkit-flex-direction: row-reverse;
|
||||
flex-direction: row-reverse; }
|
||||
md-fab-toolbar.md-left .md-toolbar-tools > .md-button:first-child {
|
||||
margin-right: 0.6rem; }
|
||||
[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools > .md-button:first-child {
|
||||
margin-right: auto;
|
||||
margin-left: 0.6rem; }
|
||||
md-fab-toolbar.md-left .md-toolbar-tools > .md-button:first-child {
|
||||
margin-left: -0.8rem; }
|
||||
[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools > .md-button:first-child {
|
||||
margin-left: auto;
|
||||
margin-right: -0.8rem; }
|
||||
md-fab-toolbar.md-left .md-toolbar-tools > .md-button:last-child {
|
||||
margin-right: 8px; }
|
||||
[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools > .md-button:last-child {
|
||||
margin-right: auto;
|
||||
margin-left: 8px; }
|
||||
md-fab-toolbar.md-right md-fab-trigger {
|
||||
left: 0; }
|
||||
[dir=rtl] md-fab-toolbar.md-right md-fab-trigger {
|
||||
left: auto;
|
||||
right: 0; }
|
||||
md-fab-toolbar.md-right .md-toolbar-tools {
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: row;
|
||||
flex-direction: row; }
|
||||
md-fab-toolbar md-toolbar {
|
||||
background-color: transparent !important;
|
||||
pointer-events: none;
|
||||
z-index: 23; }
|
||||
md-fab-toolbar md-toolbar .md-toolbar-tools {
|
||||
padding: 0 20px;
|
||||
margin-top: 3px; }
|
||||
md-fab-toolbar md-toolbar .md-fab-action-item {
|
||||
opacity: 0;
|
||||
-webkit-transform: scale(0);
|
||||
transform: scale(0);
|
||||
-webkit-transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
||||
-webkit-transition-duration: 0.15s;
|
||||
transition-duration: 0.15s; }
|
||||
md-fab-toolbar.md-is-open md-fab-trigger > button {
|
||||
box-shadow: none; }
|
||||
md-fab-toolbar.md-is-open md-fab-trigger > button md-icon {
|
||||
opacity: 0; }
|
||||
md-fab-toolbar.md-is-open .md-fab-action-item {
|
||||
opacity: 1;
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
209
xstatic/pkg/angular_material/data/modules/closure/fabToolbar/fabToolbar.js
vendored
Executable file
209
xstatic/pkg/angular_material/data/modules/closure/fabToolbar/fabToolbar.js
vendored
Executable file
@ -0,0 +1,209 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.5
|
||||
*/
|
||||
goog.provide('ngmaterial.components.fabToolbar');
|
||||
goog.require('ngmaterial.components.fabActions');
|
||||
goog.require('ngmaterial.components.fabShared');
|
||||
goog.require('ngmaterial.core');
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.components.fabToolbar
|
||||
*/
|
||||
angular
|
||||
// Declare our module
|
||||
.module('material.components.fabToolbar', [
|
||||
'material.core',
|
||||
'material.components.fabShared',
|
||||
'material.components.fabActions'
|
||||
])
|
||||
|
||||
// Register our directive
|
||||
.directive('mdFabToolbar', MdFabToolbarDirective)
|
||||
|
||||
// Register our custom animations
|
||||
.animation('.md-fab-toolbar', MdFabToolbarAnimation)
|
||||
|
||||
// Register a service for the animation so that we can easily inject it into unit tests
|
||||
.service('mdFabToolbarAnimation', MdFabToolbarAnimation);
|
||||
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name mdFabToolbar
|
||||
* @module material.components.fabToolbar
|
||||
*
|
||||
* @restrict E
|
||||
*
|
||||
* @description
|
||||
*
|
||||
* The `<md-fab-toolbar>` directive is used to present a toolbar of elements (usually `<md-button>`s)
|
||||
* for quick access to common actions when a floating action button is activated (via click or
|
||||
* keyboard navigation).
|
||||
*
|
||||
* You may also easily position the trigger by applying one one of the following classes to the
|
||||
* `<md-fab-toolbar>` element:
|
||||
* - `md-fab-top-left`
|
||||
* - `md-fab-top-right`
|
||||
* - `md-fab-bottom-left`
|
||||
* - `md-fab-bottom-right`
|
||||
*
|
||||
* These CSS classes use `position: absolute`, so you need to ensure that the container element
|
||||
* also uses `position: absolute` or `position: relative` in order for them to work.
|
||||
*
|
||||
* @usage
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-fab-toolbar md-direction='left'>
|
||||
* <md-fab-trigger>
|
||||
* <md-button aria-label="Add..."><md-icon md-svg-src="/img/icons/plus.svg"></md-icon></md-button>
|
||||
* </md-fab-trigger>
|
||||
*
|
||||
* <md-toolbar>
|
||||
* <md-fab-actions>
|
||||
* <md-button aria-label="Add User">
|
||||
* <md-icon md-svg-src="/img/icons/user.svg"></md-icon>
|
||||
* </md-button>
|
||||
*
|
||||
* <md-button aria-label="Add Group">
|
||||
* <md-icon md-svg-src="/img/icons/group.svg"></md-icon>
|
||||
* </md-button>
|
||||
* </md-fab-actions>
|
||||
* </md-toolbar>
|
||||
* </md-fab-toolbar>
|
||||
* </hljs>
|
||||
*
|
||||
* @param {string} md-direction From which direction you would like the toolbar items to appear
|
||||
* relative to the trigger element. Supports `left` and `right` directions.
|
||||
* @param {expression=} md-open Programmatically control whether or not the toolbar is visible.
|
||||
*/
|
||||
function MdFabToolbarDirective() {
|
||||
return {
|
||||
restrict: 'E',
|
||||
transclude: true,
|
||||
template: '<div class="md-fab-toolbar-wrapper">' +
|
||||
' <div class="md-fab-toolbar-content" ng-transclude></div>' +
|
||||
'</div>',
|
||||
|
||||
scope: {
|
||||
direction: '@?mdDirection',
|
||||
isOpen: '=?mdOpen'
|
||||
},
|
||||
|
||||
bindToController: true,
|
||||
controller: 'MdFabController',
|
||||
controllerAs: 'vm',
|
||||
|
||||
link: link
|
||||
};
|
||||
|
||||
function link(scope, element, attributes) {
|
||||
// Add the base class for animations
|
||||
element.addClass('md-fab-toolbar');
|
||||
|
||||
// Prepend the background element to the trigger's button
|
||||
element.find('md-fab-trigger').find('button')
|
||||
.prepend('<div class="md-fab-toolbar-background"></div>');
|
||||
}
|
||||
}
|
||||
|
||||
function MdFabToolbarAnimation() {
|
||||
|
||||
function runAnimation(element, className, done) {
|
||||
// If no className was specified, don't do anything
|
||||
if (!className) {
|
||||
return;
|
||||
}
|
||||
|
||||
var el = element[0];
|
||||
var ctrl = element.controller('mdFabToolbar');
|
||||
|
||||
// Grab the relevant child elements
|
||||
var backgroundElement = el.querySelector('.md-fab-toolbar-background');
|
||||
var triggerElement = el.querySelector('md-fab-trigger button');
|
||||
var toolbarElement = el.querySelector('md-toolbar');
|
||||
var iconElement = el.querySelector('md-fab-trigger button md-icon');
|
||||
var actions = element.find('md-fab-actions').children();
|
||||
|
||||
// If we have both elements, use them to position the new background
|
||||
if (triggerElement && backgroundElement) {
|
||||
// Get our variables
|
||||
var color = window.getComputedStyle(triggerElement).getPropertyValue('background-color');
|
||||
var width = el.offsetWidth;
|
||||
var height = el.offsetHeight;
|
||||
|
||||
// Make it twice as big as it should be since we scale from the center
|
||||
var scale = 2 * (width / triggerElement.offsetWidth);
|
||||
|
||||
// Set some basic styles no matter what animation we're doing
|
||||
backgroundElement.style.backgroundColor = color;
|
||||
backgroundElement.style.borderRadius = width + 'px';
|
||||
|
||||
// If we're open
|
||||
if (ctrl.isOpen) {
|
||||
// Turn on toolbar pointer events when closed
|
||||
toolbarElement.style.pointerEvents = 'inherit';
|
||||
|
||||
backgroundElement.style.width = triggerElement.offsetWidth + 'px';
|
||||
backgroundElement.style.height = triggerElement.offsetHeight + 'px';
|
||||
backgroundElement.style.transform = 'scale(' + scale + ')';
|
||||
|
||||
// Set the next close animation to have the proper delays
|
||||
backgroundElement.style.transitionDelay = '0ms';
|
||||
iconElement && (iconElement.style.transitionDelay = '.3s');
|
||||
|
||||
// Apply a transition delay to actions
|
||||
angular.forEach(actions, function(action, index) {
|
||||
action.style.transitionDelay = (actions.length - index) * 25 + 'ms';
|
||||
});
|
||||
} else {
|
||||
// Turn off toolbar pointer events when closed
|
||||
toolbarElement.style.pointerEvents = 'none';
|
||||
|
||||
// Scale it back down to the trigger's size
|
||||
backgroundElement.style.transform = 'scale(1)';
|
||||
|
||||
// Reset the position
|
||||
backgroundElement.style.top = '0';
|
||||
|
||||
if (element.hasClass('md-right')) {
|
||||
backgroundElement.style.left = '0';
|
||||
backgroundElement.style.right = null;
|
||||
}
|
||||
|
||||
if (element.hasClass('md-left')) {
|
||||
backgroundElement.style.right = '0';
|
||||
backgroundElement.style.left = null;
|
||||
}
|
||||
|
||||
// Set the next open animation to have the proper delays
|
||||
backgroundElement.style.transitionDelay = '200ms';
|
||||
iconElement && (iconElement.style.transitionDelay = '0ms');
|
||||
|
||||
// Apply a transition delay to actions
|
||||
angular.forEach(actions, function(action, index) {
|
||||
action.style.transitionDelay = 200 + (index * 25) + 'ms';
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
addClass: function(element, className, done) {
|
||||
runAnimation(element, className, done);
|
||||
done();
|
||||
},
|
||||
|
||||
removeClass: function(element, className, done) {
|
||||
runAnimation(element, className, done);
|
||||
done();
|
||||
}
|
||||
};
|
||||
}
|
||||
})();
|
||||
|
||||
ngmaterial.components.fabToolbar = angular.module("material.components.fabToolbar");
|
6
xstatic/pkg/angular_material/data/modules/closure/fabToolbar/fabToolbar.min.css
vendored
Executable file
6
xstatic/pkg/angular_material/data/modules/closure/fabToolbar/fabToolbar.min.css
vendored
Executable file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;-webkit-transition:all .3s cubic-bezier(.55,0,.55,.2);transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;-webkit-transition:all .2s ease-in;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:all .3s cubic-bezier(.55,0,.55,.2);transition:all .3s cubic-bezier(.55,0,.55,.2);-webkit-transition-duration:.15s;transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;-webkit-transform:scale(1);transform:scale(1)}
|
7
xstatic/pkg/angular_material/data/modules/closure/fabToolbar/fabToolbar.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/fabToolbar/fabToolbar.min.js
vendored
Executable file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* AngularJS Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.4-master-87d1cb1
|
||||
*/
|
||||
goog.provide("ngmaterial.components.fabToolbar"),goog.require("ngmaterial.components.fabActions"),goog.require("ngmaterial.components.fabShared"),goog.require("ngmaterial.core"),function(){"use strict";function t(){function t(t,e,o){e.addClass("md-fab-toolbar"),e.find("md-fab-trigger").find("button").prepend('<div class="md-fab-toolbar-background"></div>')}return{restrict:"E",transclude:!0,template:'<div class="md-fab-toolbar-wrapper"> <div class="md-fab-toolbar-content" ng-transclude></div></div>',scope:{direction:"@?mdDirection",isOpen:"=?mdOpen"},bindToController:!0,controller:"MdFabController",controllerAs:"vm",link:t}}function e(){function t(t,e,o){if(e){var a=t[0],r=t.controller("mdFabToolbar"),n=a.querySelector(".md-fab-toolbar-background"),l=a.querySelector("md-fab-trigger button"),i=a.querySelector("md-toolbar"),s=a.querySelector("md-fab-trigger button md-icon"),d=t.find("md-fab-actions").children();if(l&&n){var c=window.getComputedStyle(l).getPropertyValue("background-color"),m=a.offsetWidth,f=(a.offsetHeight,2*(m/l.offsetWidth));n.style.backgroundColor=c,n.style.borderRadius=m+"px",r.isOpen?(i.style.pointerEvents="inherit",n.style.width=l.offsetWidth+"px",n.style.height=l.offsetHeight+"px",n.style.transform="scale("+f+")",n.style.transitionDelay="0ms",s&&(s.style.transitionDelay=".3s"),angular.forEach(d,function(t,e){t.style.transitionDelay=25*(d.length-e)+"ms"})):(i.style.pointerEvents="none",n.style.transform="scale(1)",n.style.top="0",t.hasClass("md-right")&&(n.style.left="0",n.style.right=null),t.hasClass("md-left")&&(n.style.right="0",n.style.left=null),n.style.transitionDelay="200ms",s&&(s.style.transitionDelay="0ms"),angular.forEach(d,function(t,e){t.style.transitionDelay=200+25*e+"ms"}))}}}return{addClass:function(e,o,a){t(e,o,a),a()},removeClass:function(e,o,a){t(e,o,a),a()}}}angular.module("material.components.fabToolbar",["material.core","material.components.fabShared","material.components.fabActions"]).directive("mdFabToolbar",t).animation(".md-fab-toolbar",e).service("mdFabToolbarAnimation",e)}(),ngmaterial.components.fabToolbar=angular.module("material.components.fabToolbar");
|
46
xstatic/pkg/angular_material/data/modules/closure/fabTrigger/fabTrigger.js
vendored
Executable file
46
xstatic/pkg/angular_material/data/modules/closure/fabTrigger/fabTrigger.js
vendored
Executable file
@ -0,0 +1,46 @@
|
||||
/*!
|
||||
* Angular Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.0-rc.5-master-26a5fb8
|
||||
*/
|
||||
goog.provide('ng.material.components.fabTrigger');
|
||||
goog.require('ng.material.core');
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.components.fabTrigger
|
||||
*/
|
||||
angular
|
||||
.module('material.components.fabTrigger', ['material.core'])
|
||||
.directive('mdFabTrigger', MdFabTriggerDirective);
|
||||
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name mdFabTrigger
|
||||
* @module material.components.fabSpeedDial
|
||||
*
|
||||
* @restrict E
|
||||
*
|
||||
* @description
|
||||
* The `<md-fab-trigger>` directive is used inside of a `<md-fab-speed-dial>` or
|
||||
* `<md-fab-toolbar>` directive to mark an element (or elements) as the trigger and setup the
|
||||
* proper event listeners.
|
||||
*
|
||||
* @usage
|
||||
* See the `<md-fab-speed-dial>` or `<md-fab-toolbar>` directives for example usage.
|
||||
*/
|
||||
function MdFabTriggerDirective() {
|
||||
// TODO: Remove this completely?
|
||||
return {
|
||||
restrict: 'E',
|
||||
|
||||
require: ['^?mdFabSpeedDial', '^?mdFabToolbar']
|
||||
};
|
||||
}
|
||||
})();
|
||||
|
||||
|
||||
ng.material.components.fabTrigger = angular.module("material.components.fabTrigger");
|
7
xstatic/pkg/angular_material/data/modules/closure/fabTrigger/fabTrigger.min.js
vendored
Executable file
7
xstatic/pkg/angular_material/data/modules/closure/fabTrigger/fabTrigger.min.js
vendored
Executable file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* Angular Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.0-rc.5-master-26a5fb8
|
||||
*/
|
||||
goog.provide("ng.material.components.fabTrigger"),goog.require("ng.material.core"),function(){"use strict";function r(){return{restrict:"E",require:["^?mdFabSpeedDial","^?mdFabToolbar"]}}angular.module("material.components.fabTrigger",["material.core"]).directive("mdFabTrigger",r)}(),ng.material.components.fabTrigger=angular.module("material.components.fabTrigger");
|
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Angular Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v0.8.0-rc1-master-91053dc
|
||||
*/
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user