mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-06-21 18:04:18 +00:00
MODULE-TYPO
- Sass set-up - md-list - md-theming (install)
This commit is contained in:
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
|
||||
md-bottom-sheet.md-THEME_NAME-theme {
|
||||
background-color: '{{background-50}}';
|
||||
border-top-color: '{{background-300}}';
|
||||
|
||||
&.md-list {
|
||||
md-item {
|
||||
color: '{{foreground-1}}';
|
||||
}
|
||||
}
|
||||
|
||||
.md-subheader {
|
||||
background-color: '{{background-50}}';
|
||||
}
|
||||
|
||||
.md-subheader {
|
||||
color: '{{foreground-1}}';
|
||||
}
|
||||
}
|
||||
+285
@@ -0,0 +1,285 @@
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.components.bottomSheet
|
||||
* @description
|
||||
* BottomSheet
|
||||
*/
|
||||
angular.module('material.components.bottomSheet', [
|
||||
'material.core',
|
||||
'material.components.backdrop'
|
||||
])
|
||||
.directive('mdBottomSheet', MdBottomSheetDirective)
|
||||
.provider('$mdBottomSheet', MdBottomSheetProvider);
|
||||
|
||||
function MdBottomSheetDirective() {
|
||||
return {
|
||||
restrict: 'E'
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @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-bottom-sheet>'
|
||||
* });
|
||||
* };
|
||||
* });
|
||||
* </hljs>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
* @name $mdBottomSheet#show
|
||||
*
|
||||
* @description
|
||||
* Show a bottom sheet with the specified options.
|
||||
*
|
||||
* @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.
|
||||
* - `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.
|
||||
* - `targetEvent` - `{DOMClickEvent=}`: A click's event object. When passed in as an option,
|
||||
* the location of the click will be used as the starting point for the opening animation
|
||||
* of the the dialog.
|
||||
* - `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. Defaults to appending
|
||||
* to the root element of the application.
|
||||
*
|
||||
* @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()`.
|
||||
*
|
||||
* @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()`.
|
||||
*
|
||||
* @param {*=} response An argument for the rejected promise.
|
||||
*
|
||||
*/
|
||||
|
||||
function MdBottomSheetProvider($$interimElementProvider) {
|
||||
|
||||
return $$interimElementProvider('$mdBottomSheet')
|
||||
.setDefaults({
|
||||
options: bottomSheetDefaults
|
||||
});
|
||||
|
||||
/* @ngInject */
|
||||
function bottomSheetDefaults($animate, $mdConstant, $timeout, $$rAF, $compile, $mdTheming, $mdBottomSheet, $rootElement) {
|
||||
var backdrop;
|
||||
|
||||
return {
|
||||
themable: true,
|
||||
targetEvent: null,
|
||||
onShow: onShow,
|
||||
onRemove: onRemove,
|
||||
escapeToClose: true
|
||||
};
|
||||
|
||||
function onShow(scope, element, options) {
|
||||
// Add a backdrop that will close on click
|
||||
backdrop = $compile('<md-backdrop class="md-opaque md-bottom-sheet-backdrop">')(scope);
|
||||
backdrop.on('click touchstart', function() {
|
||||
$timeout($mdBottomSheet.cancel);
|
||||
});
|
||||
|
||||
$mdTheming.inherit(backdrop, options.parent);
|
||||
|
||||
$animate.enter(backdrop, options.parent, null);
|
||||
|
||||
var bottomSheet = new BottomSheet(element);
|
||||
options.bottomSheet = bottomSheet;
|
||||
|
||||
// Give up focus on calling item
|
||||
options.targetEvent && angular.element(options.targetEvent.target).blur();
|
||||
$mdTheming.inherit(bottomSheet.element, options.parent);
|
||||
|
||||
return $animate.enter(bottomSheet.element, options.parent)
|
||||
.then(function() {
|
||||
var focusable = angular.element(
|
||||
element[0].querySelector('button') ||
|
||||
element[0].querySelector('a') ||
|
||||
element[0].querySelector('[ng-click]')
|
||||
);
|
||||
focusable.focus();
|
||||
|
||||
if (options.escapeToClose) {
|
||||
options.rootElementKeyupCallback = function(e) {
|
||||
if (e.keyCode === $mdConstant.KEY_CODE.ESCAPE) {
|
||||
$timeout($mdBottomSheet.cancel);
|
||||
}
|
||||
};
|
||||
$rootElement.on('keyup', options.rootElementKeyupCallback);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function onRemove(scope, element, options) {
|
||||
var bottomSheet = options.bottomSheet;
|
||||
$animate.leave(backdrop);
|
||||
return $animate.leave(bottomSheet.element).then(function() {
|
||||
bottomSheet.cleanup();
|
||||
|
||||
// Restore focus
|
||||
options.targetEvent && angular.element(options.targetEvent.target).focus();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* BottomSheet class to apply bottom-sheet behavior to an element
|
||||
*/
|
||||
function BottomSheet(element) {
|
||||
var MAX_OFFSET = 80; // amount past the bottom of the element that we can drag down, this is same as in _bottomSheet.scss
|
||||
var WIGGLE_AMOUNT = 20; // point where it starts to get "harder" to drag
|
||||
var CLOSING_VELOCITY = 10; // how fast we need to flick down to close the sheet
|
||||
var startY, lastY, velocity, transitionDelay, startTarget;
|
||||
|
||||
// coercion incase $mdCompiler returns multiple elements
|
||||
element = element.eq(0);
|
||||
|
||||
element.on('touchstart', onTouchStart)
|
||||
.on('touchmove', onTouchMove)
|
||||
.on('touchend', onTouchEnd);
|
||||
|
||||
return {
|
||||
element: element,
|
||||
cleanup: function cleanup() {
|
||||
element.off('touchstart', onTouchStart)
|
||||
.off('touchmove', onTouchMove)
|
||||
.off('touchend', onTouchEnd);
|
||||
}
|
||||
};
|
||||
|
||||
function onTouchStart(e) {
|
||||
e.preventDefault();
|
||||
startTarget = e.target;
|
||||
startY = getY(e);
|
||||
|
||||
// Disable transitions on transform so that it feels fast
|
||||
transitionDelay = element.css($mdConstant.CSS.TRANSITION_DURATION);
|
||||
element.css($mdConstant.CSS.TRANSITION_DURATION, '0s');
|
||||
}
|
||||
|
||||
function onTouchEnd(e) {
|
||||
// Re-enable the transitions on transforms
|
||||
element.css($mdConstant.CSS.TRANSITION_DURATION, transitionDelay);
|
||||
|
||||
var currentY = getY(e);
|
||||
// If we didn't scroll much, and we didn't change targets, assume its a click
|
||||
if ( Math.abs(currentY - startY) < 5 && e.target == startTarget) {
|
||||
angular.element(e.target).triggerHandler('click');
|
||||
} else {
|
||||
// If they went fast enough, trigger a close.
|
||||
if (velocity > CLOSING_VELOCITY) {
|
||||
$timeout($mdBottomSheet.cancel);
|
||||
|
||||
// Otherwise, untransform so that we go back to our normal position
|
||||
} else {
|
||||
setTransformY(undefined);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onTouchMove(e) {
|
||||
var currentY = getY(e);
|
||||
var delta = currentY - startY;
|
||||
|
||||
velocity = currentY - lastY;
|
||||
lastY = currentY;
|
||||
|
||||
// Do some conversion on delta to get a friction-like effect
|
||||
delta = adjustedDelta(delta);
|
||||
setTransformY(delta + MAX_OFFSET);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function to find the Y aspect of various touch events.
|
||||
**/
|
||||
function getY(e) {
|
||||
var touch = e.touches && e.touches.length ? e.touches[0] : e.changedTouches[0];
|
||||
return touch.clientY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Transform the element along the y-axis
|
||||
**/
|
||||
function setTransformY(amt) {
|
||||
if (amt === null || amt === undefined) {
|
||||
element.css($mdConstant.CSS.TRANSFORM, '');
|
||||
} else {
|
||||
element.css($mdConstant.CSS.TRANSFORM, 'translate3d(0, ' + amt + 'px, 0)');
|
||||
}
|
||||
}
|
||||
|
||||
// Returns a new value for delta that will never exceed MAX_OFFSET_AMOUNT
|
||||
// Will get harder to exceed it as you get closer to it
|
||||
function adjustedDelta(delta) {
|
||||
if ( delta < 0 && delta < -MAX_OFFSET + WIGGLE_AMOUNT) {
|
||||
delta = -delta;
|
||||
var base = MAX_OFFSET - WIGGLE_AMOUNT;
|
||||
delta = Math.max(-MAX_OFFSET, -Math.min(MAX_OFFSET - 5, base + ( WIGGLE_AMOUNT * (delta - base)) / MAX_OFFSET) - delta / 50);
|
||||
}
|
||||
|
||||
return delta;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
})();
|
||||
Vendored
+175
@@ -0,0 +1,175 @@
|
||||
$bottom-sheet-horizontal-padding: 2 * $baseline-grid !default;
|
||||
$bottom-sheet-vertical-padding: 1 * $baseline-grid !default;
|
||||
$bottom-sheet-icon-after-margin: 4 * $baseline-grid !default;
|
||||
$bottom-sheet-list-item-height: 6 * $baseline-grid !default;
|
||||
$bottom-sheet-hidden-bottom-padding: 80px !default;
|
||||
$bottom-sheet-header-height: 7 * $baseline-grid !default;
|
||||
$bottom-sheet-grid-font-weight: 300 !default;
|
||||
|
||||
md-bottom-sheet {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
padding: $bottom-sheet-vertical-padding $bottom-sheet-horizontal-padding $bottom-sheet-vertical-padding + $bottom-sheet-hidden-bottom-padding $bottom-sheet-horizontal-padding;
|
||||
z-index: $z-index-bottom-sheet;
|
||||
|
||||
border-top: 1px solid;
|
||||
|
||||
transform: translate3d(0, $bottom-sheet-hidden-bottom-padding, 0);
|
||||
transition: $swift-ease-out;
|
||||
transition-property: transform;
|
||||
|
||||
&.md-has-header {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
&.ng-enter {
|
||||
opacity: 0;
|
||||
transform: translate3d(0, 100%, 0);
|
||||
}
|
||||
|
||||
&.ng-enter-active {
|
||||
opacity: 1;
|
||||
display: block;
|
||||
transform: translate3d(0, $bottom-sheet-hidden-bottom-padding, 0) !important;
|
||||
}
|
||||
|
||||
|
||||
&.ng-leave-active {
|
||||
transform: translate3d(0, 100%, 0) !important;
|
||||
transition: $swift-ease-in;
|
||||
}
|
||||
|
||||
.md-subheader {
|
||||
background-color: transparent;
|
||||
font-family: $font-family;
|
||||
line-height: $bottom-sheet-header-height;
|
||||
padding: 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
md-inline-icon {
|
||||
display: inline-block;
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
fill: #444;
|
||||
}
|
||||
|
||||
md-item {
|
||||
display: flex;
|
||||
outline: none;
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
&.md-list {
|
||||
md-item {
|
||||
align-items: center;
|
||||
height: $bottom-sheet-list-item-height;
|
||||
|
||||
div.md-icon-container {
|
||||
display: inline-block;
|
||||
height: 3 * $baseline-grid;
|
||||
margin-right: $bottom-sheet-icon-after-margin;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
&.md-grid {
|
||||
padding-left: 3 * $baseline-grid;
|
||||
padding-right: 3 * $baseline-grid;
|
||||
padding-top: 0;
|
||||
|
||||
md-list {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
transition: all 0.5s;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
md-item {
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
transition: all 0.5s;
|
||||
|
||||
height: 12 * $baseline-grid;
|
||||
|
||||
margin-top: $baseline-grid;
|
||||
margin-bottom: $baseline-grid;
|
||||
|
||||
/* Mixin for how many grid items to show per row */
|
||||
@mixin grid-items-per-row($num, $alignEdges: false) {
|
||||
$width: 100% / $num;
|
||||
flex: 1 1 $width;
|
||||
max-width: $width;
|
||||
|
||||
@if $alignEdges {
|
||||
&:nth-of-type(#{$num}n + 1) {
|
||||
align-items: flex-start;
|
||||
}
|
||||
&:nth-of-type(#{$num}n) {
|
||||
align-items: flex-end;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: $layout-breakpoint-sm) {
|
||||
@include grid-items-per-row(3, true);
|
||||
}
|
||||
|
||||
@media screen and (min-width: $layout-breakpoint-sm) and (max-width: $layout-breakpoint-md) {
|
||||
@include grid-items-per-row(4);
|
||||
}
|
||||
|
||||
@media screen and (min-width: $layout-breakpoint-md) and (max-width: $layout-breakpoint-lg) {
|
||||
@include grid-items-per-row(6);
|
||||
}
|
||||
|
||||
@media screen and (min-width: $layout-breakpoint-lg) {
|
||||
@include grid-items-per-row(7);
|
||||
}
|
||||
|
||||
|
||||
|
||||
.md-item-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
width: 6 * $baseline-grid;
|
||||
padding-bottom: 2 * $baseline-grid;
|
||||
}
|
||||
|
||||
.md-grid-item-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
width: 10 * $baseline-grid;
|
||||
}
|
||||
|
||||
.md-icon-container {
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
height: 6 * $baseline-grid;
|
||||
width: 6 * $baseline-grid;
|
||||
margin: 0 0;
|
||||
}
|
||||
|
||||
p.md-grid-text {
|
||||
font-weight: $bottom-sheet-grid-font-weight;
|
||||
line-height: 2 * $baseline-grid;
|
||||
font-size: 2 * $baseline-grid - 3;
|
||||
margin: 0;
|
||||
white-space: nowrap;
|
||||
width: 8 * $baseline-grid;
|
||||
text-align: center;
|
||||
padding-top: 1 * $baseline-grid;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Vendored
+44
@@ -0,0 +1,44 @@
|
||||
describe('$mdBottomSheet service', function() {
|
||||
beforeEach(module('material.components.bottomSheet', 'ngAnimateMock'));
|
||||
|
||||
describe('#build()', function() {
|
||||
it('should escapeToClose == true', inject(function($mdBottomSheet, $rootScope, $rootElement, $timeout, $animate, $mdConstant) {
|
||||
var parent = angular.element('<div>');
|
||||
$mdBottomSheet.show({
|
||||
template: '<md-bottom-sheet>',
|
||||
parent: parent,
|
||||
escapeToClose: true
|
||||
});
|
||||
$rootScope.$apply();
|
||||
|
||||
$animate.triggerCallbacks();
|
||||
|
||||
expect(parent.find('md-bottom-sheet').length).toBe(1);
|
||||
|
||||
$rootElement.triggerHandler({type: 'keyup',
|
||||
keyCode: $mdConstant.KEY_CODE.ESCAPE
|
||||
});
|
||||
|
||||
$timeout.flush();
|
||||
expect(parent.find('md-bottom-sheet').length).toBe(0);
|
||||
}));
|
||||
|
||||
it('should escapeToClose == false', inject(function($mdBottomSheet, $rootScope, $rootElement, $timeout, $animate, $mdConstant) {
|
||||
var parent = angular.element('<div>');
|
||||
$mdBottomSheet.show({
|
||||
template: '<md-bottom-sheet>',
|
||||
parent: parent,
|
||||
escapeToClose: false
|
||||
});
|
||||
$rootScope.$apply();
|
||||
|
||||
$animate.triggerCallbacks();
|
||||
|
||||
expect(parent.find('md-bottom-sheet').length).toBe(1);
|
||||
|
||||
$rootElement.triggerHandler({ type: 'keyup', keyCode: $mdConstant.KEY_CODE.ESCAPE });
|
||||
|
||||
expect(parent.find('md-bottom-sheet').length).toBe(1);
|
||||
}));
|
||||
});
|
||||
});
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
<md-bottom-sheet class="md-grid">
|
||||
<md-list>
|
||||
<md-item ng-repeat="item in items">
|
||||
|
||||
<md-button class="md-grid-item-content" aria-label="{{item.name}}" ng-click="listItemClick($index)">
|
||||
<div class="md-icon-container">
|
||||
<md-inline-grid-icon icon="{{item.icon}}"></md-inline-grid-icon>
|
||||
</div>
|
||||
<p class="md-grid-text"> {{ item.name }} </p>
|
||||
</md-button>
|
||||
|
||||
</md-item>
|
||||
</md-list>
|
||||
</md-bottom-sheet>
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
<md-bottom-sheet class="md-list md-has-header">
|
||||
<md-subheader>Comment Actions</md-subheader>
|
||||
<md-list>
|
||||
<md-item ng-repeat="item in items">
|
||||
<md-button aria-label="{{item.name}}" ng-click="listItemClick($index)">
|
||||
<!-- Using custom inline icon until md-icon is ready. DONT USE ME! -->
|
||||
<md-inline-list-icon icon="{{item.icon}}"></md-inline-list-icon>
|
||||
<span class="md-inline-list-icon-label">{{ item.name }}</span>
|
||||
</md-button>
|
||||
</md-item>
|
||||
</md-list>
|
||||
</md-bottom-sheet>
|
||||
UI/WebServerResources/scss/vendors/angular-material/components/bottomSheet/demoBasicUsage/index.html
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
<div ng-controller="BottomSheetExample">
|
||||
<p style="padding-left: 20px;">
|
||||
Bottom sheet can be dismissed with the service or a swipe down.
|
||||
</p>
|
||||
<div class="bottom-sheet-demo inset" layout="column" layout-sm="row" layout-align="center">
|
||||
<md-button class="md-primary" ng-click="showListBottomSheet($event)">
|
||||
Show as List
|
||||
</md-button>
|
||||
<div style="width:50px;"></div>
|
||||
<md-button class="md-primary" ng-click="showGridBottomSheet($event)">
|
||||
Show as Grid
|
||||
</md-button>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
<b layout="row" layout-align="center center" layout-margin>
|
||||
{{alert}}
|
||||
</b>
|
||||
</div>
|
||||
Vendored
+58
@@ -0,0 +1,58 @@
|
||||
angular.module('bottomSheetDemo1', ['ngMaterial'])
|
||||
|
||||
.controller('BottomSheetExample', function($scope, $timeout, $mdBottomSheet) {
|
||||
$scope.alert = '';
|
||||
|
||||
$scope.showListBottomSheet = function($event) {
|
||||
$scope.alert = '';
|
||||
$mdBottomSheet.show({
|
||||
templateUrl: 'bottom-sheet-list-template.html',
|
||||
controller: 'ListBottomSheetCtrl',
|
||||
targetEvent: $event
|
||||
}).then(function(clickedItem) {
|
||||
$scope.alert = clickedItem.name + ' clicked!';
|
||||
});
|
||||
};
|
||||
|
||||
$scope.showGridBottomSheet = function($event) {
|
||||
$scope.alert = '';
|
||||
$mdBottomSheet.show({
|
||||
templateUrl: 'bottom-sheet-grid-template.html',
|
||||
controller: 'GridBottomSheetCtrl',
|
||||
targetEvent: $event
|
||||
}).then(function(clickedItem) {
|
||||
$scope.alert = clickedItem.name + ' clicked!';
|
||||
});
|
||||
};
|
||||
})
|
||||
|
||||
.controller('ListBottomSheetCtrl', function($scope, $mdBottomSheet) {
|
||||
|
||||
$scope.items = [
|
||||
{ name: 'Share', icon: 'share' },
|
||||
{ name: 'Upload', icon: 'upload' },
|
||||
{ name: 'Copy', icon: 'copy' },
|
||||
{ name: 'Print this page', icon: 'print' },
|
||||
];
|
||||
|
||||
$scope.listItemClick = function($index) {
|
||||
var clickedItem = $scope.items[$index];
|
||||
$mdBottomSheet.hide(clickedItem);
|
||||
};
|
||||
})
|
||||
.controller('GridBottomSheetCtrl', function($scope, $mdBottomSheet) {
|
||||
|
||||
$scope.items = [
|
||||
{ name: 'Hangout', icon: 'hangout' },
|
||||
{ name: 'Mail', icon: 'mail' },
|
||||
{ name: 'Message', icon: 'message' },
|
||||
{ name: 'Copy', icon: 'copy' },
|
||||
{ name: 'Facebook', icon: 'facebook' },
|
||||
{ name: 'Twitter', icon: 'twitter' },
|
||||
];
|
||||
|
||||
$scope.listItemClick = function($index) {
|
||||
var clickedItem = $scope.items[$index];
|
||||
$mdBottomSheet.hide(clickedItem);
|
||||
};
|
||||
});
|
||||
Vendored
+64
@@ -0,0 +1,64 @@
|
||||
|
||||
/* Temporary fix until md-icon is working, DO NOT USE! */
|
||||
md-inline-list-icon {
|
||||
display: inline-block;
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
}
|
||||
|
||||
.md-inline-list-icon-label {
|
||||
padding-left: 20px;
|
||||
display: inline-block;
|
||||
margin-top: -5px;
|
||||
height: 24px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
md-inline-list-icon[icon=share] {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjRweCINCgkgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJIZWFkZXIiPg0KCTxnPg0KCQk8cmVjdCB4PSItNjE4IiB5PSItMTA4MCIgZmlsbD0ibm9uZSIgd2lkdGg9IjE0MDAiIGhlaWdodD0iMzYwMCIvPg0KCTwvZz4NCjwvZz4NCjxnIGlkPSJMYWJlbCI+DQo8L2c+DQo8ZyBpZD0iSWNvbiI+DQoJPGc+DQoJCTxwYXRoIGZpbGw9IiM3ZDdkN2QiIGQ9Ik0yMSwxMWwtNy03djRDNyw5LDQsMTQsMywxOWMyLjUtMy41LDYtNS4xLDExLTUuMVYxOEwyMSwxMXoiLz4NCgkJPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+DQoJPC9nPg0KPC9nPg0KPGcgaWQ9IkdyaWQiIGRpc3BsYXk9Im5vbmUiPg0KCTxnIGRpc3BsYXk9ImlubGluZSI+DQoJPC9nPg0KPC9nPg0KPC9zdmc+');
|
||||
}
|
||||
|
||||
md-inline-list-icon[icon=upload] {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjRweCINCgkgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJIZWFkZXIiPg0KCTxnPg0KCQk8cmVjdCB4PSItNjE4IiB5PSItMjIzMiIgZmlsbD0ibm9uZSIgd2lkdGg9IjE0MDAiIGhlaWdodD0iMzYwMCIvPg0KCTwvZz4NCjwvZz4NCjxnIGlkPSJMYWJlbCI+DQo8L2c+DQo8ZyBpZD0iSWNvbiI+DQoJPGc+DQoJCTxyZWN0IGZpbGw9Im5vbmUiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIvPg0KCQk8cGF0aCBmaWxsPSIjN2Q3ZDdkIiBkPSJNMTkuNCwxMGMtMC43LTMuNC0zLjctNi03LjQtNkM5LjEsNCw2LjYsNS42LDUuNCw4QzIuMyw4LjQsMCwxMC45LDAsMTRjMCwzLjMsMi43LDYsNiw2aDEzYzIuOCwwLDUtMi4yLDUtNQ0KCQkJQzI0LDEyLjQsMjEuOSwxMC4yLDE5LjQsMTB6IE0xNCwxM3Y0aC00di00SDdsNS01bDUsNUgxNHoiLz4NCgk8L2c+DQo8L2c+DQo8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+DQoJPGcgZGlzcGxheT0iaW5saW5lIj4NCgk8L2c+DQo8L2c+DQo8L3N2Zz4=');
|
||||
}
|
||||
|
||||
md-inline-list-icon[icon=copy] {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjRweCINCgkgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJIZWFkZXIiPg0KCTxnPg0KCQk8cmVjdCB4PSItNjE4IiB5PSItMTcyMCIgZmlsbD0ibm9uZSIgd2lkdGg9IjE0MDAiIGhlaWdodD0iMzYwMCIvPg0KCTwvZz4NCjwvZz4NCjxnIGlkPSJMYWJlbHMiPg0KPC9nPg0KPGcgaWQ9Ikljb24iPg0KCTxnPg0KCQk8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4NCgkJPHBhdGggZmlsbD0iIzdkN2Q3ZCIgZD0iTTE2LDFINEMyLjksMSwyLDEuOSwyLDN2MTRoMlYzaDEyVjF6IE0xOSw1SDhDNi45LDUsNiw1LjksNiw3djE0YzAsMS4xLDAuOSwyLDIsMmgxMWMxLjEsMCwyLTAuOSwyLTJWNw0KCQkJQzIxLDUuOSwyMC4xLDUsMTksNXogTTE5LDIxSDhWN2gxMVYyMXoiLz4NCgk8L2c+DQo8L2c+DQo8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+DQoJPGcgZGlzcGxheT0iaW5saW5lIj4NCgk8L2c+DQo8L2c+DQo8L3N2Zz4=');
|
||||
}
|
||||
|
||||
md-inline-list-icon[icon=print] {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjRweCINCgkgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJIZWFkZXIiPg0KCTxnPg0KCQk8cmVjdCB4PSItNjE4IiB5PSItMTQ2NCIgZmlsbD0ibm9uZSIgd2lkdGg9IjE0MDAiIGhlaWdodD0iMzYwMCIvPg0KCTwvZz4NCjwvZz4NCjxnIGlkPSJMYWJlbCI+DQo8L2c+DQo8ZyBpZD0iSWNvbiI+DQoJPGc+DQoJCTxnPg0KCQkJPHBhdGggZD0iTTE5LDhINWMtMS43LDAtMywxLjMtMywzdjZoNHY0aDEydi00aDR2LTZDMjIsOS4zLDIwLjcsOCwxOSw4eiBNMTYsMTlIOHYtNWg4VjE5eiBNMTksMTJjLTAuNiwwLTEtMC40LTEtMXMwLjQtMSwxLTENCgkJCQljMC42LDAsMSwwLjQsMSwxUzE5LjYsMTIsMTksMTJ6IE0xOCwzSDZ2NGgxMlYzeiIgZmlsbD0iIzdkN2Q3ZCIvPg0KCQk8L2c+DQoJCTxyZWN0IGZpbGw9Im5vbmUiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIvPg0KCTwvZz4NCjwvZz4NCjxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4NCgk8ZyBkaXNwbGF5PSJpbmxpbmUiPg0KCTwvZz4NCjwvZz4NCjwvc3ZnPg==');
|
||||
}
|
||||
|
||||
.md-icon-container md-inline-grid-icon {
|
||||
display: inline-block;
|
||||
height: 48px;
|
||||
width: 48px;
|
||||
}
|
||||
|
||||
md-inline-grid-icon[icon=hangout] {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNDhweCINCgkgaGVpZ2h0PSI0OHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDQ4IDQ4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJIZWFkZXIiPg0KCTxnPg0KCQk8cmVjdCB4PSItODM4IiB5PSItMjIzMiIgZmlsbD0ibm9uZSIgd2lkdGg9IjE0MDAiIGhlaWdodD0iMzYwMCIvPg0KCTwvZz4NCjwvZz4NCjxnIGlkPSJMYWJlbHMiPg0KPC9nPg0KPGcgaWQ9Ikljb24iPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjMTU5RjVDIiBkPSJNMjMsNEMxMy42LDQsNiwxMS42LDYsMjFzNy42LDE3LDE3LDE3aDF2N2M5LjctNC43LDE2LTE1LDE2LTI0QzQwLDExLjYsMzIuNCw0LDIzLDR6IE0yMiwyMmwtMiw0aC0zbDItNGgtM3YtNmg2VjIyeg0KCQkJIE0zMCwyMmwtMiw0aC0zbDItNGgtM3YtNmg2VjIyeiIvPg0KCQk8cmVjdCB4PSIwIiBmaWxsPSJub25lIiB3aWR0aD0iNDgiIGhlaWdodD0iNDgiLz4NCgk8L2c+DQo8L2c+DQo8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+DQoJPGcgZGlzcGxheT0iaW5saW5lIj4NCgkJPGxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDBFNUZGIiBzdHJva2Utd2lkdGg9IjAuMSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiB4MT0iNDIiIHkxPSItMjIzMiIgeDI9IjQyIiB5Mj0iMTMyMCIvPg0KCTwvZz4NCjwvZz4NCjwvc3ZnPg0K');
|
||||
}
|
||||
|
||||
md-inline-grid-icon[icon=mail] {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNDhweCINCgkgaGVpZ2h0PSI0OHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDQ4IDQ4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJIZWFkZXIiPg0KCTxnPg0KCQk8cmVjdCB4PSItODM4IiB5PSItMjg3MiIgZmlsbD0ibm9uZSIgd2lkdGg9IjE0MDAiIGhlaWdodD0iMzYwMCIvPg0KCTwvZz4NCjwvZz4NCjxnIGlkPSJMYWJlbHMiPg0KPC9nPg0KPGcgaWQ9Ikljb24iPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjN2Q3ZDdkIiBkPSJNNDAsOEg4Yy0yLjIsMC00LDEuOC00LDRsMCwyNGMwLDIuMiwxLjgsNCw0LDRoMzJjMi4yLDAsNC0xLjgsNC00VjEyQzQ0LDkuOCw0Mi4yLDgsNDAsOHogTTQwLDE2TDI0LDI2TDgsMTZ2LTRsMTYsMTANCgkJCWwxNi0xMFYxNnoiLz4NCgkJPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4Ii8+DQoJPC9nPg0KPC9nPg0KPGcgaWQ9IkdyaWQiIGRpc3BsYXk9Im5vbmUiPg0KCTxnIGRpc3BsYXk9ImlubGluZSI+DQoJCTxsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwRTVGRiIgc3Ryb2tlLXdpZHRoPSIwLjEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgeDE9IjQyIiB5MT0iLTI4NzIiIHgyPSI0MiIgeTI9IjY4MCIvPg0KCTwvZz4NCjwvZz4NCjwvc3ZnPg0K');
|
||||
}
|
||||
|
||||
md-inline-grid-icon[icon=message] {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNDhweCINCgkgaGVpZ2h0PSI0OHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDQ4IDQ4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJIZWFkZXIiPg0KCTxnPg0KCQk8cmVjdCB4PSItODM4IiB5PSItMjc0NCIgZmlsbD0ibm9uZSIgd2lkdGg9IjE0MDAiIGhlaWdodD0iMzYwMCIvPg0KCTwvZz4NCjwvZz4NCjxnIGlkPSJMYWJlbHMiPg0KPC9nPg0KPGcgaWQ9Ikljb24iPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjN2Q3ZDdkIiBkPSJNNDAsNEg4QzUuOCw0LDQsNS44LDQsOGwwLDM2bDgtOGgyOGMyLjIsMCw0LTEuOCw0LTRWOEM0NCw1LjgsNDIuMiw0LDQwLDR6IE0zNiwyOEgxMnYtNGgyNFYyOHogTTM2LDIySDEydi00aDI0VjIyeg0KCQkJIE0zNiwxNkgxMnYtNGgyNFYxNnoiLz4NCgkJPHJlY3QgeD0iMCIgZmlsbD0ibm9uZSIgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4Ii8+DQoJPC9nPg0KPC9nPg0KPGcgaWQ9IkdyaWQiIGRpc3BsYXk9Im5vbmUiPg0KCTxnIGRpc3BsYXk9ImlubGluZSI+DQoJCTxsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwRTVGRiIgc3Ryb2tlLXdpZHRoPSIwLjEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgeDE9IjQyIiB5MT0iLTI3NDQiIHgyPSI0MiIgeTI9IjgwOCIvPg0KCTwvZz4NCjwvZz4NCjwvc3ZnPg0K');
|
||||
}
|
||||
|
||||
md-inline-grid-icon[icon=copy] {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNDhweCINCgkgaGVpZ2h0PSI0OHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDQ4IDQ4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJIZWFkZXIiPg0KCTxnPg0KCQk8cmVjdCB4PSItODM4IiB5PSItMTcyMCIgZmlsbD0ibm9uZSIgd2lkdGg9IjE0MDAiIGhlaWdodD0iMzYwMCIvPg0KCTwvZz4NCjwvZz4NCjxnIGlkPSJMYWJlbHMiPg0KPC9nPg0KPGcgaWQ9Ikljb24iPg0KCTxnPg0KCQk8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iNDgiIGhlaWdodD0iNDgiLz4NCgkJPHBhdGggZmlsbD0iIzdkN2Q3ZCIgZD0iTTMyLDJIOEM1LjgsMiw0LDMuOCw0LDZ2MjhoNFY2aDI0VjJ6IE0zOCwxMEgxNmMtMi4yLDAtNCwxLjgtNCw0djI4YzAsMi4yLDEuOCw0LDQsNGgyMmMyLjIsMCw0LTEuOCw0LTRWMTQNCgkJCUM0MiwxMS44LDQwLjIsMTAsMzgsMTB6IE0zOCw0MkgxNlYxNGgyMlY0MnoiLz4NCgk8L2c+DQo8L2c+DQo8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+DQoJPGcgZGlzcGxheT0iaW5saW5lIj4NCgkJPGxpbmUgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDBFNUZGIiBzdHJva2Utd2lkdGg9IjAuMSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiB4MT0iNDIiIHkxPSItMTcyMCIgeDI9IjQyIiB5Mj0iMTgzMiIvPg0KCTwvZz4NCjwvZz4NCjwvc3ZnPg0K');
|
||||
}
|
||||
|
||||
md-inline-grid-icon[icon=facebook] {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNDhweCINCgkgaGVpZ2h0PSI0OHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDQ4IDQ4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJIZWFkZXIiPg0KCTxnPg0KCQk8cmVjdCB4PSItODM4IiB5PSItMzI1NiIgZmlsbD0ibm9uZSIgd2lkdGg9IjE0MDAiIGhlaWdodD0iMzYwMCIvPg0KCTwvZz4NCjwvZz4NCjxnIGlkPSJMYWJlbCI+DQo8L2c+DQo8ZyBpZD0iSWNvbiI+DQoJPGc+DQoJCTxnPg0KCQkJPHBhdGggZmlsbD0iIzdkN2Q3ZCIgZD0iTTQwLDRIOEM1LjgsNCw0LDUuOCw0LDhsMCwzMmMwLDIuMiwxLjgsNCw0LDRoMzJjMi4yLDAsNC0xLjgsNC00VjhDNDQsNS44LDQyLjIsNCw0MCw0eiBNMzgsOHY2aC00Yy0xLjEsMC0yLDAuOS0yLDJ2NA0KCQkJCWg2djZoLTZ2MTRoLTZWMjZoLTR2LTZoNHYtNWMwLTMuOSwzLjEtNyw3LTdIMzh6Ii8+DQoJCTwvZz4NCgkJPGc+DQoJCQk8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iNDgiIGhlaWdodD0iNDgiLz4NCgkJPC9nPg0KCTwvZz4NCjwvZz4NCjxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4NCgk8ZyBkaXNwbGF5PSJpbmxpbmUiPg0KCQk8bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiMwMEU1RkYiIHN0cm9rZS13aWR0aD0iMC4xIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHgxPSI0MiIgeTE9Ii0zMjU2IiB4Mj0iNDIiIHkyPSIyOTYiLz4NCgk8L2c+DQo8L2c+DQo8L3N2Zz4NCg==');
|
||||
}
|
||||
|
||||
md-inline-grid-icon[icon=twitter] {
|
||||
background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNDhweCINCgkgaGVpZ2h0PSI0OHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDQ4IDQ4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJIZWFkZXIiPg0KCTxnPg0KCQk8cmVjdCB4PSItODM4IiB5PSItOTUyIiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+DQoJPC9nPg0KPC9nPg0KPGcgaWQ9IkxhYmVsIj4NCjwvZz4NCjxnIGlkPSJJY29uIj4NCgk8Zz4NCgkJPGc+DQoJCQk8cGF0aCBmaWxsPSIjN2Q3ZDdkIiBkPSJNNDAsNEg4QzUuOCw0LDQsNS44LDQsOGwwLDMyYzAsMi4yLDEuOCw0LDQsNGgzMmMyLjIsMCw0LTEuOCw0LTRWOEM0NCw1LjgsNDIuMiw0LDQwLDR6IE0zNS40LDE4LjcNCgkJCQljLTAuMSw5LjItNiwxNS42LTE0LjgsMTZjLTMuNiwwLjItNi4zLTEtOC42LTIuNWMyLjcsMC40LDYtMC42LDcuOC0yLjJjLTIuNi0wLjMtNC4yLTEuNi00LjktMy44YzAuOCwwLjEsMS42LDAuMSwyLjMtMC4xDQoJCQkJYy0yLjQtMC44LTQuMS0yLjMtNC4yLTUuM2MwLjcsMC4zLDEuNCwwLjYsMi4zLDAuNmMtMS44LTEtMy4xLTQuNy0xLjYtNy4yYzIuNiwyLjksNS44LDUuMywxMSw1LjZjLTEuMy01LjYsNi4xLTguNiw5LjItNC45DQoJCQkJYzEuMy0wLjMsMi40LTAuOCwzLjQtMS4zYy0wLjQsMS4zLTEuMiwyLjItMi4yLDIuOWMxLjEtMC4xLDIuMS0wLjQsMi45LTAuOEMzNy41LDE2LjksMzYuNCwxNy45LDM1LjQsMTguN3oiLz4NCgkJPC9nPg0KCQk8Zz4NCgkJCTxyZWN0IGZpbGw9Im5vbmUiIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIvPg0KCQk8L2c+DQoJPC9nPg0KPC9nPg0KPGcgaWQ9IkdyaWQiIGRpc3BsYXk9Im5vbmUiPg0KCTxnIGRpc3BsYXk9ImlubGluZSI+DQoJCTxsaW5lIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwRTVGRiIgc3Ryb2tlLXdpZHRoPSIwLjEiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgeDE9IjQyIiB5MT0iLTk1MiIgeDI9IjQyIiB5Mj0iMjYwMCIvPg0KCTwvZz4NCjwvZz4NCjwvc3ZnPg0K');
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user