ionic-Material Design , Codecanyon
BIN
IonicMaterialDesign/www/.DS_Store
vendored
Normal file
66
IonicMaterialDesign/www/app-data/product-list.json
Normal file
@@ -0,0 +1,66 @@
|
||||
[
|
||||
{
|
||||
"title": "Plain Shirt",
|
||||
"detail": "A shirt with plain design.",
|
||||
"fullDetail": "Plain design shirt. Created by material team.",
|
||||
"img": "img/shirt_01.png",
|
||||
"price": "590",
|
||||
"promotionPrice": "59"
|
||||
},
|
||||
{
|
||||
"title": "Spring Shirt",
|
||||
"detail": "Made by high quality silk",
|
||||
"fullDetail": "Plain design shirt. Created by material team. Made by high quality material.",
|
||||
"img": "img/shirt_05.png",
|
||||
"price": "800",
|
||||
"promotionPrice": "80"
|
||||
},
|
||||
{
|
||||
"title": "Plain Shirt",
|
||||
"detail": "A shirt with plain design.",
|
||||
"fullDetail": "Plain design shirt made by material.",
|
||||
"img": "img/shirt_03.png",
|
||||
"price": "450",
|
||||
"promotionPrice": "45"
|
||||
},
|
||||
{
|
||||
"title": "Spring Shirt",
|
||||
"detail": "Made by quality silk",
|
||||
"fullDetail": "Plain design shirt. Created by material team.",
|
||||
"img": "img/shirt_04.png",
|
||||
"price": "800",
|
||||
"promotionPrice": "80"
|
||||
},
|
||||
{
|
||||
"title": "Spring Shirt",
|
||||
"detail": "Made by quality silk",
|
||||
"fullDetail": "Plain design shirt made by high quality material.",
|
||||
"img": "img/shirt_05.png",
|
||||
"price": "990",
|
||||
"promotionPrice": "99"
|
||||
},
|
||||
{
|
||||
"title": "Plain Shirt",
|
||||
"detail": "A shirt with plain design.",
|
||||
"fullDetail": "Plain design shirt made by high quality material.",
|
||||
"img": "img/shirt_02.png",
|
||||
"price": "100",
|
||||
"promotionPrice": "10"
|
||||
},
|
||||
{
|
||||
"title": "Plain Shirt",
|
||||
"detail": "A shirt with plain design.",
|
||||
"fullDetail": "Plain design shirt made by high quality material.",
|
||||
"img": "img/shirt_06.png",
|
||||
"price": "870",
|
||||
"promotionPrice": "87"
|
||||
},
|
||||
{
|
||||
"title": "Plain Shirt",
|
||||
"detail": "A shirt with plain design.",
|
||||
"fullDetail": "Plain design shirt made by high quality material.",
|
||||
"img": "img/shirt_01.png",
|
||||
"price": "300",
|
||||
"promotionPrice": "30"
|
||||
}
|
||||
]
|
||||
9076
IonicMaterialDesign/www/css/ionic.app.css
Normal file
1
IonicMaterialDesign/www/css/ionic.app.min.css
vendored
Normal file
1785
IonicMaterialDesign/www/css/style.css
Normal file
1
IonicMaterialDesign/www/css/style.min.css
vendored
Normal file
BIN
IonicMaterialDesign/www/img/.DS_Store
vendored
Normal file
BIN
IonicMaterialDesign/www/img/app_icon.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
IonicMaterialDesign/www/img/background_cover_pixels.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
IonicMaterialDesign/www/img/bg_cover_01.png
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
IonicMaterialDesign/www/img/contract_us_bg.jpg
Normal file
|
After Width: | Height: | Size: 119 KiB |
BIN
IonicMaterialDesign/www/img/cube_feed_01.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
IonicMaterialDesign/www/img/cube_feed_02.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
IonicMaterialDesign/www/img/cube_feed_03.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
IonicMaterialDesign/www/img/cube_feed_04.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
IonicMaterialDesign/www/img/food_01.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
IonicMaterialDesign/www/img/food_02.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
IonicMaterialDesign/www/img/food_03.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
IonicMaterialDesign/www/img/food_04.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
IonicMaterialDesign/www/img/food_05.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
IonicMaterialDesign/www/img/food_06.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
IonicMaterialDesign/www/img/food_07.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
IonicMaterialDesign/www/img/food_08.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
IonicMaterialDesign/www/img/food_09.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
IonicMaterialDesign/www/img/food_10.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
IonicMaterialDesign/www/img/food_cover_01.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
IonicMaterialDesign/www/img/food_cover_02.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
IonicMaterialDesign/www/img/food_cover_03.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
1
IonicMaterialDesign/www/img/icons/facebook.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"><g><g><g><path fill="#7d7d7d" d="M40,4H8C5.8,4,4,5.8,4,8l0,32c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V8C44,5.8,42.2,4,40,4z M38,8v6h-4c-1.1,0-2,0.9-2,2v4h6v6h-6v14h-6V26h-4v-6h4v-5c0-3.9,3.1-7,7-7H38z"/></g><g><rect fill="none" width="48" height="48"/></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 403 B |
4
IonicMaterialDesign/www/img/icons/favorite.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||
<path d="M0 0h24v24h-24z" fill="none"/>
|
||||
<path d="M12 21.35l-1.45-1.32c-5.15-4.67-8.55-7.75-8.55-11.53 0-3.08 2.42-5.5 5.5-5.5 1.74 0 3.41.81 4.5 2.09 1.09-1.28 2.76-2.09 4.5-2.09 3.08 0 5.5 2.42 5.5 5.5 0 3.78-3.4 6.86-8.55 11.54l-1.45 1.31z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 344 B |
1
IonicMaterialDesign/www/img/icons/mail.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"><g><g><path fill="#7d7d7d" d="M40,8H8c-2.2,0-4,1.8-4,4l0,24c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V12C44,9.8,42.2,8,40,8z M40,16L24,26L8,16v-4l16,10l16-10V16z"/><rect fill="none" width="48" height="48"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 351 B |
4
IonicMaterialDesign/www/img/icons/menu.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
|
||||
<path d="M0 0h18v18h-18z" fill="none"/>
|
||||
<path d="M2 13.5h14v-1.5h-14v1.5zm0-4h14v-1.5h-14v1.5zm0-5.5v1.5h14v-1.5h-14z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 220 B |
1
IonicMaterialDesign/www/img/icons/message.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"><g><g><path fill="#7d7d7d" d="M40,4H8C5.8,4,4,5.8,4,8l0,36l8-8h28c2.2,0,4-1.8,4-4V8C44,5.8,42.2,4,40,4z M36,28H12v-4h24V28z M36,22H12v-4h24V22zM36,16H12v-4h24V16z"/><rect x="0" fill="none" width="48" height="48"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 365 B |
4
IonicMaterialDesign/www/img/icons/more_vert.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
|
||||
<path d="M0 0h18v18h-18z" fill="none"/>
|
||||
<path d="M9 5.5c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5-1.5.67-1.5 1.5.67 1.5 1.5 1.5zm0 2c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0 5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 378 B |
1
IonicMaterialDesign/www/img/icons/share-arrow.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"><g><g><path fill="#7d7d7d" d="M21,11l-7-7v4C7,9,4,14,3,19c2.5-3.5,6-5.1,11-5.1V18L21,11z"/><rect fill="none" width="24" height="24"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 285 B |
2
IonicMaterialDesign/www/img/icons/twitter.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"><g><g><g><path fill="#7d7d7d" d="M40,4H8C5.8,4,4,5.8,4,8l0,32c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V8C44,5.8,42.2,4,40,4z M35.4,18.7c-0.1,9.2-6,15.6-14.8,16c-3.6,0.2-6.3-1-8.6-2.5c2.7,0.4,6-0.6,7.8-2.2c-2.6-0.3-4.2-1.6-4.9-3.8c0.8,0.1,1.6,0.1,2.3-0.1
|
||||
c-2.4-0.8-4.1-2.3-4.2-5.3c0.7,0.3,1.4,0.6,2.3,0.6c-1.8-1-3.1-4.7-1.6-7.2c2.6,2.9,5.8,5.3,11,5.6c-1.3-5.6,6.1-8.6,9.2-4.9c1.3-0.3,2.4-0.8,3.4-1.3c-0.4,1.3-1.2,2.2-2.2,2.9c1.1-0.1,2.1-0.4,2.9-0.8C37.5,16.9,36.4,17.9,35.4,18.7z"/></g><g><rect fill="none" width="48" height="48"/></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 680 B |
BIN
IonicMaterialDesign/www/img/location_feed_01.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
IonicMaterialDesign/www/img/location_feed_02.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
IonicMaterialDesign/www/img/location_feed_03.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
IonicMaterialDesign/www/img/location_feed_04.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
IonicMaterialDesign/www/img/location_feed_05.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
IonicMaterialDesign/www/img/profileAvatar.jpg
Normal file
|
After Width: | Height: | Size: 559 KiB |
BIN
IonicMaterialDesign/www/img/shirt_01.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
IonicMaterialDesign/www/img/shirt_02.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
IonicMaterialDesign/www/img/shirt_03.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
IonicMaterialDesign/www/img/shirt_04.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
IonicMaterialDesign/www/img/shirt_05.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
IonicMaterialDesign/www/img/shirt_06.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
IonicMaterialDesign/www/img/slide_01.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
IonicMaterialDesign/www/img/slide_02.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
IonicMaterialDesign/www/img/slide_03.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
IonicMaterialDesign/www/img/slide_04.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
IonicMaterialDesign/www/img/slide_05.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
IonicMaterialDesign/www/img/slide_06.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
IonicMaterialDesign/www/img/slide_07.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
IonicMaterialDesign/www/img/slide_08.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
142
IonicMaterialDesign/www/index.html
Normal file
@@ -0,0 +1,142 @@
|
||||
<!--This is a main HTML file of project default page when application start.-->
|
||||
<!--All reference of css and javascript lib is here.-->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<!--head section This is a place of all reference of css and javascript lib-->
|
||||
<head>
|
||||
<!-- Meta section -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
|
||||
<meta name="format-detection" content="telephone=no"> <!-- To disable phone number typing.-->
|
||||
<!-- end Meta section -->
|
||||
<title></title>
|
||||
|
||||
<!-- Font reference section -->
|
||||
<link href="lib/robotodraft/robotodraft.css">
|
||||
<!-- end Font reference section -->
|
||||
|
||||
<!-- CSS reference section -->
|
||||
<link rel="stylesheet" href="css/ionic.app.css">
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<link rel="stylesheet prefetch" href="lib/angular-material/angular-material.css">
|
||||
<link rel="stylesheet" href="lib/font-awesome-4.4.0/css/font-awesome.css">
|
||||
<!-- end CSS reference section -->
|
||||
|
||||
<!-- Ionic javascript lib -->
|
||||
<script src="lib/ionic/js/ionic.bundle.js"></script>
|
||||
<!-- end Ionic javascript lib -->
|
||||
|
||||
<!-- Angular javascript lib -->
|
||||
<script src="lib/angular-messages/angular-messages.js"></script>
|
||||
<script src="lib/angular-aria/angular-aria.js"></script>
|
||||
<script src="lib/angular-material/angular-material.js"></script>
|
||||
<!-- end Angular javascript lib -->
|
||||
|
||||
<!-- Cordova script (this will be a 404 during development) -->
|
||||
<script src="lib/ngCordova/dist/ng-cordova.js"></script>
|
||||
<script src="cordova.js"></script>
|
||||
<!-- end Cordova script -->
|
||||
|
||||
<!--ionic framework ngIOS9UIWebViewPatch-->
|
||||
<!--Learn more about ngIOS9UIWebViewPatch at : http://blog.ionic.io/ios-9-potential-breaking-change/-->
|
||||
<script src="lib/ngIOS9UIWebViewPatch/angular-ios9-uiwebview.patch.js"></script>
|
||||
<!--end ionic framework ngIOS9UIWebViewPatch-->
|
||||
|
||||
<!-- app.js section-->
|
||||
<script src="js/app.js"></script>
|
||||
<!-- end app.js section-->
|
||||
|
||||
<!-- Controllers section-->
|
||||
<script src="js/controllers.js"></script>
|
||||
<script src="js/shared/directives.js"></script>
|
||||
<script src="js/shared/filter.js"></script>
|
||||
<script src="js/shared/controllers.js"></script>
|
||||
<script src="templates/menu/js/controllers.js"></script>
|
||||
<script src="templates/material-user-interface/dashboard/js/controllers.js"></script>
|
||||
<script src="templates/application-storage/sqLite/js/controllers.js"></script>
|
||||
<script src="templates/application-storage/sqLite/js/services.js"></script>
|
||||
<script src="templates/application-storage/local-application-db/js/controllers.js"></script>
|
||||
<script src="templates/application-storage/local-application-db/js/services.js"></script>
|
||||
<script src="templates/social-network-connect/facebook/js/controllers.js"></script>
|
||||
<script src="templates/social-network-connect/instagram/js/controllers.js"></script>
|
||||
<script src="templates/social-network-connect/google-plus/js/controllers.js"></script>
|
||||
<script src="templates/social-network-connect/foursquare/js/controllers.js"></script>
|
||||
<script src="templates/social-network-connect/dropbox/js/controllers.js"></script>
|
||||
<script src="templates/share-application-content/social-share/js/controllers.js"></script>
|
||||
<script src="templates/share-application-content/email-message/js/controllers.js"></script>
|
||||
<script src="templates/hardware-connect/device-information/js/controllers.js"></script>
|
||||
<script src="templates/hardware-connect/mobile-contract/js/controllers.js"></script>
|
||||
<script src="templates/hardware-connect/flash-light/js/controllers.js"></script>
|
||||
<script src="templates/hardware-connect/vibration/js/controllers.js"></script>
|
||||
<script src="templates/advertising-application/googleAdmob/js/controllers.js"></script>
|
||||
<script src="templates/hardware-connect/image-picker/js/controllers.js"></script>
|
||||
<script src="templates/social-network-connect/wordpress/js/controllers.js"></script>
|
||||
<script src="templates/material-user-interface/dashboard/js/controllers.js"></script>
|
||||
<script src="templates/material-user-interface/default-user-interface/js/controllers.js"></script>
|
||||
<script src="templates/themes/menu-dashboard/js/controllers.js"></script>
|
||||
<script src="templates/themes/expense-dashboard/js/controllers.js"></script>
|
||||
<script src="templates/themes/catalog/js/controllers.js"></script>
|
||||
<script src="templates/push-notification/single-push-notification/js/controllers.js"></script>
|
||||
<script src="templates/push-notification/schedule-push-notification/js/controllers.js"></script>
|
||||
<script src="templates/map-and-location/ios-map-connect/js/controllers.js"></script>
|
||||
<script src="templates/map-and-location/android-map-connect/js/controllers.js"></script>
|
||||
<!-- end Controllers section-->
|
||||
|
||||
<!-- jQuery section-->
|
||||
<script src="lib/jQuery/jquery.js"></script>
|
||||
<!-- end jQuery section-->
|
||||
|
||||
</head><!-- end head section-->
|
||||
|
||||
<!--body section-->
|
||||
<body ng-app="starter" class="hide-native-scroll-y">
|
||||
|
||||
<!--Custom Style section-->
|
||||
<style type="text/css">
|
||||
{{customStyle}}
|
||||
</style><!-- end Custom Style section-->
|
||||
|
||||
<!-- Ionic navigation bar section-->
|
||||
<ion-nav-view></ion-nav-view>
|
||||
<!-- end Ionic navigation bar section-->
|
||||
|
||||
</body><!-- end body section-->
|
||||
|
||||
|
||||
<!-- Angular custom template section-->
|
||||
|
||||
<!--Share template confirm-dialog section-->
|
||||
<script type="text/ng-template" id="confirm-dialog.html">
|
||||
<md-dialog aria-label="confirm-dialog">
|
||||
<form>
|
||||
<md-dialog-content>
|
||||
<div>
|
||||
<h2 class="md-title">{{displayOption.title}}</h2>
|
||||
|
||||
<p>{{displayOption.content}}</p>
|
||||
</div>
|
||||
</md-dialog-content>
|
||||
<div class="md-actions" layout="row">
|
||||
<a class="md-primary-color dialog-action-btn" ng-click="cancel()">
|
||||
{{displayOption.cancel}}
|
||||
</a>
|
||||
<a class="md-primary-color dialog-action-btn" ng-click="ok()">
|
||||
{{displayOption.ok}}
|
||||
</a>
|
||||
</div>
|
||||
</form>
|
||||
</md-dialog>
|
||||
</script> <!-- end share template confirm-dialog section-->
|
||||
|
||||
<!-- Share template toast section-->
|
||||
<script type="text/ng-template" id="toast.html">
|
||||
<md-toast class="toast-form">
|
||||
<span flex>{{displayOption.title}}</span>
|
||||
</md-toast>
|
||||
</script><!-- end share template toast section-->
|
||||
|
||||
<!-- end Angular custom template section-->
|
||||
|
||||
</html>
|
||||
918
IonicMaterialDesign/www/js/app.js
Normal file
@@ -0,0 +1,918 @@
|
||||
//
|
||||
//Welcome to app.js
|
||||
//This is main application config of project. You can change a setting of :
|
||||
// - Global Variable
|
||||
// - Theme setting
|
||||
// - Icon setting
|
||||
// - Register View
|
||||
// - Spinner setting
|
||||
// - Custom style
|
||||
//
|
||||
//Global variable use for setting color, start page, message, oAuth key.
|
||||
var db = null; //Use for SQLite database.
|
||||
window.globalVariable = {
|
||||
//custom color style variable
|
||||
color: {
|
||||
appPrimaryColor: "",
|
||||
dropboxColor: "#017EE6",
|
||||
facebookColor: "#3C5C99",
|
||||
foursquareColor: "#F94777",
|
||||
googlePlusColor: "#D73D32",
|
||||
instagramColor: "#517FA4",
|
||||
wordpressColor: "#0087BE"
|
||||
},// End custom color style variable
|
||||
startPage: {
|
||||
url: "/app/dashboard",//Url of start page.
|
||||
state: "app.dashboard"//State name of start page.
|
||||
},
|
||||
message: {
|
||||
errorMessage: "Technical error please try again later." //Default error message.
|
||||
},
|
||||
oAuth: {
|
||||
dropbox: "your_api_key",//Use for Dropbox API clientID.
|
||||
facebook: "your_api_key",//Use for Facebook API appID.
|
||||
foursquare: "your_api_key", //Use for Foursquare API clientID.
|
||||
instagram: "your_api_key",//Use for Instagram API clientID.
|
||||
googlePlus: "your_api_key",//Use for Google API clientID.
|
||||
},
|
||||
adMob: "your_api_key" //Use for AdMob API clientID.
|
||||
};// End Global variable
|
||||
|
||||
|
||||
angular.module('starter', ['ionic','ngIOS9UIWebViewPatch', 'starter.controllers', 'starter.services', 'ngMaterial', 'ngMessages', 'ngCordova'])
|
||||
.run(function ($ionicPlatform, $cordovaSQLite, $rootScope, $ionicHistory, $state, $mdDialog, $mdBottomSheet) {
|
||||
|
||||
//Create database table of contracts by using sqlite database.
|
||||
//Table schema :
|
||||
//Column Type Primary key
|
||||
// id Integer Yes
|
||||
// firstName Text No
|
||||
// lastName Text No
|
||||
// telephone Text No
|
||||
// email Text No
|
||||
// note Text No
|
||||
// createDate DateTime No
|
||||
// age Integer No
|
||||
// isEnable Boolean No
|
||||
|
||||
function initialSQLite() {
|
||||
db = window.cordova ? $cordovaSQLite.openDB("contract.db") : window.openDatabase("contract.db", "1.0", "IonicMaterialDesignDB", -1);
|
||||
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS contracts " +
|
||||
"( id integer primary key , " +
|
||||
" firstName text , " +
|
||||
" lastName text , " +
|
||||
" telephone text , " +
|
||||
" email text , " +
|
||||
" note text , " +
|
||||
" createDate dateTime , " +
|
||||
" age integer , " +
|
||||
" isEnable Boolean) ");
|
||||
};
|
||||
// End creating SQLite database table.
|
||||
|
||||
// Create custom defaultStyle.
|
||||
function getDefaultStyle() {
|
||||
return "" +
|
||||
".material-background-nav-bar { " +
|
||||
" background-color : " + appPrimaryColor + " !important; " +
|
||||
" border-style : none;" +
|
||||
"}" +
|
||||
".md-primary-color {" +
|
||||
" color : " + appPrimaryColor + " !important;" +
|
||||
"}";
|
||||
}// End create custom defaultStyle
|
||||
|
||||
// Create custom style for product view.
|
||||
function getProductStyle() {
|
||||
return "" +
|
||||
".material-background-nav-bar { " +
|
||||
" background-color : " + appPrimaryColor + " !important;" +
|
||||
" border-style : none;" +
|
||||
" background-image : url('img/background_cover_pixels.png') !important;" +
|
||||
" background-size : initial !important;" +
|
||||
"}" +
|
||||
".md-primary-color {" +
|
||||
" color : " + appPrimaryColor + " !important;" +
|
||||
"}";
|
||||
}// End create custom style for product view.
|
||||
|
||||
// Create custom style for contract us view.
|
||||
function getContractUsStyle() {
|
||||
return "" +
|
||||
".material-background-nav-bar { " +
|
||||
" background-color : transparent !important;" +
|
||||
" border-style : none;" +
|
||||
" background-image : none !important;" +
|
||||
" background-position-y : 4px !important;" +
|
||||
" background-size : initial !important;" +
|
||||
"}" +
|
||||
".md-primary-color {" +
|
||||
" color : " + appPrimaryColor + " !important;" +
|
||||
"}";
|
||||
} // End create custom style for contract us view.
|
||||
|
||||
// Create custom style for Social Network view.
|
||||
function getSocialNetworkStyle(socialColor) {
|
||||
return "" +
|
||||
".material-background-nav-bar {" +
|
||||
" background : " + socialColor + " !important;" +
|
||||
" border-style : none;" +
|
||||
"} " +
|
||||
"md-ink-bar {" +
|
||||
" color : " + socialColor + " !important;" +
|
||||
" background : " + socialColor + " !important;" +
|
||||
"}" +
|
||||
"md-tab-item {" +
|
||||
" color : " + socialColor + " !important;" +
|
||||
"}" +
|
||||
" md-progress-circular.md-warn .md-inner .md-left .md-half-circle {" +
|
||||
" border-left-color : " + socialColor + " !important;" +
|
||||
"}" +
|
||||
" md-progress-circular.md-warn .md-inner .md-left .md-half-circle, md-progress-circular.md-warn .md-inner .md-right .md-half-circle {" +
|
||||
" border-top-color : " + socialColor + " !important;" +
|
||||
"}" +
|
||||
" md-progress-circular.md-warn .md-inner .md-gap {" +
|
||||
" border-top-color : " + socialColor + " !important;" +
|
||||
" border-bottom-color : " + socialColor + " !important;" +
|
||||
"}" +
|
||||
"md-progress-circular.md-warn .md-inner .md-right .md-half-circle {" +
|
||||
" border-right-color : " + socialColor + " !important;" +
|
||||
" }" +
|
||||
".spinner-android {" +
|
||||
" stroke : " + socialColor + " !important;" +
|
||||
"}" +
|
||||
".md-primary-color {" +
|
||||
" color : " + socialColor + " !important;" +
|
||||
"}" +
|
||||
"a.md-button.md-primary, .md-button.md-primary {" +
|
||||
" color : " + socialColor + " !important;" +
|
||||
"}";
|
||||
}// End create custom style for Social Network view.
|
||||
|
||||
|
||||
function initialRootScope() {
|
||||
$rootScope.appPrimaryColor = appPrimaryColor;// Add value of appPrimaryColor to rootScope for use it to base color.
|
||||
$rootScope.isAndroid = ionic.Platform.isAndroid();// Check platform of running device is android or not.
|
||||
$rootScope.isIOS = ionic.Platform.isIOS();// Check platform of running device is ios or not.
|
||||
};
|
||||
|
||||
function hideActionControl() {
|
||||
//For android if user tap hardware back button, Action and Dialog should be hide.
|
||||
$mdBottomSheet.cancel();
|
||||
$mdDialog.cancel();
|
||||
};
|
||||
|
||||
|
||||
// createCustomStyle will change a style of view while view changing.
|
||||
// Parameter :
|
||||
// stateName = name of state that going to change for add style of that page.
|
||||
function createCustomStyle(stateName) {
|
||||
var customStyle =
|
||||
".material-background {" +
|
||||
" background-color : " + appPrimaryColor + " !important;" +
|
||||
" border-style : none;" +
|
||||
"}" +
|
||||
".spinner-android {" +
|
||||
" stroke : " + appPrimaryColor + " !important;" +
|
||||
"}";
|
||||
|
||||
switch (stateName) {
|
||||
case "app.productList" :
|
||||
case "app.productDetail":
|
||||
case "app.productCheckout":
|
||||
case "app.clothShop" :
|
||||
case "app.catalog" :
|
||||
customStyle += getProductStyle();
|
||||
break;
|
||||
case "app.dropboxLogin" :
|
||||
case "app.dropboxProfile":
|
||||
case "app.dropboxFeed" :
|
||||
customStyle += getSocialNetworkStyle(window.globalVariable.color.dropboxColor);
|
||||
break;
|
||||
case "app.facebookLogin" :
|
||||
case "app.facebookProfile":
|
||||
case "app.facebookFeed" :
|
||||
case "app.facebookFriendList":
|
||||
customStyle += getSocialNetworkStyle(window.globalVariable.color.facebookColor);
|
||||
break;
|
||||
case "app.foursquareLogin" :
|
||||
case "app.foursquareProfile":
|
||||
case "app.foursquareFeed" :
|
||||
customStyle += getSocialNetworkStyle(window.globalVariable.color.foursquareColor);
|
||||
break;
|
||||
case "app.googlePlusLogin" :
|
||||
case "app.googlePlusProfile":
|
||||
case "app.googlePlusFeed" :
|
||||
customStyle += getSocialNetworkStyle(window.globalVariable.color.googlePlusColor);
|
||||
break;
|
||||
case "app.instagramLogin" :
|
||||
case "app.instagramProfile":
|
||||
case "app.instagramFeed" :
|
||||
customStyle += getSocialNetworkStyle(window.globalVariable.color.instagramColor);
|
||||
break;
|
||||
case "app.wordpressLogin" :
|
||||
case "app.wordpressFeed":
|
||||
case "app.wordpressPost" :
|
||||
customStyle += getSocialNetworkStyle(window.globalVariable.color.wordpressColor);
|
||||
break;
|
||||
case "app.contractUs":
|
||||
customStyle += getContractUsStyle();
|
||||
break;
|
||||
default:
|
||||
customStyle += getDefaultStyle();
|
||||
break;
|
||||
}
|
||||
return customStyle;
|
||||
}// End createCustomStyle
|
||||
|
||||
// Add custom style while initial application.
|
||||
$rootScope.customStyle = createCustomStyle(window.globalVariable.startPage.state);
|
||||
|
||||
$ionicPlatform.ready(function () {
|
||||
ionic.Platform.isFullScreen = true;
|
||||
if (window.cordova && window.cordova.plugins.Keyboard) {
|
||||
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
|
||||
cordova.plugins.Keyboard.disableScroll(true);
|
||||
}
|
||||
if (window.StatusBar) {
|
||||
StatusBar.styleDefault();
|
||||
}
|
||||
|
||||
initialSQLite();
|
||||
initialRootScope();
|
||||
|
||||
//Checking if view is changing it will go to this function.
|
||||
$rootScope.$on('$ionicView.beforeEnter', function () {
|
||||
//hide Action Control for android back button.
|
||||
hideActionControl();
|
||||
// Add custom style ti view.
|
||||
$rootScope.customStyle = createCustomStyle($ionicHistory.currentStateName());
|
||||
});
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
.config(function ($ionicConfigProvider, $stateProvider, $urlRouterProvider, $mdThemingProvider, $mdIconProvider, $mdColorPalette, $mdIconProvider) {
|
||||
|
||||
|
||||
// Use for change ionic spinner to android pattern.
|
||||
$ionicConfigProvider.spinner.icon("android");
|
||||
$ionicConfigProvider.views.swipeBackEnabled(false);
|
||||
|
||||
// mdIconProvider is function of Angular Material.
|
||||
// It use for reference .SVG file and improve performance loading.
|
||||
$mdIconProvider
|
||||
.icon('facebook', 'img/icons/facebook.svg')
|
||||
.icon('twitter', 'img/icons/twitter.svg')
|
||||
.icon('mail', 'img/icons/mail.svg')
|
||||
.icon('message', 'img/icons/message.svg')
|
||||
.icon('share-arrow', 'img/icons/share-arrow.svg')
|
||||
.icon('more', 'img/icons/more_vert.svg');
|
||||
|
||||
//mdThemingProvider use for change theme color of Ionic Material Design Application.
|
||||
/* You can select color from Material Color List configuration :
|
||||
* red
|
||||
* pink
|
||||
* purple
|
||||
* purple
|
||||
* deep-purple
|
||||
* indigo
|
||||
* blue
|
||||
* light-blue
|
||||
* cyan
|
||||
* teal
|
||||
* green
|
||||
* light-green
|
||||
* lime
|
||||
* yellow
|
||||
* amber
|
||||
* orange
|
||||
* deep-orange
|
||||
* brown
|
||||
* grey
|
||||
* blue-grey
|
||||
*/
|
||||
//Learn more about material color patten: https://www.materialpalette.com/
|
||||
//Learn more about material theme: https://material.angularjs.org/latest/#/Theming/01_introduction
|
||||
$mdThemingProvider
|
||||
.theme('default')
|
||||
.primaryPalette('pink')
|
||||
.accentPalette('red');
|
||||
|
||||
appPrimaryColor = $mdColorPalette[$mdThemingProvider._THEMES.default.colors.primary.name]["500"]; //Use for get base color of theme.
|
||||
|
||||
//$stateProvider is using for add or edit HTML view to navigation bar.
|
||||
//
|
||||
//Schema :
|
||||
//state_name(String) : Name of state to use in application.
|
||||
//page_name(String) : Name of page to present at localhost url.
|
||||
//cache(Bool) : Cache of view and controller default is true. Change to false if you want page reload when application navigate back to this view.
|
||||
//html_file_path(String) : Path of html file.
|
||||
//controller_name(String) : Name of Controller.
|
||||
//
|
||||
//Learn more about ionNavView at http://ionicframework.com/docs/api/directive/ionNavView/
|
||||
//Learn more about AngularUI Router's at https://github.com/angular-ui/ui-router/wiki
|
||||
$stateProvider
|
||||
.state('app', {
|
||||
url: "/app",
|
||||
abstract: true,
|
||||
templateUrl: "templates/menu/html/menu.html",
|
||||
controller: 'menuCtrl'
|
||||
})
|
||||
.state('app.dashboard', {
|
||||
url: "/dashboard",
|
||||
params:{
|
||||
isAnimated:false
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/material-user-interface/dashboard/html/dashboard.html",
|
||||
controller: 'dashboardCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.dashboardSetting', {
|
||||
url: "/dashboardSetting",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/material-user-interface/dashboard/html/dashboard-setting.html",
|
||||
controller: "dashboardSettingCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.contractlist', {
|
||||
url: "/contractlist",
|
||||
cache: false,
|
||||
params:{
|
||||
isAnimated:(ionic.Platform.isAndroid()==false)
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/application-storage/sqLite/html/contract-list.html",
|
||||
controller: 'contractListCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.contractdetail', {
|
||||
url: "/contractdetail",
|
||||
params: {
|
||||
contractdetail: null,
|
||||
actionDelete: false
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/application-storage/sqLite/html/contract-detail.html",
|
||||
controller: 'contractDetailCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.contractsetting', {
|
||||
url: "/contractsetting",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/application-storage/sqLite/html/contract-setting.html",
|
||||
controller: 'contractSettingCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.notelist', {
|
||||
url: "/notelist",
|
||||
params:{
|
||||
isAnimated:false
|
||||
},
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/application-storage/local-application-db/html/note-list.html",
|
||||
controller: 'noteListCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.notedetail', {
|
||||
url: "/notedetail",
|
||||
params: {
|
||||
noteDetail: null,
|
||||
actionDelete: false
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/application-storage/local-application-db/html/note-detail.html",
|
||||
controller: 'noteDetailCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.notesetting', {
|
||||
url: "/notesetting",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/application-storage/local-application-db/html/note-setting.html",
|
||||
controller: 'noteSettingCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.facebookLogin', {
|
||||
url: "/facebookLogin",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/facebook/html/facebook-login.html",
|
||||
controller: 'facebookLoginCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.facebookProfile', {
|
||||
url: "/facebookProfile",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/facebook/html/facebook-profile.html",
|
||||
controller: 'facebookProfileCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.facebookFeed', {
|
||||
url: "/facebookFeed",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/facebook/html/facebook-feed.html",
|
||||
controller: 'facebookFeedCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.facebookFriendList', {
|
||||
url: "/facebookFriendList",
|
||||
cache: false,
|
||||
params: {
|
||||
access_token: null,
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/facebook/html/facebook-friend-list.html",
|
||||
controller: 'facebookFriendListCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.googlePlusLogin', {
|
||||
url: "/googlePlusLogin",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/google-plus/html/google-login.html",
|
||||
controller: 'googlePlusLoginCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.googlePlusProfile', {
|
||||
url: "/googlePlusProfile",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/google-plus/html/google-profile.html",
|
||||
controller: 'googlePlusProfileCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.googlePlusFeed', {
|
||||
url: "/googlePlusFeed",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/google-plus/html/google-feed.html",
|
||||
controller: 'googlePlusFeedCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.instagramLogin', {
|
||||
url: "/instagramLogin",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/instagram/html/instagram-login.html",
|
||||
controller: 'instagramLoginCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.instagramProfile', {
|
||||
url: "/instagramProfile",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/instagram/html/instagram-profile.html",
|
||||
controller: 'instagramProfileCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.instagramFeed', {
|
||||
url: "/instagramFeed",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/instagram/html/instagram-feed.html",
|
||||
controller: 'instagramFeedCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.foursquareLogin', {
|
||||
url: "/foursquareLogin",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/foursquare/html/foursquare-login.html",
|
||||
controller: 'foursquareLoginCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.foursquareProfile', {
|
||||
url: "/foursquareProfile",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/foursquare/html/foursquare-profile.html",
|
||||
controller: 'foursquareProfileCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.foursquareFeed', {
|
||||
url: "/foursquareFeed",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/foursquare/html/foursquare-feed.html",
|
||||
controller: 'foursquareFeedCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.dropboxLogin', {
|
||||
url: "/dropboxLogin",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/dropbox/html/dropbox-login.html",
|
||||
controller: 'dropboxLoginCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.dropboxProfile', {
|
||||
url: "/dropboxProfile",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/dropbox/html/dropbox-profile.html",
|
||||
controller: 'dropboxProfileCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.dropboxFeed', {
|
||||
url: "/dropboxFeed",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/dropbox/html/dropbox-feed.html",
|
||||
controller: 'dropboxFeedCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.fakeLogin', {
|
||||
url: "/fakeLogin",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/authentication/html/fake-login.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.fakeSignUp', {
|
||||
url: "/fakeSignUp",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/authentication/html/fake-sign-up.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.productList', {
|
||||
url: "/productList",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/share-application-content/social-share/html/product-list.html",
|
||||
controller: 'productListCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.productDetail', {
|
||||
url: "/productDetail",
|
||||
params: {
|
||||
product: null,
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/share-application-content/social-share/html/product-detail.html",
|
||||
controller: 'productDetailCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.productCheckout', {
|
||||
url: "/productCheckout",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/share-application-content/social-share/html/product-checkout.html",
|
||||
controller: 'productCheckoutCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.contractUs', {
|
||||
url: "/contractUs",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/share-application-content/email-message/html/contract-us.html",
|
||||
controller: 'contractUsCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.deviceInformation', {
|
||||
url: "/deviceInformation",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/hardware-connect/device-information/html/device-information.html",
|
||||
controller: 'deviceInformationCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.mobileContractList', {
|
||||
url: "/mobileContractList",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/hardware-connect/mobile-contract/html/mobile-contract-list.html",
|
||||
controller: 'mobileContractListCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.mobileContractDetail', {
|
||||
url: "/mobileContractDetail",
|
||||
params: {
|
||||
contractDetail: null,
|
||||
actionDelete: false
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/hardware-connect/mobile-contract/html/mobile-contract-detail.html",
|
||||
controller: 'mobileContractDetailCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.flashLight', {
|
||||
url: "/flashLight",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/hardware-connect/flash-light/html/flash-light.html",
|
||||
controller: 'flashLightCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.vibration', {
|
||||
url: "/vibration",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/hardware-connect/vibration/html/vibration.html",
|
||||
controller: 'vibrationCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.googleAdmob', {
|
||||
url: "/googleAdmob",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/advertising-application/googleAdmob/html/googleAdmob.html",
|
||||
controller: 'googleAdmobCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.imagePicker', {
|
||||
url: "/imagePicker",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/hardware-connect/image-picker/html/image-picker.html",
|
||||
controller: 'imagePickerCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
.state('app.wordpressFeed', {
|
||||
url: "/wordpressFeed",
|
||||
params: {
|
||||
wordpressUrl: null
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/wordpress/html/wordpress-feed.html",
|
||||
controller: 'wordpressFeedCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.wordpressLogin', {
|
||||
url: "/wordpressLogin",
|
||||
cache: false,
|
||||
params: {
|
||||
isShowError: false
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/wordpress/html/wordpress-login.html",
|
||||
controller: 'wordpressLoginCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.wordpressPost', {
|
||||
url: "/wordpressPost",
|
||||
cache: false,
|
||||
params: {
|
||||
postDetail: null,
|
||||
wordpressUrl: null
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/social-network-connect/wordpress/html/wordpress-post.html",
|
||||
controller: 'wordpressPostCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.defaultUI', {
|
||||
url: "/defaultUI",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/material-user-interface/default-user-interface/html/default-user-interface.html",
|
||||
controller: 'defaultUserInterfaceCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.tryApp', {
|
||||
url: "/tryApp",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/try-app/html/try-app.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.tryAppNoBackBtn', {
|
||||
url: "/tryAppNoBackBtn",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/try-app/html/try-app-no-back-btn.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.pricing', {
|
||||
url: "/pricing",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/pricing/html/pricing.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.menuDashboard', {
|
||||
url: "/menuDashboard",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/menu-dashboard/html/menu-dashboard.html",
|
||||
controller: "menuDashboardCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.expense', {
|
||||
url: "/expense",
|
||||
params:{
|
||||
isAnimated:true
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/expense-dashboard/html/expense-dashboard.html",
|
||||
controller: "expenseDashboardCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.expenseSetting', {
|
||||
url: "/expenseSetting",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/expense-dashboard/html/expense-dashboard-setting.html",
|
||||
controller: "expenseDashboardSettingCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.newsFeed', {
|
||||
url: "/newsFeed",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/news-feed/html/news-feed.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.clothShop', {
|
||||
url: "/clothShop",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/cloth-shop/html/cloth-shop.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.onlineCourse', {
|
||||
url: "/onlineCourse",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/online-course/html/online-course.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.catalog', {
|
||||
url: "/catalog",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/catalog/html/catalog.html",
|
||||
controller: "catalogCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.locationFeed', {
|
||||
url: "/locationFeed",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/location-feed/html/location-feed.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.cubeFeed', {
|
||||
url: "/cubeFeed",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/cube-feed/html/cube-feed.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.restaurant', {
|
||||
url: "/restaurant",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/restaurant/html/restaurant.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.singlePushNotification', {
|
||||
url: "/singlePushNotification",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/push-notification/single-push-notification/html/single-push-notification.html",
|
||||
controller: "singlePushNotificationCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.schedulePushNotification', {
|
||||
url: "/schedulePushNotification",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/push-notification/schedule-push-notification/html/schedule-push-notification.html",
|
||||
controller: "schedulePushNotificationCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.iosMapConnect', {
|
||||
url: "/iosMapConnect",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/map-and-location/ios-map-connect/html/ios-map-connect.html",
|
||||
controller: "iosMapConnectCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.androidMapConnect', {
|
||||
url: "/androidMapConnect",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/map-and-location/android-map-connect/html/android-map-connect.html",
|
||||
controller: "androidMapConnectCtrl"
|
||||
}
|
||||
}
|
||||
});// End $stateProvider
|
||||
|
||||
//Use $urlRouterProvider.otherwise(Url);
|
||||
$urlRouterProvider.otherwise(window.globalVariable.startPage.url);
|
||||
|
||||
});
|
||||
2
IonicMaterialDesign/www/js/controllers.js
Normal file
@@ -0,0 +1,2 @@
|
||||
var appControllers = angular.module('starter.controllers', []); // Use for all controller of application.
|
||||
var appServices = angular.module('starter.services', []);// Use for all service of application.
|
||||
34
IonicMaterialDesign/www/js/shared/controllers.js
Normal file
@@ -0,0 +1,34 @@
|
||||
//This is Controller for Dialog box.
|
||||
appControllers.controller('DialogController', function ($scope, $mdDialog, displayOption) {
|
||||
|
||||
//This variable for display wording of dialog.
|
||||
//object schema:
|
||||
//displayOption: {
|
||||
// title: "Confirm to remove all data?",
|
||||
// content: "All data will remove from local storage.",
|
||||
// ok: "Confirm",
|
||||
// cancel: "Close"
|
||||
//}
|
||||
$scope.displayOption = displayOption;
|
||||
|
||||
$scope.cancel = function () {
|
||||
$mdDialog.cancel(); //close dialog.
|
||||
};
|
||||
|
||||
$scope.ok = function () {
|
||||
$mdDialog.hide();//hide dialog.
|
||||
};
|
||||
});// End Controller for Dialog box.
|
||||
|
||||
//Controller for Toast.
|
||||
appControllers.controller('toastController', function ($scope, displayOption) {
|
||||
|
||||
//this variable for display wording of toast.
|
||||
//object schema:
|
||||
// displayOption: {
|
||||
// title: "Data Saved !"
|
||||
//}
|
||||
|
||||
$scope.displayOption = displayOption;
|
||||
});// End Controller for Toast.
|
||||
|
||||
25
IonicMaterialDesign/www/js/shared/directives.js
Normal file
@@ -0,0 +1,25 @@
|
||||
//Directive numbersOnly :
|
||||
//Use for change input to have ability accept only number.
|
||||
//Example : <input ng-model="contract.age" numbers-only type="tel">
|
||||
//
|
||||
appControllers.directive('numbersOnly', function () {
|
||||
return {
|
||||
require: 'ngModel',
|
||||
link: function (scope, element, attr, ngModelCtrl) {
|
||||
function fromUser(text) {
|
||||
if (text) {
|
||||
var transformedInput = text.replace(/[^0-9]/g, '');
|
||||
|
||||
if (transformedInput !== text) {
|
||||
ngModelCtrl.$setViewValue(transformedInput);
|
||||
ngModelCtrl.$render();
|
||||
}
|
||||
return transformedInput;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
ngModelCtrl.$parsers.push(fromUser);
|
||||
}
|
||||
};
|
||||
});// End Directive numbersOnly.
|
||||
33
IonicMaterialDesign/www/js/shared/filter.js
Normal file
@@ -0,0 +1,33 @@
|
||||
//Filter epochToDate :
|
||||
//Use for convert epoch date format to default date format.
|
||||
//Example :
|
||||
//<p>{{item.createdAt |epochToDate | date:"short"}}</p>
|
||||
appControllers.filter('epochToDate', function ($filter) {
|
||||
return function (input) {
|
||||
return new Date(Date(input));
|
||||
};
|
||||
});// End Filter epochToDate.
|
||||
|
||||
//Filter numberSuffix :
|
||||
//Use for convert number to have suffix 1,000 to 1K.
|
||||
//Example :
|
||||
//{{item.likes.summary.total_count | numberSuffix}}
|
||||
//
|
||||
appControllers.filter('numberSuffix', function () {
|
||||
return function (input) {
|
||||
var exp;
|
||||
var suffixes = ['k', 'M', 'G', 'T', 'P', 'E'];
|
||||
|
||||
if (window.isNaN(input)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (input < 1000) {
|
||||
return input;
|
||||
}
|
||||
|
||||
exp = Math.floor(Math.log(input) / Math.log(1000));
|
||||
|
||||
return (input / Math.pow(1000, exp)).toFixed(1) + suffixes[exp - 1];
|
||||
}
|
||||
});// End Filter numberSuffix.
|
||||
19
IonicMaterialDesign/www/lib/angular-animate/.bower.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "angular-animate",
|
||||
"version": "1.4.2",
|
||||
"main": "./angular-animate.js",
|
||||
"ignore": [],
|
||||
"dependencies": {
|
||||
"angular": "1.4.2"
|
||||
},
|
||||
"homepage": "https://github.com/angular/bower-angular-animate",
|
||||
"_release": "1.4.2",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v1.4.2",
|
||||
"commit": "8753e3cc8facaf2da19dbe26d318e566b89e452e"
|
||||
},
|
||||
"_source": "git://github.com/angular/bower-angular-animate.git",
|
||||
"_target": "^1.3.0 || >1.4.0-beta.0",
|
||||
"_originalSource": "angular-animate"
|
||||
}
|
||||
68
IonicMaterialDesign/www/lib/angular-animate/README.md
Normal file
@@ -0,0 +1,68 @@
|
||||
# packaged angular-animate
|
||||
|
||||
This repo is for distribution on `npm` and `bower`. The source for this module is in the
|
||||
[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngAnimate).
|
||||
Please file issues and pull requests against that repo.
|
||||
|
||||
## Install
|
||||
|
||||
You can install this package either with `npm` or with `bower`.
|
||||
|
||||
### npm
|
||||
|
||||
```shell
|
||||
npm install angular-animate
|
||||
```
|
||||
|
||||
Then add `ngAnimate` as a dependency for your app:
|
||||
|
||||
```javascript
|
||||
angular.module('myApp', [require('angular-animate')]);
|
||||
```
|
||||
|
||||
### bower
|
||||
|
||||
```shell
|
||||
bower install angular-animate
|
||||
```
|
||||
|
||||
Then add a `<script>` to your `index.html`:
|
||||
|
||||
```html
|
||||
<script src="/bower_components/angular-animate/angular-animate.js"></script>
|
||||
```
|
||||
|
||||
Then add `ngAnimate` as a dependency for your app:
|
||||
|
||||
```javascript
|
||||
angular.module('myApp', ['ngAnimate']);
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
Documentation is available on the
|
||||
[AngularJS docs site](http://docs.angularjs.org/api/ngAnimate).
|
||||
|
||||
## License
|
||||
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2010-2015 Google, Inc. http://angularjs.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
3709
IonicMaterialDesign/www/lib/angular-animate/angular-animate.js
vendored
Normal file
52
IonicMaterialDesign/www/lib/angular-animate/angular-animate.min.js
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
AngularJS v1.4.2
|
||||
(c) 2010-2015 Google, Inc. http://angularjs.org
|
||||
License: MIT
|
||||
*/
|
||||
(function(F,t,W){'use strict';function ua(a,b,c){if(!a)throw ngMinErr("areq",b||"?",c||"required");return a}function va(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;X(a)&&(a=a.join(" "));X(b)&&(b=b.join(" "));return a+" "+b}function Ea(a){var b={};a&&(a.to||a.from)&&(b.to=a.to,b.from=a.from);return b}function ba(a,b,c){var d="";a=X(a)?a:a&&U(a)&&a.length?a.split(/\s+/):[];u(a,function(a,s){a&&0<a.length&&(d+=0<s?" ":"",d+=c?b+a:a+b)});return d}function Fa(a){if(a instanceof G)switch(a.length){case 0:return[];
|
||||
case 1:if(1===a[0].nodeType)return a;break;default:return G(ka(a))}if(1===a.nodeType)return G(a)}function ka(a){if(!a[0])return a;for(var b=0;b<a.length;b++){var c=a[b];if(1==c.nodeType)return c}}function Ga(a,b,c){u(b,function(b){a.addClass(b,c)})}function Ha(a,b,c){u(b,function(b){a.removeClass(b,c)})}function ha(a){return function(b,c){c.addClass&&(Ga(a,b,c.addClass),c.addClass=null);c.removeClass&&(Ha(a,b,c.removeClass),c.removeClass=null)}}function ia(a){a=a||{};if(!a.$$prepared){var b=a.domOperation||
|
||||
H;a.domOperation=function(){a.$$domOperationFired=!0;b();b=H};a.$$prepared=!0}return a}function ca(a,b){wa(a,b);xa(a,b)}function wa(a,b){b.from&&(a.css(b.from),b.from=null)}function xa(a,b){b.to&&(a.css(b.to),b.to=null)}function R(a,b,c){var d=(b.addClass||"")+" "+(c.addClass||""),e=(b.removeClass||"")+" "+(c.removeClass||"");a=Ia(a.attr("class"),d,e);ya(b,c);b.addClass=a.addClass?a.addClass:null;b.removeClass=a.removeClass?a.removeClass:null;return b}function Ia(a,b,c){function d(a){U(a)&&(a=a.split(" "));
|
||||
var b={};u(a,function(a){a.length&&(b[a]=!0)});return b}var e={};a=d(a);b=d(b);u(b,function(a,b){e[b]=1});c=d(c);u(c,function(a,b){e[b]=1===e[b]?null:-1});var s={addClass:"",removeClass:""};u(e,function(b,c){var d,e;1===b?(d="addClass",e=!a[c]):-1===b&&(d="removeClass",e=a[c]);e&&(s[d].length&&(s[d]+=" "),s[d]+=c)});return s}function A(a){return a instanceof t.element?a[0]:a}function za(a,b,c){var d=Object.create(null),e=a.getComputedStyle(b)||{};u(c,function(a,b){var c=e[a];if(c){var l=c.charAt(0);
|
||||
if("-"===l||"+"===l||0<=l)c=Ja(c);0===c&&(c=null);d[b]=c}});return d}function Ja(a){var b=0;a=a.split(/\s*,\s*/);u(a,function(a){"s"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1));a=parseFloat(a)||0;b=b?Math.max(a,b):a});return b}function la(a){return 0===a||null!=a}function Aa(a,b){var c=O,d=a+"s";b?c+="Duration":d+=" linear all";return[c,d]}function ja(a,b){var c=b?"-"+b+"s":"";da(a,[ea,c]);return[ea,c]}function ma(a,b){var c=b?"paused":"",d=V+"PlayState";da(a,[d,c]);return[d,c]}function da(a,
|
||||
b){a.style[b[0]]=b[1]}function Ba(){var a=Object.create(null);return{flush:function(){a=Object.create(null)},count:function(b){return(b=a[b])?b.total:0},get:function(b){return(b=a[b])&&b.value},put:function(b,c){a[b]?a[b].total++:a[b]={total:1,value:c}}}}var H=t.noop,ya=t.extend,G=t.element,u=t.forEach,X=t.isArray,U=t.isString,na=t.isObject,Ka=t.isUndefined,La=t.isDefined,Ca=t.isFunction,oa=t.isElement,O,pa,V,qa;F.ontransitionend===W&&F.onwebkittransitionend!==W?(O="WebkitTransition",pa="webkitTransitionEnd transitionend"):
|
||||
(O="transition",pa="transitionend");F.onanimationend===W&&F.onwebkitanimationend!==W?(V="WebkitAnimation",qa="webkitAnimationEnd animationend"):(V="animation",qa="animationend");var ra=V+"Delay",sa=V+"Duration",ea=O+"Delay";F=O+"Duration";var Ma={transitionDuration:F,transitionDelay:ea,transitionProperty:O+"Property",animationDuration:sa,animationDelay:ra,animationIterationCount:V+"IterationCount"},Na={transitionDuration:F,transitionDelay:ea,animationDuration:sa,animationDelay:ra};t.module("ngAnimate",
|
||||
[]).directive("ngAnimateChildren",[function(){return function(a,b,c){a=c.ngAnimateChildren;t.isString(a)&&0===a.length?b.data("$$ngAnimateChildren",!0):c.$observe("ngAnimateChildren",function(a){b.data("$$ngAnimateChildren","on"===a||"true"===a)})}}]).factory("$$rAFMutex",["$$rAF",function(a){return function(){var b=!1;a(function(){b=!0});return function(c){b?c():a(c)}}}]).factory("$$rAFScheduler",["$$rAF",function(a){function b(a){d.push([].concat(a));c()}function c(){if(d.length){for(var b=[],n=
|
||||
0;n<d.length;n++){var g=d[n];g.shift()();g.length&&b.push(g)}d=b;e||a(function(){e||c()})}}var d=[],e;b.waitUntilQuiet=function(b){e&&e();e=a(function(){e=null;b();c()})};return b}]).factory("$$AnimateRunner",["$q","$$rAFMutex",function(a,b){function c(a){this.setHost(a);this._doneCallbacks=[];this._runInAnimationFrame=b();this._state=0}c.chain=function(a,b){function c(){if(n===a.length)b(!0);else a[n](function(a){!1===a?b(!1):(n++,c())})}var n=0;c()};c.all=function(a,b){function c(s){g=g&&s;++n===
|
||||
a.length&&b(g)}var n=0,g=!0;u(a,function(a){a.done(c)})};c.prototype={setHost:function(a){this.host=a||{}},done:function(a){2===this._state?a():this._doneCallbacks.push(a)},progress:H,getPromise:function(){if(!this.promise){var b=this;this.promise=a(function(a,c){b.done(function(b){!1===b?c():a()})})}return this.promise},then:function(a,b){return this.getPromise().then(a,b)},"catch":function(a){return this.getPromise()["catch"](a)},"finally":function(a){return this.getPromise()["finally"](a)},pause:function(){this.host.pause&&
|
||||
this.host.pause()},resume:function(){this.host.resume&&this.host.resume()},end:function(){this.host.end&&this.host.end();this._resolve(!0)},cancel:function(){this.host.cancel&&this.host.cancel();this._resolve(!1)},complete:function(a){var b=this;0===b._state&&(b._state=1,b._runInAnimationFrame(function(){b._resolve(a)}))},_resolve:function(a){2!==this._state&&(u(this._doneCallbacks,function(b){b(a)}),this._doneCallbacks.length=0,this._state=2)}};return c}]).provider("$$animateQueue",["$animateProvider",
|
||||
function(a){function b(a,b,c,g){return d[a].some(function(a){return a(b,c,g)})}function c(a,b){a=a||{};var c=0<(a.addClass||"").length,d=0<(a.removeClass||"").length;return b?c&&d:c||d}var d=this.rules={skip:[],cancel:[],join:[]};d.join.push(function(a,b,d){return!b.structural&&c(b.options)});d.skip.push(function(a,b,d){return!b.structural&&!c(b.options)});d.skip.push(function(a,b,c){return"leave"==c.event&&b.structural});d.skip.push(function(a,b,c){return c.structural&&!b.structural});d.cancel.push(function(a,
|
||||
b,c){return c.structural&&b.structural});d.cancel.push(function(a,b,c){return 2===c.state&&b.structural});d.cancel.push(function(a,b,c){a=b.options;c=c.options;return a.addClass&&a.addClass===c.removeClass||a.removeClass&&a.removeClass===c.addClass});this.$get=["$$rAF","$rootScope","$rootElement","$document","$$HashMap","$$animation","$$AnimateRunner","$templateRequest","$$jqLite",function(d,s,n,g,l,D,z,Z,I){function w(a,b){var c=A(a),f=[],d=m[b];d&&u(d,function(a){a.node.contains(c)&&f.push(a.callback)});
|
||||
return f}function B(a,b,c,f){d(function(){u(w(b,a),function(a){a(b,c,f)})})}function r(a,S,p){function d(b,c,f,p){B(c,a,f,p);b.progress(c,f,p)}function k(b){Da(a,p);ca(a,p);p.domOperation();m.complete(!b)}var P,E;if(a=Fa(a))P=A(a),E=a.parent();p=ia(p);var m=new z;if(!P)return k(),m;X(p.addClass)&&(p.addClass=p.addClass.join(" "));X(p.removeClass)&&(p.removeClass=p.removeClass.join(" "));p.from&&!na(p.from)&&(p.from=null);p.to&&!na(p.to)&&(p.to=null);var e=[P.className,p.addClass,p.removeClass].join(" ");
|
||||
if(!v(e))return k(),m;var M=0<=["enter","move","leave"].indexOf(S),g=!x||L.get(P),e=!g&&h.get(P)||{},l=!!e.state;g||l&&1==e.state||(g=!ta(a,E,S));if(g)return k(),m;M&&K(a);g={structural:M,element:a,event:S,close:k,options:p,runner:m};if(l){if(b("skip",a,g,e)){if(2===e.state)return k(),m;R(a,e.options,p);return e.runner}if(b("cancel",a,g,e))2===e.state?e.runner.end():e.structural?e.close():R(a,g.options,e.options);else if(b("join",a,g,e))if(2===e.state)R(a,p,{});else return S=g.event=e.event,p=R(a,
|
||||
e.options,g.options),m}else R(a,p,{});(l=g.structural)||(l="animate"===g.event&&0<Object.keys(g.options.to||{}).length||c(g.options));if(!l)return k(),C(a),m;M&&f(E);var r=(e.counter||0)+1;g.counter=r;ga(a,1,g);s.$$postDigest(function(){var b=h.get(P),v=!b,b=b||{},e=a.parent()||[],E=0<e.length&&("animate"===b.event||b.structural||c(b.options));if(v||b.counter!==r||!E){v&&(Da(a,p),ca(a,p));if(v||M&&b.event!==S)p.domOperation(),m.end();E||C(a)}else S=!b.structural&&c(b.options,!0)?"setClass":b.event,
|
||||
b.structural&&f(e),ga(a,2),b=D(a,S,b.options),b.done(function(b){k(!b);(b=h.get(P))&&b.counter===r&&C(A(a));d(m,S,"close",{})}),m.setHost(b),d(m,S,"start",{})});return m}function K(a){a=A(a).querySelectorAll("[data-ng-animate]");u(a,function(a){var b=parseInt(a.getAttribute("data-ng-animate")),c=h.get(a);switch(b){case 2:c.runner.end();case 1:c&&h.remove(a)}})}function C(a){a=A(a);a.removeAttribute("data-ng-animate");h.remove(a)}function E(a,b){return A(a)===A(b)}function f(a){a=A(a);do{if(!a||1!==
|
||||
a.nodeType)break;var b=h.get(a);if(b){var f=a;!b.structural&&c(b.options)&&(2===b.state&&b.runner.end(),C(f))}a=a.parentNode}while(1)}function ta(a,b,c){var f=c=!1,d=!1,v;for((a=a.data("$ngAnimatePin"))&&(b=a);b&&b.length;){f||(f=E(b,n));a=b[0];if(1!==a.nodeType)break;var e=h.get(a)||{};d||(d=e.structural||L.get(a));if(Ka(v)||!0===v)a=b.data("$$ngAnimateChildren"),La(a)&&(v=a);if(d&&!1===v)break;f||(f=E(b,n),f||(a=b.data("$ngAnimatePin"))&&(b=a));c||(c=E(b,k));b=b.parent()}return(!d||v)&&f&&c}function ga(a,
|
||||
b,c){c=c||{};c.state=b;a=A(a);a.setAttribute("data-ng-animate",b);c=(b=h.get(a))?ya(b,c):c;h.put(a,c)}var h=new l,L=new l,x=null,M=s.$watch(function(){return 0===Z.totalPendingRequests},function(a){a&&(M(),s.$$postDigest(function(){s.$$postDigest(function(){null===x&&(x=!0)})}))}),k=G(g[0].body),m={},P=a.classNameFilter(),v=P?function(a){return P.test(a)}:function(){return!0},Da=ha(I);return{on:function(a,b,c){b=ka(b);m[a]=m[a]||[];m[a].push({node:b,callback:c})},off:function(a,b,c){function f(a,
|
||||
b,c){var d=ka(b);return a.filter(function(a){return!(a.node===d&&(!c||a.callback===c))})}var d=m[a];d&&(m[a]=1===arguments.length?null:f(d,b,c))},pin:function(a,b){ua(oa(a),"element","not an element");ua(oa(b),"parentElement","not an element");a.data("$ngAnimatePin",b)},push:function(a,b,c,f){c=c||{};c.domOperation=f;return r(a,b,c)},enabled:function(a,b){var c=arguments.length;if(0===c)b=!!x;else if(oa(a)){var f=A(a),d=L.get(f);1===c?b=!d:(b=!!b)?d&&L.remove(f):L.put(f,!0)}else b=x=!!a;return b}}}]}]).provider("$$animation",
|
||||
["$animateProvider",function(a){function b(a){return a.data("$$animationRunner")}var c=this.drivers=[];this.$get=["$$jqLite","$rootScope","$injector","$$AnimateRunner","$$rAFScheduler",function(a,e,s,n,g){var l=[],D=ha(a),z=0,Z=0,I=[];return function(w,B,r){function K(a){a=a.hasAttribute("ng-animate-ref")?[a]:a.querySelectorAll("[ng-animate-ref]");var b=[];u(a,function(a){var c=a.getAttribute("ng-animate-ref");c&&c.length&&b.push(a)});return b}function C(a){var b=[],c={};u(a,function(a,f){var d=A(a.element),
|
||||
e=0<=["enter","move"].indexOf(a.event),d=a.structural?K(d):[];if(d.length){var h=e?"to":"from";u(d,function(a){var b=a.getAttribute("ng-animate-ref");c[b]=c[b]||{};c[b][h]={animationID:f,element:G(a)}})}else b.push(a)});var f={},d={};u(c,function(c,e){var h=c.from,k=c.to;if(h&&k){var m=a[h.animationID],g=a[k.animationID],x=h.animationID.toString();if(!d[x]){var B=d[x]={structural:!0,beforeStart:function(){m.beforeStart();g.beforeStart()},close:function(){m.close();g.close()},classes:E(m.classes,g.classes),
|
||||
from:m,to:g,anchors:[]};B.classes.length?b.push(B):(b.push(m),b.push(g))}d[x].anchors.push({out:h.element,"in":k.element})}else h=h?h.animationID:k.animationID,k=h.toString(),f[k]||(f[k]=!0,b.push(a[h]))});return b}function E(a,b){a=a.split(" ");b=b.split(" ");for(var c=[],f=0;f<a.length;f++){var d=a[f];if("ng-"!==d.substring(0,3))for(var h=0;h<b.length;h++)if(d===b[h]){c.push(d);break}}return c.join(" ")}function f(a){for(var b=c.length-1;0<=b;b--){var f=c[b];if(s.has(f)&&(f=s.get(f)(a)))return f}}
|
||||
function ta(a,c){a.from&&a.to?(b(a.from.element).setHost(c),b(a.to.element).setHost(c)):b(a.element).setHost(c)}function ga(){var a=b(w);!a||"leave"===B&&r.$$domOperationFired||a.end()}function h(b){w.off("$destroy",ga);w.removeData("$$animationRunner");D(w,r);ca(w,r);r.domOperation();k&&a.removeClass(w,k);w.removeClass("ng-animate");x.complete(!b)}r=ia(r);var L=0<=["enter","move","leave"].indexOf(B),x=new n({end:function(){h()},cancel:function(){h(!0)}});if(!c.length)return h(),x;w.data("$$animationRunner",
|
||||
x);var M=va(w.attr("class"),va(r.addClass,r.removeClass)),k=r.tempClasses;k&&(M+=" "+k,r.tempClasses=null);var m;L||(m=z,z+=1);l.push({element:w,classes:M,event:B,classBasedIndex:m,structural:L,options:r,beforeStart:function(){w.addClass("ng-animate");k&&a.addClass(w,k)},close:h});w.on("$destroy",ga);if(1<l.length)return x;e.$$postDigest(function(){Z=z;z=0;I.length=0;var a=[];u(l,function(c){b(c.element)&&a.push(c)});l.length=0;u(C(a),function(a){function c(){a.beforeStart();var d,h=a.close;if(b(a.anchors?
|
||||
a.from.element||a.to.element:a.element)){var k=f(a);k&&(d=k.start)}d?(d=d(),d.done(function(a){h(!a)}),ta(a,d)):h()}a.structural?c():(I.push({node:A(a.element),fn:c}),a.classBasedIndex===Z-1&&(I=I.sort(function(a,b){return b.node.contains(a.node)}).map(function(a){return a.fn}),g(I)))})});return x}}]}]).provider("$animateCss",["$animateProvider",function(a){var b=Ba(),c=Ba();this.$get=["$window","$$jqLite","$$AnimateRunner","$timeout","$document","$sniffer","$$rAFScheduler",function(a,e,s,n,g,l,D){function z(a,
|
||||
b){var c=a.parentNode;return(c.$$ngAnimateParentKey||(c.$$ngAnimateParentKey=++r))+"-"+a.getAttribute("class")+"-"+b}function Z(g,f,B,l){var h;0<b.count(B)&&(h=c.get(B),h||(f=ba(f,"-stagger"),e.addClass(g,f),h=za(a,g,l),h.animationDuration=Math.max(h.animationDuration,0),h.transitionDuration=Math.max(h.transitionDuration,0),e.removeClass(g,f),c.put(B,h)));return h||{}}function I(a){C.push(a);D.waitUntilQuiet(function(){b.flush();c.flush();for(var a=K.offsetWidth+1,d=0;d<C.length;d++)C[d](a);C.length=
|
||||
0})}function w(c,f,e){f=b.get(e);f||(f=za(a,c,Ma),"infinite"===f.animationIterationCount&&(f.animationIterationCount=1));b.put(e,f);c=f;e=c.animationDelay;f=c.transitionDelay;c.maxDelay=e&&f?Math.max(e,f):e||f;c.maxDuration=Math.max(c.animationDuration*c.animationIterationCount,c.transitionDuration);return c}var B=ha(e),r=0,K=A(g).body,C=[];return function(a,c){function d(){h()}function g(){h(!0)}function h(b){if(!(K||C&&D)){K=!0;D=!1;e.removeClass(a,Y);e.removeClass(a,W);ma(k,!1);ja(k,!1);u(m,function(a){k.style[a[0]]=
|
||||
""});B(a,c);ca(a,c);if(c.onDone)c.onDone();p&&p.complete(!b)}}function L(a){q.blockTransition&&ja(k,a);q.blockKeyframeAnimation&&ma(k,!!a)}function x(){p=new s({end:d,cancel:g});h();return{$$willAnimate:!1,start:function(){return p},end:d}}function M(){function b(){if(!K){L(!1);u(m,function(a){k.style[a[0]]=a[1]});B(a,c);e.addClass(a,W);if(q.recalculateTimingStyles){fa=k.className+" "+Y;$=z(k,fa);y=w(k,fa,$);Q=y.maxDelay;H=Math.max(Q,0);J=y.maxDuration;if(0===J){h();return}q.hasTransitions=0<y.transitionDuration;
|
||||
q.hasAnimations=0<y.animationDuration}if(q.applyTransitionDelay||q.applyAnimationDelay){Q="boolean"!==typeof c.delay&&la(c.delay)?parseFloat(c.delay):Q;H=Math.max(Q,0);var l;q.applyTransitionDelay&&(y.transitionDelay=Q,l=[ea,Q+"s"],m.push(l),k.style[l[0]]=l[1]);q.applyAnimationDelay&&(y.animationDelay=Q,l=[ra,Q+"s"],m.push(l),k.style[l[0]]=l[1])}F=1E3*H;G=1E3*J;if(c.easing){var r=c.easing;q.hasTransitions&&(l=O+"TimingFunction",m.push([l,r]),k.style[l]=r);q.hasAnimations&&(l=V+"TimingFunction",m.push([l,
|
||||
r]),k.style[l]=r)}y.transitionDuration&&p.push(pa);y.animationDuration&&p.push(qa);x=Date.now();a.on(p.join(" "),g);n(d,F+1.5*G);xa(a,c)}}function d(){h()}function g(a){a.stopPropagation();var b=a.originalEvent||a;a=b.$manualTimeStamp||b.timeStamp||Date.now();b=parseFloat(b.elapsedTime.toFixed(3));Math.max(a-x,0)>=F&&b>=J&&(C=!0,h())}if(!K){var x,p=[],l=function(a){if(C)D&&a&&(D=!1,h());else if(D=!a,y.animationDuration)if(a=ma(k,D),D)m.push(a);else{var b=m,c=b.indexOf(a);0<=a&&b.splice(c,1)}},r=0<
|
||||
U&&(y.transitionDuration&&0===T.transitionDuration||y.animationDuration&&0===T.animationDuration)&&Math.max(T.animationDelay,T.transitionDelay);r?n(b,Math.floor(r*U*1E3),!1):b();t.resume=function(){l(!0)};t.pause=function(){l(!1)}}}var k=A(a);c=ia(c);var m=[],r=a.attr("class"),v=Ea(c),K,D,C,p,t,H,F,J,G;if(0===c.duration||!l.animations&&!l.transitions)return x();var aa=c.event&&X(c.event)?c.event.join(" "):c.event,R="",N="";aa&&c.structural?R=ba(aa,"ng-",!0):aa&&(R=aa);c.addClass&&(N+=ba(c.addClass,
|
||||
"-add"));c.removeClass&&(N.length&&(N+=" "),N+=ba(c.removeClass,"-remove"));c.applyClassesEarly&&N.length&&(B(a,c),N="");var Y=[R,N].join(" ").trim(),fa=r+" "+Y,W=ba(Y,"-active"),r=v.to&&0<Object.keys(v.to).length;if(!r&&!Y)return x();var $,T;0<c.stagger?(v=parseFloat(c.stagger),T={transitionDelay:v,animationDelay:v,transitionDuration:0,animationDuration:0}):($=z(k,fa),T=Z(k,Y,$,Na));e.addClass(a,Y);c.transitionStyle&&(v=[O,c.transitionStyle],da(k,v),m.push(v));0<=c.duration&&(v=0<k.style[O].length,
|
||||
v=Aa(c.duration,v),da(k,v),m.push(v));c.keyframeStyle&&(v=[V,c.keyframeStyle],da(k,v),m.push(v));var U=T?0<=c.staggerIndex?c.staggerIndex:b.count($):0;(aa=0===U)&&ja(k,9999);var y=w(k,fa,$),Q=y.maxDelay;H=Math.max(Q,0);J=y.maxDuration;var q={};q.hasTransitions=0<y.transitionDuration;q.hasAnimations=0<y.animationDuration;q.hasTransitionAll=q.hasTransitions&&"all"==y.transitionProperty;q.applyTransitionDuration=r&&(q.hasTransitions&&!q.hasTransitionAll||q.hasAnimations&&!q.hasTransitions);q.applyAnimationDuration=
|
||||
c.duration&&q.hasAnimations;q.applyTransitionDelay=la(c.delay)&&(q.applyTransitionDuration||q.hasTransitions);q.applyAnimationDelay=la(c.delay)&&q.hasAnimations;q.recalculateTimingStyles=0<N.length;if(q.applyTransitionDuration||q.applyAnimationDuration)J=c.duration?parseFloat(c.duration):J,q.applyTransitionDuration&&(q.hasTransitions=!0,y.transitionDuration=J,v=0<k.style[O+"Property"].length,m.push(Aa(J,v))),q.applyAnimationDuration&&(q.hasAnimations=!0,y.animationDuration=J,m.push([sa,J+"s"]));if(0===
|
||||
J&&!q.recalculateTimingStyles)return x();null==c.duration&&0<y.transitionDuration&&(q.recalculateTimingStyles=q.recalculateTimingStyles||aa);F=1E3*H;G=1E3*J;c.skipBlocking||(q.blockTransition=0<y.transitionDuration,q.blockKeyframeAnimation=0<y.animationDuration&&0<T.animationDelay&&0===T.animationDuration);wa(a,c);q.blockTransition||ja(k,!1);L(J);return{$$willAnimate:!0,end:d,start:function(){if(!K)return t={end:d,cancel:g,resume:null,pause:null},p=new s(t),I(M),p}}}}]}]).provider("$$animateCssDriver",
|
||||
["$$animationProvider",function(a){a.drivers.push("$$animateCssDriver");this.$get=["$animateCss","$rootScope","$$AnimateRunner","$rootElement","$document","$sniffer",function(a,c,d,e,s,n){function g(a){return a.replace(/\bng-\S+\b/g,"")}function l(a,b){U(a)&&(a=a.split(" "));U(b)&&(b=b.split(" "));return a.filter(function(a){return-1===b.indexOf(a)}).join(" ")}function D(c,e,z){function D(a){var b={},c=A(a).getBoundingClientRect();u(["width","height","top","left"],function(a){var d=c[a];switch(a){case "top":d+=
|
||||
I.scrollTop;break;case "left":d+=I.scrollLeft}b[a]=Math.floor(d)+"px"});return b}function s(){var c=g(z.attr("class")||""),d=l(c,t),c=l(t,c),d=a(n,{to:D(z),addClass:"ng-anchor-in "+d,removeClass:"ng-anchor-out "+c,delay:!0});return d.$$willAnimate?d:null}function f(){n.remove();e.removeClass("ng-animate-shim");z.removeClass("ng-animate-shim")}var n=G(A(e).cloneNode(!0)),t=g(n.attr("class")||"");e.addClass("ng-animate-shim");z.addClass("ng-animate-shim");n.addClass("ng-anchor");w.append(n);var h;c=
|
||||
function(){var c=a(n,{addClass:"ng-anchor-out",delay:!0,from:D(e)});return c.$$willAnimate?c:null}();if(!c&&(h=s(),!h))return f();var L=c||h;return{start:function(){function a(){c&&c.end()}var b,c=L.start();c.done(function(){c=null;if(!h&&(h=s()))return c=h.start(),c.done(function(){c=null;f();b.complete()}),c;f();b.complete()});return b=new d({end:a,cancel:a})}}}function z(a,b,c,e){var g=t(a),f=t(b),l=[];u(e,function(a){(a=D(c,a.out,a["in"]))&&l.push(a)});if(g||f||0!==l.length)return{start:function(){function a(){u(b,
|
||||
function(a){a.end()})}var b=[];g&&b.push(g.start());f&&b.push(f.start());u(l,function(a){b.push(a.start())});var c=new d({end:a,cancel:a});d.all(b,function(a){c.complete(a)});return c}}}function t(c){var d=c.element,e=c.options||{};c.structural?(e.structural=e.applyClassesEarly=!0,e.event=c.event,"leave"===e.event&&(e.onDone=e.domOperation)):e.event=null;c=a(d,e);return c.$$willAnimate?c:null}if(!n.animations&&!n.transitions)return H;var I=A(s).body;c=A(e);var w=G(I.parentNode===c?I:c);return function(a){return a.from&&
|
||||
a.to?z(a.from,a.to,a.classes,a.anchors):t(a)}}]}]).provider("$$animateJs",["$animateProvider",function(a){this.$get=["$injector","$$AnimateRunner","$$rAFMutex","$$jqLite",function(b,c,d,e){function s(c){c=X(c)?c:c.split(" ");for(var d=[],e={},z=0;z<c.length;z++){var n=c[z],s=a.$$registeredAnimations[n];s&&!e[n]&&(d.push(b.get(s)),e[n]=!0)}return d}var n=ha(e);return function(a,b,d,e){function t(){e.domOperation();n(a,e)}function A(a,b,d,e,f){switch(d){case "animate":b=[b,e.from,e.to,f];break;case "setClass":b=
|
||||
[b,r,K,f];break;case "addClass":b=[b,r,f];break;case "removeClass":b=[b,K,f];break;default:b=[b,f]}b.push(e);if(a=a.apply(a,b))if(Ca(a.start)&&(a=a.start()),a instanceof c)a.done(f);else if(Ca(a))return a;return H}function w(a,b,d,e,f){var m=[];u(e,function(e){var g=e[f];g&&m.push(function(){var e,f,m=!1,k=function(a){m||(m=!0,(f||H)(a),e.complete(!a))};e=new c({end:function(){k()},cancel:function(){k(!0)}});f=A(g,a,b,d,function(a){k(!1===a)});return e})});return m}function B(a,b,d,e,f){var m=w(a,
|
||||
b,d,e,f);if(0===m.length){var g,l;"beforeSetClass"===f?(g=w(a,"removeClass",d,e,"beforeRemoveClass"),l=w(a,"addClass",d,e,"beforeAddClass")):"setClass"===f&&(g=w(a,"removeClass",d,e,"removeClass"),l=w(a,"addClass",d,e,"addClass"));g&&(m=m.concat(g));l&&(m=m.concat(l))}if(0!==m.length)return function(a){var b=[];m.length&&u(m,function(a){b.push(a())});b.length?c.all(b,a):a();return function(a){u(b,function(b){a?b.cancel():b.end()})}}}3===arguments.length&&na(d)&&(e=d,d=null);e=ia(e);d||(d=a.attr("class")||
|
||||
"",e.addClass&&(d+=" "+e.addClass),e.removeClass&&(d+=" "+e.removeClass));var r=e.addClass,K=e.removeClass,C=s(d),E,f;if(C.length){var F,G;"leave"==b?(G="leave",F="afterLeave"):(G="before"+b.charAt(0).toUpperCase()+b.substr(1),F=b);"enter"!==b&&"move"!==b&&(E=B(a,b,e,C,G));f=B(a,b,e,C,F)}if(E||f)return{start:function(){function b(c){n=!0;t();ca(a,e);k.complete(c)}var d,l=[];E&&l.push(function(a){d=E(a)});l.length?l.push(function(a){t();a(!0)}):t();f&&l.push(function(a){d=f(a)});var n=!1,k=new c({end:function(){n||
|
||||
((d||H)(void 0),b(void 0))},cancel:function(){n||((d||H)(!0),b(!0))}});c.chain(l,b);return k}}}}]}]).provider("$$animateJsDriver",["$$animationProvider",function(a){a.drivers.push("$$animateJsDriver");this.$get=["$$animateJs","$$AnimateRunner",function(a,c){function d(c){return a(c.element,c.event,c.classes,c.options)}return function(a){if(a.from&&a.to){var b=d(a.from),n=d(a.to);if(b||n)return{start:function(){function a(){return function(){u(d,function(a){a.end()})}}var d=[];b&&d.push(b.start());
|
||||
n&&d.push(n.start());c.all(d,function(a){e.complete(a)});var e=new c({end:a(),cancel:a()});return e}}}else return d(a)}}]}])})(window,window.angular);
|
||||
//# sourceMappingURL=angular-animate.min.js.map
|
||||
9
IonicMaterialDesign/www/lib/angular-animate/bower.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "angular-animate",
|
||||
"version": "1.4.2",
|
||||
"main": "./angular-animate.js",
|
||||
"ignore": [],
|
||||
"dependencies": {
|
||||
"angular": "1.4.2"
|
||||
}
|
||||
}
|
||||
2
IonicMaterialDesign/www/lib/angular-animate/index.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
require('./angular-animate');
|
||||
module.exports = 'ngAnimate';
|
||||
26
IonicMaterialDesign/www/lib/angular-animate/package.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"name": "angular-animate",
|
||||
"version": "1.4.2",
|
||||
"description": "AngularJS module for animations",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/angular/angular.js.git"
|
||||
},
|
||||
"keywords": [
|
||||
"angular",
|
||||
"framework",
|
||||
"browser",
|
||||
"animation",
|
||||
"client-side"
|
||||
],
|
||||
"author": "Angular Core Team <angular-core+npm@google.com>",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/angular/angular.js/issues"
|
||||
},
|
||||
"homepage": "http://angularjs.org"
|
||||
}
|
||||
19
IonicMaterialDesign/www/lib/angular-aria/.bower.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "angular-aria",
|
||||
"version": "1.4.2",
|
||||
"main": "./angular-aria.js",
|
||||
"ignore": [],
|
||||
"dependencies": {
|
||||
"angular": "1.4.2"
|
||||
},
|
||||
"homepage": "https://github.com/angular/bower-angular-aria",
|
||||
"_release": "1.4.2",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v1.4.2",
|
||||
"commit": "b5b37f3d12b8b23f2a0212efd08c1902216d2d8c"
|
||||
},
|
||||
"_source": "git://github.com/angular/bower-angular-aria.git",
|
||||
"_target": "^1.3.15 || >1.4.0-beta.0",
|
||||
"_originalSource": "angular-aria"
|
||||
}
|
||||
67
IonicMaterialDesign/www/lib/angular-aria/README.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# packaged angular-aria
|
||||
|
||||
This repo is for distribution on `npm` and `bower`. The source for this module is in the
|
||||
[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngAria).
|
||||
Please file issues and pull requests against that repo.
|
||||
|
||||
## Install
|
||||
|
||||
You can install this package either with `npm` or with `bower`.
|
||||
|
||||
### npm
|
||||
|
||||
```shell
|
||||
npm install angular-aria
|
||||
```
|
||||
Then add `ngAria` as a dependency for your app:
|
||||
|
||||
```javascript
|
||||
angular.module('myApp', [require('angular-aria')]);
|
||||
```
|
||||
|
||||
### bower
|
||||
|
||||
```shell
|
||||
bower install angular-aria
|
||||
```
|
||||
|
||||
Add a `<script>` to your `index.html`:
|
||||
|
||||
```html
|
||||
<script src="/bower_components/angular-aria/angular-aria.js"></script>
|
||||
```
|
||||
|
||||
Then add `ngAria` as a dependency for your app:
|
||||
|
||||
```javascript
|
||||
angular.module('myApp', ['ngAria']);
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
Documentation is available on the
|
||||
[AngularJS docs site](http://docs.angularjs.org/api/ngAria).
|
||||
|
||||
## License
|
||||
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2010-2015 Google, Inc. http://angularjs.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
393
IonicMaterialDesign/www/lib/angular-aria/angular-aria.js
vendored
Normal file
@@ -0,0 +1,393 @@
|
||||
/**
|
||||
* @license AngularJS v1.4.2
|
||||
* (c) 2010-2015 Google, Inc. http://angularjs.org
|
||||
* License: MIT
|
||||
*/
|
||||
(function(window, angular, undefined) {'use strict';
|
||||
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name ngAria
|
||||
* @description
|
||||
*
|
||||
* The `ngAria` module provides support for common
|
||||
* [<abbr title="Accessible Rich Internet Applications">ARIA</abbr>](http://www.w3.org/TR/wai-aria/)
|
||||
* attributes that convey state or semantic information about the application for users
|
||||
* of assistive technologies, such as screen readers.
|
||||
*
|
||||
* <div doc-module-components="ngAria"></div>
|
||||
*
|
||||
* ## Usage
|
||||
*
|
||||
* For ngAria to do its magic, simply include the module `ngAria` as a dependency. The following
|
||||
* directives are supported:
|
||||
* `ngModel`, `ngDisabled`, `ngShow`, `ngHide`, `ngClick`, `ngDblClick`, and `ngMessages`.
|
||||
*
|
||||
* Below is a more detailed breakdown of the attributes handled by ngAria:
|
||||
*
|
||||
* | Directive | Supported Attributes |
|
||||
* |---------------------------------------------|----------------------------------------------------------------------------------------|
|
||||
* | {@link ng.directive:ngDisabled ngDisabled} | aria-disabled |
|
||||
* | {@link ng.directive:ngShow ngShow} | aria-hidden |
|
||||
* | {@link ng.directive:ngHide ngHide} | aria-hidden |
|
||||
* | {@link ng.directive:ngDblclick ngDblclick} | tabindex |
|
||||
* | {@link module:ngMessages ngMessages} | aria-live |
|
||||
* | {@link ng.directive:ngModel ngModel} | aria-checked, aria-valuemin, aria-valuemax, aria-valuenow, aria-invalid, aria-required, input roles |
|
||||
* | {@link ng.directive:ngClick ngClick} | tabindex, keypress event, button role |
|
||||
*
|
||||
* Find out more information about each directive by reading the
|
||||
* {@link guide/accessibility ngAria Developer Guide}.
|
||||
*
|
||||
* ##Example
|
||||
* Using ngDisabled with ngAria:
|
||||
* ```html
|
||||
* <md-checkbox ng-disabled="disabled">
|
||||
* ```
|
||||
* Becomes:
|
||||
* ```html
|
||||
* <md-checkbox ng-disabled="disabled" aria-disabled="true">
|
||||
* ```
|
||||
*
|
||||
* ##Disabling Attributes
|
||||
* It's possible to disable individual attributes added by ngAria with the
|
||||
* {@link ngAria.$ariaProvider#config config} method. For more details, see the
|
||||
* {@link guide/accessibility Developer Guide}.
|
||||
*/
|
||||
/* global -ngAriaModule */
|
||||
var ngAriaModule = angular.module('ngAria', ['ng']).
|
||||
provider('$aria', $AriaProvider);
|
||||
|
||||
/**
|
||||
* @ngdoc provider
|
||||
* @name $ariaProvider
|
||||
*
|
||||
* @description
|
||||
*
|
||||
* Used for configuring the ARIA attributes injected and managed by ngAria.
|
||||
*
|
||||
* ```js
|
||||
* angular.module('myApp', ['ngAria'], function config($ariaProvider) {
|
||||
* $ariaProvider.config({
|
||||
* ariaValue: true,
|
||||
* tabindex: false
|
||||
* });
|
||||
* });
|
||||
*```
|
||||
*
|
||||
* ## Dependencies
|
||||
* Requires the {@link ngAria} module to be installed.
|
||||
*
|
||||
*/
|
||||
function $AriaProvider() {
|
||||
var config = {
|
||||
ariaHidden: true,
|
||||
ariaChecked: true,
|
||||
ariaDisabled: true,
|
||||
ariaRequired: true,
|
||||
ariaInvalid: true,
|
||||
ariaMultiline: true,
|
||||
ariaValue: true,
|
||||
tabindex: true,
|
||||
bindKeypress: true,
|
||||
bindRoleForClick: true
|
||||
};
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
* @name $ariaProvider#config
|
||||
*
|
||||
* @param {object} config object to enable/disable specific ARIA attributes
|
||||
*
|
||||
* - **ariaHidden** – `{boolean}` – Enables/disables aria-hidden tags
|
||||
* - **ariaChecked** – `{boolean}` – Enables/disables aria-checked tags
|
||||
* - **ariaDisabled** – `{boolean}` – Enables/disables aria-disabled tags
|
||||
* - **ariaRequired** – `{boolean}` – Enables/disables aria-required tags
|
||||
* - **ariaInvalid** – `{boolean}` – Enables/disables aria-invalid tags
|
||||
* - **ariaMultiline** – `{boolean}` – Enables/disables aria-multiline tags
|
||||
* - **ariaValue** – `{boolean}` – Enables/disables aria-valuemin, aria-valuemax and aria-valuenow tags
|
||||
* - **tabindex** – `{boolean}` – Enables/disables tabindex tags
|
||||
* - **bindKeypress** – `{boolean}` – Enables/disables keypress event binding on `<div>` and
|
||||
* `<li>` elements with ng-click
|
||||
* - **bindRoleForClick** – `{boolean}` – Adds role=button to non-interactive elements like `div`
|
||||
* using ng-click, making them more accessible to users of assistive technologies
|
||||
*
|
||||
* @description
|
||||
* Enables/disables various ARIA attributes
|
||||
*/
|
||||
this.config = function(newConfig) {
|
||||
config = angular.extend(config, newConfig);
|
||||
};
|
||||
|
||||
function watchExpr(attrName, ariaAttr, negate) {
|
||||
return function(scope, elem, attr) {
|
||||
var ariaCamelName = attr.$normalize(ariaAttr);
|
||||
if (config[ariaCamelName] && !attr[ariaCamelName]) {
|
||||
scope.$watch(attr[attrName], function(boolVal) {
|
||||
// ensure boolean value
|
||||
boolVal = negate ? !boolVal : !!boolVal;
|
||||
elem.attr(ariaAttr, boolVal);
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @ngdoc service
|
||||
* @name $aria
|
||||
*
|
||||
* @description
|
||||
* @priority 200
|
||||
*
|
||||
* The $aria service contains helper methods for applying common
|
||||
* [ARIA](http://www.w3.org/TR/wai-aria/) attributes to HTML directives.
|
||||
*
|
||||
* ngAria injects common accessibility attributes that tell assistive technologies when HTML
|
||||
* elements are enabled, selected, hidden, and more. To see how this is performed with ngAria,
|
||||
* let's review a code snippet from ngAria itself:
|
||||
*
|
||||
*```js
|
||||
* ngAriaModule.directive('ngDisabled', ['$aria', function($aria) {
|
||||
* return $aria.$$watchExpr('ngDisabled', 'aria-disabled');
|
||||
* }])
|
||||
*```
|
||||
* Shown above, the ngAria module creates a directive with the same signature as the
|
||||
* traditional `ng-disabled` directive. But this ngAria version is dedicated to
|
||||
* solely managing accessibility attributes. The internal `$aria` service is used to watch the
|
||||
* boolean attribute `ngDisabled`. If it has not been explicitly set by the developer,
|
||||
* `aria-disabled` is injected as an attribute with its value synchronized to the value in
|
||||
* `ngDisabled`.
|
||||
*
|
||||
* Because ngAria hooks into the `ng-disabled` directive, developers do not have to do
|
||||
* anything to enable this feature. The `aria-disabled` attribute is automatically managed
|
||||
* simply as a silent side-effect of using `ng-disabled` with the ngAria module.
|
||||
*
|
||||
* The full list of directives that interface with ngAria:
|
||||
* * **ngModel**
|
||||
* * **ngShow**
|
||||
* * **ngHide**
|
||||
* * **ngClick**
|
||||
* * **ngDblclick**
|
||||
* * **ngMessages**
|
||||
* * **ngDisabled**
|
||||
*
|
||||
* Read the {@link guide/accessibility ngAria Developer Guide} for a thorough explanation of each
|
||||
* directive.
|
||||
*
|
||||
*
|
||||
* ## Dependencies
|
||||
* Requires the {@link ngAria} module to be installed.
|
||||
*/
|
||||
this.$get = function() {
|
||||
return {
|
||||
config: function(key) {
|
||||
return config[key];
|
||||
},
|
||||
$$watchExpr: watchExpr
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
ngAriaModule.directive('ngShow', ['$aria', function($aria) {
|
||||
return $aria.$$watchExpr('ngShow', 'aria-hidden', true);
|
||||
}])
|
||||
.directive('ngHide', ['$aria', function($aria) {
|
||||
return $aria.$$watchExpr('ngHide', 'aria-hidden', false);
|
||||
}])
|
||||
.directive('ngModel', ['$aria', function($aria) {
|
||||
|
||||
function shouldAttachAttr(attr, normalizedAttr, elem) {
|
||||
return $aria.config(normalizedAttr) && !elem.attr(attr);
|
||||
}
|
||||
|
||||
function shouldAttachRole(role, elem) {
|
||||
return !elem.attr('role') && (elem.attr('type') === role) && (elem[0].nodeName !== 'INPUT');
|
||||
}
|
||||
|
||||
function getShape(attr, elem) {
|
||||
var type = attr.type,
|
||||
role = attr.role;
|
||||
|
||||
return ((type || role) === 'checkbox' || role === 'menuitemcheckbox') ? 'checkbox' :
|
||||
((type || role) === 'radio' || role === 'menuitemradio') ? 'radio' :
|
||||
(type === 'range' || role === 'progressbar' || role === 'slider') ? 'range' :
|
||||
(type || role) === 'textbox' || elem[0].nodeName === 'TEXTAREA' ? 'multiline' : '';
|
||||
}
|
||||
|
||||
return {
|
||||
restrict: 'A',
|
||||
require: '?ngModel',
|
||||
priority: 200, //Make sure watches are fired after any other directives that affect the ngModel value
|
||||
compile: function(elem, attr) {
|
||||
var shape = getShape(attr, elem);
|
||||
|
||||
return {
|
||||
pre: function(scope, elem, attr, ngModel) {
|
||||
if (shape === 'checkbox' && attr.type !== 'checkbox') {
|
||||
//Use the input[checkbox] $isEmpty implementation for elements with checkbox roles
|
||||
ngModel.$isEmpty = function(value) {
|
||||
return value === false;
|
||||
};
|
||||
}
|
||||
},
|
||||
post: function(scope, elem, attr, ngModel) {
|
||||
var needsTabIndex = shouldAttachAttr('tabindex', 'tabindex', elem);
|
||||
|
||||
function ngAriaWatchModelValue() {
|
||||
return ngModel.$modelValue;
|
||||
}
|
||||
|
||||
function getRadioReaction() {
|
||||
if (needsTabIndex) {
|
||||
needsTabIndex = false;
|
||||
return function ngAriaRadioReaction(newVal) {
|
||||
var boolVal = (attr.value == ngModel.$viewValue);
|
||||
elem.attr('aria-checked', boolVal);
|
||||
elem.attr('tabindex', 0 - !boolVal);
|
||||
};
|
||||
} else {
|
||||
return function ngAriaRadioReaction(newVal) {
|
||||
elem.attr('aria-checked', (attr.value == ngModel.$viewValue));
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function ngAriaCheckboxReaction() {
|
||||
elem.attr('aria-checked', !ngModel.$isEmpty(ngModel.$viewValue));
|
||||
}
|
||||
|
||||
switch (shape) {
|
||||
case 'radio':
|
||||
case 'checkbox':
|
||||
if (shouldAttachRole(shape, elem)) {
|
||||
elem.attr('role', shape);
|
||||
}
|
||||
if (shouldAttachAttr('aria-checked', 'ariaChecked', elem)) {
|
||||
scope.$watch(ngAriaWatchModelValue, shape === 'radio' ?
|
||||
getRadioReaction() : ngAriaCheckboxReaction);
|
||||
}
|
||||
break;
|
||||
case 'range':
|
||||
if (shouldAttachRole(shape, elem)) {
|
||||
elem.attr('role', 'slider');
|
||||
}
|
||||
if ($aria.config('ariaValue')) {
|
||||
var needsAriaValuemin = !elem.attr('aria-valuemin') &&
|
||||
(attr.hasOwnProperty('min') || attr.hasOwnProperty('ngMin'));
|
||||
var needsAriaValuemax = !elem.attr('aria-valuemax') &&
|
||||
(attr.hasOwnProperty('max') || attr.hasOwnProperty('ngMax'));
|
||||
var needsAriaValuenow = !elem.attr('aria-valuenow');
|
||||
|
||||
if (needsAriaValuemin) {
|
||||
attr.$observe('min', function ngAriaValueMinReaction(newVal) {
|
||||
elem.attr('aria-valuemin', newVal);
|
||||
});
|
||||
}
|
||||
if (needsAriaValuemax) {
|
||||
attr.$observe('max', function ngAriaValueMinReaction(newVal) {
|
||||
elem.attr('aria-valuemax', newVal);
|
||||
});
|
||||
}
|
||||
if (needsAriaValuenow) {
|
||||
scope.$watch(ngAriaWatchModelValue, function ngAriaValueNowReaction(newVal) {
|
||||
elem.attr('aria-valuenow', newVal);
|
||||
});
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'multiline':
|
||||
if (shouldAttachAttr('aria-multiline', 'ariaMultiline', elem)) {
|
||||
elem.attr('aria-multiline', true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (needsTabIndex) {
|
||||
elem.attr('tabindex', 0);
|
||||
}
|
||||
|
||||
if (ngModel.$validators.required && shouldAttachAttr('aria-required', 'ariaRequired', elem)) {
|
||||
scope.$watch(function ngAriaRequiredWatch() {
|
||||
return ngModel.$error.required;
|
||||
}, function ngAriaRequiredReaction(newVal) {
|
||||
elem.attr('aria-required', !!newVal);
|
||||
});
|
||||
}
|
||||
|
||||
if (shouldAttachAttr('aria-invalid', 'ariaInvalid', elem)) {
|
||||
scope.$watch(function ngAriaInvalidWatch() {
|
||||
return ngModel.$invalid;
|
||||
}, function ngAriaInvalidReaction(newVal) {
|
||||
elem.attr('aria-invalid', !!newVal);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}])
|
||||
.directive('ngDisabled', ['$aria', function($aria) {
|
||||
return $aria.$$watchExpr('ngDisabled', 'aria-disabled');
|
||||
}])
|
||||
.directive('ngMessages', function() {
|
||||
return {
|
||||
restrict: 'A',
|
||||
require: '?ngMessages',
|
||||
link: function(scope, elem, attr, ngMessages) {
|
||||
if (!elem.attr('aria-live')) {
|
||||
elem.attr('aria-live', 'assertive');
|
||||
}
|
||||
}
|
||||
};
|
||||
})
|
||||
.directive('ngClick',['$aria', '$parse', function($aria, $parse) {
|
||||
return {
|
||||
restrict: 'A',
|
||||
compile: function(elem, attr) {
|
||||
var fn = $parse(attr.ngClick, /* interceptorFn */ null, /* expensiveChecks */ true);
|
||||
return function(scope, elem, attr) {
|
||||
|
||||
var nodeBlackList = ['BUTTON', 'A', 'INPUT', 'TEXTAREA'];
|
||||
|
||||
function isNodeOneOf(elem, nodeTypeArray) {
|
||||
if (nodeTypeArray.indexOf(elem[0].nodeName) !== -1) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($aria.config('bindRoleForClick')
|
||||
&& !elem.attr('role')
|
||||
&& !isNodeOneOf(elem, nodeBlackList)) {
|
||||
elem.attr('role', 'button');
|
||||
}
|
||||
|
||||
if ($aria.config('tabindex') && !elem.attr('tabindex')) {
|
||||
elem.attr('tabindex', 0);
|
||||
}
|
||||
|
||||
if ($aria.config('bindKeypress') && !attr.ngKeypress && !isNodeOneOf(elem, nodeBlackList)) {
|
||||
elem.on('keypress', function(event) {
|
||||
var keyCode = event.which || event.keyCode;
|
||||
if (keyCode === 32 || keyCode === 13) {
|
||||
scope.$apply(callback);
|
||||
}
|
||||
|
||||
function callback() {
|
||||
fn(scope, { $event: event });
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}])
|
||||
.directive('ngDblclick', ['$aria', function($aria) {
|
||||
return function(scope, elem, attr) {
|
||||
if ($aria.config('tabindex') && !elem.attr('tabindex')) {
|
||||
elem.attr('tabindex', 0);
|
||||
}
|
||||
};
|
||||
}]);
|
||||
|
||||
|
||||
})(window, window.angular);
|
||||
13
IonicMaterialDesign/www/lib/angular-aria/angular-aria.min.js
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
AngularJS v1.4.2
|
||||
(c) 2010-2015 Google, Inc. http://angularjs.org
|
||||
License: MIT
|
||||
*/
|
||||
(function(s,n,t){'use strict';n.module("ngAria",["ng"]).provider("$aria",function(){function a(a,f,l){return function(m,d,e){var b=e.$normalize(f);c[b]&&!e[b]&&m.$watch(e[a],function(b){b=l?!b:!!b;d.attr(f,b)})}}var c={ariaHidden:!0,ariaChecked:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaMultiline:!0,ariaValue:!0,tabindex:!0,bindKeypress:!0,bindRoleForClick:!0};this.config=function(a){c=n.extend(c,a)};this.$get=function(){return{config:function(a){return c[a]},$$watchExpr:a}}}).directive("ngShow",
|
||||
["$aria",function(a){return a.$$watchExpr("ngShow","aria-hidden",!0)}]).directive("ngHide",["$aria",function(a){return a.$$watchExpr("ngHide","aria-hidden",!1)}]).directive("ngModel",["$aria",function(a){function c(c,m,d){return a.config(m)&&!d.attr(c)}function k(a,c){return!c.attr("role")&&c.attr("type")===a&&"INPUT"!==c[0].nodeName}function f(a,c){var d=a.type,e=a.role;return"checkbox"===(d||e)||"menuitemcheckbox"===e?"checkbox":"radio"===(d||e)||"menuitemradio"===e?"radio":"range"===d||"progressbar"===
|
||||
e||"slider"===e?"range":"textbox"===(d||e)||"TEXTAREA"===c[0].nodeName?"multiline":""}return{restrict:"A",require:"?ngModel",priority:200,compile:function(l,m){var d=f(m,l);return{pre:function(a,b,c,g){"checkbox"===d&&"checkbox"!==c.type&&(g.$isEmpty=function(b){return!1===b})},post:function(e,b,h,g){function f(){return g.$modelValue}function m(){return p?(p=!1,function(a){a=h.value==g.$viewValue;b.attr("aria-checked",a);b.attr("tabindex",0-!a)}):function(a){b.attr("aria-checked",h.value==g.$viewValue)}}
|
||||
function l(){b.attr("aria-checked",!g.$isEmpty(g.$viewValue))}var p=c("tabindex","tabindex",b);switch(d){case "radio":case "checkbox":k(d,b)&&b.attr("role",d);c("aria-checked","ariaChecked",b)&&e.$watch(f,"radio"===d?m():l);break;case "range":k(d,b)&&b.attr("role","slider");if(a.config("ariaValue")){var n=!b.attr("aria-valuemin")&&(h.hasOwnProperty("min")||h.hasOwnProperty("ngMin")),q=!b.attr("aria-valuemax")&&(h.hasOwnProperty("max")||h.hasOwnProperty("ngMax")),r=!b.attr("aria-valuenow");n&&h.$observe("min",
|
||||
function(a){b.attr("aria-valuemin",a)});q&&h.$observe("max",function(a){b.attr("aria-valuemax",a)});r&&e.$watch(f,function(a){b.attr("aria-valuenow",a)})}break;case "multiline":c("aria-multiline","ariaMultiline",b)&&b.attr("aria-multiline",!0)}p&&b.attr("tabindex",0);g.$validators.required&&c("aria-required","ariaRequired",b)&&e.$watch(function(){return g.$error.required},function(a){b.attr("aria-required",!!a)});c("aria-invalid","ariaInvalid",b)&&e.$watch(function(){return g.$invalid},function(a){b.attr("aria-invalid",
|
||||
!!a)})}}}}}]).directive("ngDisabled",["$aria",function(a){return a.$$watchExpr("ngDisabled","aria-disabled")}]).directive("ngMessages",function(){return{restrict:"A",require:"?ngMessages",link:function(a,c,k,f){c.attr("aria-live")||c.attr("aria-live","assertive")}}}).directive("ngClick",["$aria","$parse",function(a,c){return{restrict:"A",compile:function(k,f){var l=c(f.ngClick,null,!0);return function(c,d,e){function b(a,b){if(-1!==b.indexOf(a[0].nodeName))return!0}var f=["BUTTON","A","INPUT","TEXTAREA"];
|
||||
!a.config("bindRoleForClick")||d.attr("role")||b(d,f)||d.attr("role","button");a.config("tabindex")&&!d.attr("tabindex")&&d.attr("tabindex",0);if(a.config("bindKeypress")&&!e.ngKeypress&&!b(d,f))d.on("keypress",function(a){function b(){l(c,{$event:a})}var d=a.which||a.keyCode;32!==d&&13!==d||c.$apply(b)})}}}}]).directive("ngDblclick",["$aria",function(a){return function(c,k,f){a.config("tabindex")&&!k.attr("tabindex")&&k.attr("tabindex",0)}}])})(window,window.angular);
|
||||
//# sourceMappingURL=angular-aria.min.js.map
|
||||
9
IonicMaterialDesign/www/lib/angular-aria/bower.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "angular-aria",
|
||||
"version": "1.4.2",
|
||||
"main": "./angular-aria.js",
|
||||
"ignore": [],
|
||||
"dependencies": {
|
||||
"angular": "1.4.2"
|
||||
}
|
||||
}
|
||||
2
IonicMaterialDesign/www/lib/angular-aria/index.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
require('./angular-aria');
|
||||
module.exports = 'ngAria';
|
||||
27
IonicMaterialDesign/www/lib/angular-aria/package.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "angular-aria",
|
||||
"version": "1.4.2",
|
||||
"description": "AngularJS module for making accessibility easy",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/angular/angular.js.git"
|
||||
},
|
||||
"keywords": [
|
||||
"angular",
|
||||
"framework",
|
||||
"browser",
|
||||
"accessibility",
|
||||
"a11y",
|
||||
"client-side"
|
||||
],
|
||||
"author": "Angular Core Team <angular-core+npm@google.com>",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/angular/angular.js/issues"
|
||||
},
|
||||
"homepage": "http://angularjs.org"
|
||||
}
|
||||
25
IonicMaterialDesign/www/lib/angular-material/.bower.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "angular-material",
|
||||
"version": "0.10.0",
|
||||
"ignore": [],
|
||||
"dependencies": {
|
||||
"angular": "^1.3.0 || >1.4.0-beta.0",
|
||||
"angular-animate": "^1.3.0 || >1.4.0-beta.0",
|
||||
"angular-aria": "^1.3.15 || >1.4.0-beta.0"
|
||||
},
|
||||
"main": [
|
||||
"angular-material.js",
|
||||
"angular-material.css"
|
||||
],
|
||||
"homepage": "https://github.com/angular/bower-material",
|
||||
"_release": "0.10.0",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v0.10.0",
|
||||
"commit": "1e48d39c2be9aa2bf6ebb212f978947d7e52e608"
|
||||
},
|
||||
"_source": "git://github.com/angular/bower-material.git",
|
||||
"_target": "~0.10.0",
|
||||
"_originalSource": "angular-material",
|
||||
"_direct": true
|
||||
}
|
||||
5
IonicMaterialDesign/www/lib/angular-material/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
*.log
|
||||
*.sw*
|
||||
.DS_STORE
|
||||
/.idea/
|
||||
default-theme.css
|
||||
1599
IonicMaterialDesign/www/lib/angular-material/CHANGELOG.md
Normal file
21
IonicMaterialDesign/www/lib/angular-material/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2014 Google, Inc. http://angularjs.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
211
IonicMaterialDesign/www/lib/angular-material/README.md
Normal file
@@ -0,0 +1,211 @@
|
||||
This repo is for distribution on `npm` and `bower`. The source for this module is in the
|
||||
[main Angular Material repo](https://github.com/angular/material).
|
||||
Please file issues and pull requests against that repo.
|
||||
|
||||
## Installing Angular Material
|
||||
|
||||
You can install this package locally either with `npm`, `jspm`, or `bower`.
|
||||
|
||||
### npm
|
||||
|
||||
```shell
|
||||
# To install latest formal release
|
||||
npm install angular-material
|
||||
|
||||
# To install latest release and update package.json
|
||||
npm install angular-material --save-dev
|
||||
|
||||
# To install from HEAD of master
|
||||
npm install http://github.com/angular/bower-material/tarball/master
|
||||
|
||||
# To view all installed package
|
||||
npm list;
|
||||
```
|
||||
|
||||
### jspm
|
||||
|
||||
```shell
|
||||
# To install latest formal release
|
||||
jspm install angular-material;
|
||||
|
||||
# To install from HEAD of master
|
||||
jspm install angular-material=github:angular/bower-material@master;
|
||||
|
||||
# To view all installed package versions
|
||||
jspm inspect;
|
||||
```
|
||||
|
||||
Now you can use `require('angular-material')` when installing with npm or jsmp and using Browserify or Webpack.
|
||||
|
||||
### bower
|
||||
|
||||
```shell
|
||||
# To get the latest stable version, use bower from the command line.
|
||||
bower install angular-material
|
||||
|
||||
# To get the most recent, last committed-to-master version use:
|
||||
bower install angular-material#master
|
||||
|
||||
# To save the bower settings for future use:
|
||||
bower install angular-material --save
|
||||
|
||||
# Later, you can use easily update with:
|
||||
bower update
|
||||
```
|
||||
|
||||
> Please note that Angular Material requires **Angular 1.3.x** or higher.
|
||||
|
||||
|
||||
## Using the Angular Material Library
|
||||
|
||||
Now that you have installed the Angular libraries, simply include the scripts and
|
||||
stylesheet in your main HTML file, in the order shown in the example below. Note that npm
|
||||
will install the files under `/node_modules/angular-material/` and bower will install them
|
||||
under `/bower_components/angular-material/`.
|
||||
|
||||
### npm
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
|
||||
<link rel="stylesheet" href="/node_modules/angular-material/angular-material.css">
|
||||
</head>
|
||||
<body ng-app="YourApp">
|
||||
|
||||
<div ng-controller="YourController">
|
||||
|
||||
</div>
|
||||
|
||||
<script src="/node_modules/angular/angular.js"></script>
|
||||
<script src="/node_modules/angular-aria/angular-aria.js"></script>
|
||||
<script src="/node_modules/angular-animate/angular-animate.js"></script>
|
||||
<script src="/node_modules/angular-material/angular-material.js"></script>
|
||||
<script>
|
||||
|
||||
// Include app dependency on ngMaterial
|
||||
|
||||
angular.module( 'YourApp', [ 'ngMaterial' ] )
|
||||
.controller("YourController", YourController );
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
### bower
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
|
||||
<link rel="stylesheet" href="/bower_components/angular-material/angular-material.css">
|
||||
</head>
|
||||
<body ng-app="YourApp">
|
||||
|
||||
<div ng-controller="YourController">
|
||||
|
||||
</div>
|
||||
|
||||
<script src="/bower_components/angular/angular.js"></script>
|
||||
<script src="/bower_components/angular-aria/angular-aria.js"></script>
|
||||
<script src="/bower_components/angular-animate/angular-animate.js"></script>
|
||||
<script src="/bower_components/angular-material/angular-material.js"></script>
|
||||
<script>
|
||||
|
||||
// Include app dependency on ngMaterial
|
||||
|
||||
angular.module( 'YourApp', [ 'ngMaterial' ] )
|
||||
.controller("YourController", YourController );
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
## Using the CDN
|
||||
|
||||
CDN versions of Angular Material are now available at
|
||||
[Google Hosted Libraries](https://developers.google.com/speed/libraries/devguide#angularmaterial).
|
||||
|
||||
With the Google CDN, you will not need to download local copies of the distribution files.
|
||||
Instead simply reference the CDN urls to easily use those remote library files.
|
||||
This is especially useful when using online tools such as CodePen, Plunkr, or jsFiddle.
|
||||
|
||||
```html
|
||||
<head>
|
||||
|
||||
<!-- Angular Material CSS now available via Google CDN; version 0.9.4 used here -->
|
||||
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/angular_material/0.9.4/angular-material.min.css">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- Angular Material Dependencies -->
|
||||
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js"></script>
|
||||
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular-animate.min.js"></script>
|
||||
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular-aria.min.js"></script>
|
||||
|
||||
<!-- Angular Material Javascript now available via Google CDN; version 0.9.4 used here -->
|
||||
<script src="//ajax.googleapis.com/ajax/libs/angular_material/0.9.4/angular-material.min.js"></script>
|
||||
|
||||
</body>
|
||||
```
|
||||
|
||||
> Note that the above sample references the 0.9.4 CDN release. Your version will change
|
||||
based on the latest stable release version.
|
||||
|
||||
## Jasmine Testing with Angular Material
|
||||
|
||||
<br/>
|
||||
If you are using Angular Material and will be using Jasmine to test your own custom application code, you will need to also load two (2) Angular mock files:
|
||||
|
||||
* Angular Mocks - **angular-mocks.js** from `/node_modules/angular-mocks/angular-mocks.js`
|
||||
* Angular Material Mocks - **angular-material-mocks.js** from `/node_modules/angular-material/angular-material-mocks.js`
|
||||
|
||||
<br/>
|
||||
|
||||
Shown below is a karma-configuration file (`karma.conf.js`) sample that may be a useful template for your own testing purposes:<br/><br/>
|
||||
|
||||
```js
|
||||
module.exports = function(config) {
|
||||
|
||||
var SRC = [
|
||||
'src/myApp/**/*.js',
|
||||
'test/myApp/**/*.spec.js'
|
||||
];
|
||||
|
||||
var LIBS = [
|
||||
'node_modules/angular/angular.js',
|
||||
'node_modules/angular-animate/angular-animate.js',
|
||||
'node_modules/angular-aria/angular-aria.js',
|
||||
'node_modules/angular-material/angular-material.js',
|
||||
|
||||
'node_modules/angular-mocks/angular-mocks.js',
|
||||
'node_modules/angular-material/angular-material-mocks.js'
|
||||
];
|
||||
|
||||
config.set({
|
||||
|
||||
basePath: __dirname + '/..',
|
||||
frameworks: ['jasmine'],
|
||||
|
||||
files: LIBS.concat(SRC),
|
||||
|
||||
port: 9876,
|
||||
reporters: ['progress'],
|
||||
colors: true,
|
||||
|
||||
autoWatch: false,
|
||||
singleRun: true,
|
||||
browsers: ['PhantomJS,Chrome']
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
```
|
||||
|
||||
77
IonicMaterialDesign/www/lib/angular-material/angular-material-mocks.js
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
/**
|
||||
*
|
||||
* Angular-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 Angular 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';
|
||||
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name ngMaterial-mock
|
||||
* @packageName angular-material-mocks
|
||||
*
|
||||
* @description
|
||||
*
|
||||
* The `ngMaterial-mock` module provides support
|
||||
*
|
||||
*/
|
||||
angular.module('ngMaterial-mock', ['ngMock', 'material.core'])
|
||||
.config(['$provide', function($provide) {
|
||||
|
||||
/**
|
||||
* Angular 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', '/**/');
|
||||
|
||||
/**
|
||||
* Intercept to make .expectWithText() to be synchronous
|
||||
*/
|
||||
$provide.decorator('$mdAria', function($delegate){
|
||||
|
||||
$delegate.expectWithText = function(element, attrName){
|
||||
$delegate.expect(element, attrName, element.text().trim());
|
||||
};
|
||||
|
||||
return $delegate;
|
||||
});
|
||||
|
||||
/**
|
||||
* 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;
|
||||
});
|
||||
|
||||
}]);
|
||||
|
||||
})(window, window.angular);
|
||||
7183
IonicMaterialDesign/www/lib/angular-material/angular-material.css
Normal file
15406
IonicMaterialDesign/www/lib/angular-material/angular-material.js
vendored
Normal file
6
IonicMaterialDesign/www/lib/angular-material/angular-material.min.css
vendored
Normal file
14
IonicMaterialDesign/www/lib/angular-material/angular-material.min.js
vendored
Normal file
14
IonicMaterialDesign/www/lib/angular-material/bower.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "angular-material",
|
||||
"version": "0.10.0",
|
||||
"ignore": [],
|
||||
"dependencies": {
|
||||
"angular": "^1.3.0 || >1.4.0-beta.0",
|
||||
"angular-animate": "^1.3.0 || >1.4.0-beta.0",
|
||||
"angular-aria": "^1.3.15 || >1.4.0-beta.0"
|
||||
},
|
||||
"main": [
|
||||
"angular-material.js",
|
||||
"angular-material.css"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"><g><g><rect fill="none" width="24" height="24"/><path fill="#7d7d7d" d="M16,1H4C2.9,1,2,1.9,2,3v14h2V3h12V1z M19,5H8C6.9,5,6,5.9,6,7v14c0,1.1,0.9,2,2,2h11c1.1,0,2-0.9,2-2V7C21,5.9,20.1,5,19,5z M19,21H8V7h11V21z"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 365 B |
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"><g><g><rect fill="none" width="48" height="48"/><path fill="#7d7d7d" d="M32,2H8C5.8,2,4,3.8,4,6v28h4V6h24V2z M38,10H16c-2.2,0-4,1.8-4,4v28c0,2.2,1.8,4,4,4h22c2.2,0,4-1.8,4-4V14C42,11.8,40.2,10,38,10z M38,42H16V14h22V42z"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 374 B |
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"><g><g><g><path fill="#7d7d7d" d="M40,4H8C5.8,4,4,5.8,4,8l0,32c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V8C44,5.8,42.2,4,40,4z M38,8v6h-4c-1.1,0-2,0.9-2,2v4h6v6h-6v14h-6V26h-4v-6h4v-5c0-3.9,3.1-7,7-7H38z"/></g><g><rect fill="none" width="48" height="48"/></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 403 B |
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"><g><g><path fill="#159F5C" d="M23,4C13.6,4,6,11.6,6,21s7.6,17,17,17h1v7c9.7-4.7,16-15,16-24C40,11.6,32.4,4,23,4z M22,22l-2,4h-3l2-4h-3v-6h6V22zM30,22l-2,4h-3l2-4h-3v-6h6V22z"/><rect x="0" fill="none" width="48" height="48"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 376 B |
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"><g><g><path fill="#7d7d7d" d="M40,8H8c-2.2,0-4,1.8-4,4l0,24c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V12C44,9.8,42.2,8,40,8z M40,16L24,26L8,16v-4l16,10l16-10V16z"/><rect fill="none" width="48" height="48"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 351 B |
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"><g><g><path fill="#7d7d7d" d="M40,4H8C5.8,4,4,5.8,4,8l0,36l8-8h28c2.2,0,4-1.8,4-4V8C44,5.8,42.2,4,40,4z M36,28H12v-4h24V28z M36,22H12v-4h24V22zM36,16H12v-4h24V16z"/><rect x="0" fill="none" width="48" height="48"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 365 B |
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="24px"height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"><g><g><g><path d="M19,8H5c-1.7,0-3,1.3-3,3v6h4v4h12v-4h4v-6C22,9.3,20.7,8,19,8z M16,19H8v-5h8V19z M19,12c-0.6,0-1-0.4-1-1s0.4-1,1-1c0.6,0,1,0.4,1,1S19.6,12,19,12z M18,3H6v4h12V3z" fill="#7d7d7d"/></g><rect fill="none" width="24" height="24"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 393 B |
@@ -0,0 +1,2 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"><g><g><g><path fill="#7d7d7d" d="M40,4H8C5.8,4,4,5.8,4,8l0,32c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V8C44,5.8,42.2,4,40,4z M35.4,18.7c-0.1,9.2-6,15.6-14.8,16c-3.6,0.2-6.3-1-8.6-2.5c2.7,0.4,6-0.6,7.8-2.2c-2.6-0.3-4.2-1.6-4.9-3.8c0.8,0.1,1.6,0.1,2.3-0.1
|
||||
c-2.4-0.8-4.1-2.3-4.2-5.3c0.7,0.3,1.4,0.6,2.3,0.6c-1.8-1-3.1-4.7-1.6-7.2c2.6,2.9,5.8,5.3,11,5.6c-1.3-5.6,6.1-8.6,9.2-4.9c1.3-0.3,2.4-0.8,3.4-1.3c-0.4,1.3-1.2,2.2-2.2,2.9c1.1-0.1,2.1-0.4,2.9-0.8C37.5,16.9,36.4,17.9,35.4,18.7z"/></g><g><rect fill="none" width="48" height="48"/></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 680 B |
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"><g><g><rect x="-618" y="-2232" fill="none" width="1400" height="3600"/></g></g><g><g><rect fill="none" width="24" height="24"/><path fill="#7d7d7d" d="M19.4,10c-0.7-3.4-3.7-6-7.4-6C9.1,4,6.6,5.6,5.4,8C2.3,8.4,0,10.9,0,14c0,3.3,2.7,6,6,6h13c2.8,0,5-2.2,5-5C24,12.4,21.9,10.2,19.4,10z M14,13v4h-4v-4H7l5-5l5,5H14z"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 466 B |
@@ -0,0 +1,39 @@
|
||||
.custom-chips {
|
||||
.md-chip {
|
||||
position: relative;
|
||||
padding-right: 35px;
|
||||
.md-chip-remove-container {
|
||||
position: absolute;
|
||||
right: 4px;
|
||||
top: 4px;
|
||||
margin-right: 0;
|
||||
height: 24px;
|
||||
button.vegetablechip {
|
||||
position: relative;
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
background: rgba(black, 0.3);
|
||||
border-radius: 50%;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
transition: background 0.15s linear;
|
||||
display: block;
|
||||
md-icon {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate3d(-50%, -50%, 0) scale(0.7);
|
||||
color: white;
|
||||
fill: white;
|
||||
}
|
||||
&:hover, &:focus {
|
||||
background: rgba(red, 0.8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
md-content.autocomplete {
|
||||
min-height: 250px;
|
||||
}
|
||||
.md-item-text.compact {
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
.contact-item {
|
||||
box-sizing: border-box;
|
||||
&.selected {
|
||||
opacity: 0.5;
|
||||
h3 {
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
.md-list-item-text {
|
||||
padding: 14px 0;
|
||||
h3 {
|
||||
margin: 0 !important;
|
||||
padding: 0;
|
||||
line-height: 1.2em !important;
|
||||
}
|
||||
h3, p {
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
@media (min-width: 900px) {
|
||||
float: left;
|
||||
width: 33%;
|
||||
}
|
||||
}
|
||||
|
||||
md-contact-chips {
|
||||
margin-bottom : 10px;
|
||||
}
|
||||
|
||||
.md-chips {
|
||||
padding: 5px 0 8px;
|
||||
}
|
||||
|
||||
|
||||
.fixedRows {
|
||||
height: 250px;
|
||||
overflow:hidden;
|
||||
}
|
||||