mirror of
https://github.com/arnaucube/commonroutesApp.git
synced 2026-02-07 11:36:42 +01:00
geolocation added on offerCar and travel page
This commit is contained in:
7
www/lib/angular-material/modules/js/list/bower.json
Normal file
7
www/lib/angular-material/modules/js/list/bower.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"name": "angular-material-list",
|
||||
"version": "1.1.0-master-2b98560",
|
||||
"dependencies": {
|
||||
"angular-material-core": "1.1.0-master-2b98560"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
/*!
|
||||
* Angular Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.1
|
||||
*/
|
||||
md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h3, md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h4,
|
||||
md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h3,
|
||||
md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h4 {
|
||||
color: '{{foreground-1}}'; }
|
||||
|
||||
md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text p,
|
||||
md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text p {
|
||||
color: '{{foreground-2}}'; }
|
||||
|
||||
md-list.md-THEME_NAME-theme .md-proxy-focus.md-focused div.md-no-style {
|
||||
background-color: '{{background-100}}'; }
|
||||
|
||||
md-list.md-THEME_NAME-theme md-list-item .md-avatar-icon {
|
||||
background-color: '{{foreground-3}}';
|
||||
color: '{{background-color}}'; }
|
||||
|
||||
md-list.md-THEME_NAME-theme md-list-item > md-icon {
|
||||
color: '{{foreground-2}}'; }
|
||||
md-list.md-THEME_NAME-theme md-list-item > md-icon.md-highlight {
|
||||
color: '{{primary-color}}'; }
|
||||
md-list.md-THEME_NAME-theme md-list-item > md-icon.md-highlight.md-accent {
|
||||
color: '{{accent-color}}'; }
|
||||
6
www/lib/angular-material/modules/js/list/list-default-theme.min.css
vendored
Normal file
6
www/lib/angular-material/modules/js/list/list-default-theme.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Angular Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.0-master-2b98560
|
||||
*/md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h3,md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h4,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h3,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h4{color:'{{foreground-1}}'}md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text p,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text p{color:'{{foreground-2}}'}md-list.md-THEME_NAME-theme .md-proxy-focus.md-focused div.md-no-style{background-color:'{{background-100}}'}md-list.md-THEME_NAME-theme md-list-item .md-avatar-icon{background-color:'{{foreground-3}}';color:'{{background-color}}'}md-list.md-THEME_NAME-theme md-list-item>md-icon{color:'{{foreground-2}}'}md-list.md-THEME_NAME-theme md-list-item>md-icon.md-highlight{color:'{{primary-color}}'}md-list.md-THEME_NAME-theme md-list-item>md-icon.md-highlight.md-accent{color:'{{accent-color}}'}
|
||||
402
www/lib/angular-material/modules/js/list/list.css
Normal file
402
www/lib/angular-material/modules/js/list/list.css
Normal file
@@ -0,0 +1,402 @@
|
||||
/*!
|
||||
* Angular Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.1
|
||||
*/
|
||||
md-list {
|
||||
display: block;
|
||||
padding: 8px 0px 8px 0px; }
|
||||
md-list .md-subheader {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.010em;
|
||||
line-height: 1.2em; }
|
||||
md-list.md-dense md-list-item,
|
||||
md-list.md-dense md-list-item .md-list-item-inner {
|
||||
min-height: 48px; }
|
||||
md-list.md-dense md-list-item::before,
|
||||
md-list.md-dense md-list-item .md-list-item-inner::before {
|
||||
content: '';
|
||||
min-height: 48px;
|
||||
visibility: hidden;
|
||||
display: inline-block; }
|
||||
md-list.md-dense md-list-item md-icon:first-child,
|
||||
md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child {
|
||||
width: 20px;
|
||||
height: 20px; }
|
||||
md-list.md-dense md-list-item > md-icon:first-child:not(.md-avatar-icon),
|
||||
md-list.md-dense md-list-item .md-list-item-inner > md-icon:first-child:not(.md-avatar-icon) {
|
||||
margin-right: 36px; }
|
||||
[dir=rtl] md-list.md-dense md-list-item > md-icon:first-child:not(.md-avatar-icon), [dir=rtl]
|
||||
md-list.md-dense md-list-item .md-list-item-inner > md-icon:first-child:not(.md-avatar-icon) {
|
||||
margin-right: auto;
|
||||
margin-left: 36px; }
|
||||
md-list.md-dense md-list-item .md-avatar, md-list.md-dense md-list-item .md-avatar-icon,
|
||||
md-list.md-dense md-list-item .md-list-item-inner .md-avatar,
|
||||
md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon {
|
||||
margin-right: 20px; }
|
||||
[dir=rtl] md-list.md-dense md-list-item .md-avatar, [dir=rtl] md-list.md-dense md-list-item .md-avatar-icon, [dir=rtl]
|
||||
md-list.md-dense md-list-item .md-list-item-inner .md-avatar, [dir=rtl]
|
||||
md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon {
|
||||
margin-right: auto;
|
||||
margin-left: 20px; }
|
||||
md-list.md-dense md-list-item .md-avatar,
|
||||
md-list.md-dense md-list-item .md-list-item-inner .md-avatar {
|
||||
-webkit-box-flex: 0;
|
||||
-webkit-flex: none;
|
||||
flex: none;
|
||||
width: 36px;
|
||||
height: 36px; }
|
||||
md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset, md-list.md-dense md-list-item.md-2-line > .md-no-style .md-list-item-text.md-offset, md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset, md-list.md-dense md-list-item.md-3-line > .md-no-style .md-list-item-text.md-offset {
|
||||
margin-left: 56px; }
|
||||
[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset, [dir=rtl] md-list.md-dense md-list-item.md-2-line > .md-no-style .md-list-item-text.md-offset, [dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset, [dir=rtl] md-list.md-dense md-list-item.md-3-line > .md-no-style .md-list-item-text.md-offset {
|
||||
margin-left: auto;
|
||||
margin-right: 56px; }
|
||||
md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,
|
||||
md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,
|
||||
md-list.md-dense md-list-item.md-2-line .md-list-item-text p, md-list.md-dense md-list-item.md-2-line > .md-no-style .md-list-item-text h3,
|
||||
md-list.md-dense md-list-item.md-2-line > .md-no-style .md-list-item-text h4,
|
||||
md-list.md-dense md-list-item.md-2-line > .md-no-style .md-list-item-text p, md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,
|
||||
md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,
|
||||
md-list.md-dense md-list-item.md-3-line .md-list-item-text p, md-list.md-dense md-list-item.md-3-line > .md-no-style .md-list-item-text h3,
|
||||
md-list.md-dense md-list-item.md-3-line > .md-no-style .md-list-item-text h4,
|
||||
md-list.md-dense md-list-item.md-3-line > .md-no-style .md-list-item-text p {
|
||||
line-height: 1.05;
|
||||
font-size: 12px; }
|
||||
md-list.md-dense md-list-item.md-2-line .md-list-item-text h3, md-list.md-dense md-list-item.md-2-line > .md-no-style .md-list-item-text h3, md-list.md-dense md-list-item.md-3-line .md-list-item-text h3, md-list.md-dense md-list-item.md-3-line > .md-no-style .md-list-item-text h3 {
|
||||
font-size: 13px; }
|
||||
md-list.md-dense md-list-item.md-2-line, md-list.md-dense md-list-item.md-2-line > .md-no-style {
|
||||
min-height: 60px; }
|
||||
md-list.md-dense md-list-item.md-2-line::before, md-list.md-dense md-list-item.md-2-line > .md-no-style::before {
|
||||
content: '';
|
||||
min-height: 60px;
|
||||
visibility: hidden;
|
||||
display: inline-block; }
|
||||
md-list.md-dense md-list-item.md-2-line > .md-avatar, md-list.md-dense md-list-item.md-2-line .md-avatar-icon, md-list.md-dense md-list-item.md-2-line > .md-no-style > .md-avatar, md-list.md-dense md-list-item.md-2-line > .md-no-style .md-avatar-icon {
|
||||
margin-top: 12px; }
|
||||
md-list.md-dense md-list-item.md-3-line, md-list.md-dense md-list-item.md-3-line > .md-no-style {
|
||||
min-height: 76px; }
|
||||
md-list.md-dense md-list-item.md-3-line::before, md-list.md-dense md-list-item.md-3-line > .md-no-style::before {
|
||||
content: '';
|
||||
min-height: 76px;
|
||||
visibility: hidden;
|
||||
display: inline-block; }
|
||||
md-list.md-dense md-list-item.md-3-line > md-icon:first-child,
|
||||
md-list.md-dense md-list-item.md-3-line > .md-avatar, md-list.md-dense md-list-item.md-3-line > .md-no-style > md-icon:first-child,
|
||||
md-list.md-dense md-list-item.md-3-line > .md-no-style > .md-avatar {
|
||||
margin-top: 16px; }
|
||||
|
||||
md-list-item {
|
||||
position: relative; }
|
||||
md-list-item.md-proxy-focus.md-focused .md-no-style {
|
||||
-webkit-transition: background-color 0.15s linear;
|
||||
transition: background-color 0.15s linear; }
|
||||
md-list-item._md-button-wrap {
|
||||
position: relative; }
|
||||
md-list-item._md-button-wrap > div.md-button:first-child {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
-webkit-box-pack: start;
|
||||
-webkit-justify-content: flex-start;
|
||||
justify-content: flex-start;
|
||||
padding: 0 16px;
|
||||
margin: 0;
|
||||
font-weight: 400;
|
||||
text-align: left;
|
||||
border: medium none; }
|
||||
[dir=rtl] md-list-item._md-button-wrap > div.md-button:first-child {
|
||||
text-align: right; }
|
||||
md-list-item._md-button-wrap > div.md-button:first-child > .md-button:first-child {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
md-list-item._md-button-wrap > div.md-button:first-child .md-list-item-inner {
|
||||
width: 100%;
|
||||
min-height: inherit; }
|
||||
md-list-item.md-no-proxy,
|
||||
md-list-item .md-no-style {
|
||||
position: relative;
|
||||
padding: 0px 16px;
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1 1 auto;
|
||||
flex: 1 1 auto; }
|
||||
md-list-item.md-no-proxy.md-button,
|
||||
md-list-item .md-no-style.md-button {
|
||||
font-size: inherit;
|
||||
height: inherit;
|
||||
text-align: left;
|
||||
text-transform: none;
|
||||
width: 100%;
|
||||
white-space: normal;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: inherit;
|
||||
flex-direction: inherit;
|
||||
-webkit-box-align: inherit;
|
||||
-webkit-align-items: inherit;
|
||||
-ms-grid-row-align: inherit;
|
||||
align-items: inherit;
|
||||
border-radius: 0;
|
||||
margin: 0; }
|
||||
[dir=rtl] md-list-item.md-no-proxy.md-button, [dir=rtl]
|
||||
md-list-item .md-no-style.md-button {
|
||||
text-align: right; }
|
||||
md-list-item.md-no-proxy.md-button > .md-ripple-container,
|
||||
md-list-item .md-no-style.md-button > .md-ripple-container {
|
||||
border-radius: 0; }
|
||||
md-list-item.md-no-proxy:focus,
|
||||
md-list-item .md-no-style:focus {
|
||||
outline: none; }
|
||||
md-list-item.md-clickable:hover {
|
||||
cursor: pointer; }
|
||||
md-list-item md-divider {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%; }
|
||||
[dir=rtl] md-list-item md-divider {
|
||||
left: auto;
|
||||
right: 0; }
|
||||
md-list-item md-divider[md-inset] {
|
||||
left: 72px;
|
||||
width: calc(100% - 72px);
|
||||
margin: 0 !important; }
|
||||
[dir=rtl] md-list-item md-divider[md-inset] {
|
||||
left: auto;
|
||||
right: 72px; }
|
||||
md-list-item,
|
||||
md-list-item .md-list-item-inner {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-pack: start;
|
||||
-webkit-justify-content: flex-start;
|
||||
justify-content: flex-start;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
min-height: 48px;
|
||||
height: auto; }
|
||||
md-list-item::before,
|
||||
md-list-item .md-list-item-inner::before {
|
||||
content: '';
|
||||
min-height: 48px;
|
||||
visibility: hidden;
|
||||
display: inline-block; }
|
||||
md-list-item > div.md-primary > md-icon:not(.md-avatar-icon),
|
||||
md-list-item > div.md-secondary > md-icon:not(.md-avatar-icon),
|
||||
md-list-item > md-icon:first-child:not(.md-avatar-icon),
|
||||
md-list-item > md-icon.md-secondary:not(.md-avatar-icon),
|
||||
md-list-item .md-list-item-inner > div.md-primary > md-icon:not(.md-avatar-icon),
|
||||
md-list-item .md-list-item-inner > div.md-secondary > md-icon:not(.md-avatar-icon),
|
||||
md-list-item .md-list-item-inner > md-icon:first-child:not(.md-avatar-icon),
|
||||
md-list-item .md-list-item-inner > md-icon.md-secondary:not(.md-avatar-icon) {
|
||||
width: 24px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 12px;
|
||||
box-sizing: content-box; }
|
||||
md-list-item > div.md-primary > md-checkbox,
|
||||
md-list-item > div.md-secondary > md-checkbox,
|
||||
md-list-item > md-checkbox,
|
||||
md-list-item md-checkbox.md-secondary,
|
||||
md-list-item .md-list-item-inner > div.md-primary > md-checkbox,
|
||||
md-list-item .md-list-item-inner > div.md-secondary > md-checkbox,
|
||||
md-list-item .md-list-item-inner > md-checkbox,
|
||||
md-list-item .md-list-item-inner md-checkbox.md-secondary {
|
||||
-webkit-align-self: center;
|
||||
align-self: center; }
|
||||
md-list-item > div.md-primary > md-checkbox .md-label,
|
||||
md-list-item > div.md-secondary > md-checkbox .md-label,
|
||||
md-list-item > md-checkbox .md-label,
|
||||
md-list-item md-checkbox.md-secondary .md-label,
|
||||
md-list-item .md-list-item-inner > div.md-primary > md-checkbox .md-label,
|
||||
md-list-item .md-list-item-inner > div.md-secondary > md-checkbox .md-label,
|
||||
md-list-item .md-list-item-inner > md-checkbox .md-label,
|
||||
md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label {
|
||||
display: none; }
|
||||
md-list-item > md-icon:first-child:not(.md-avatar-icon),
|
||||
md-list-item .md-list-item-inner > md-icon:first-child:not(.md-avatar-icon) {
|
||||
margin-right: 32px; }
|
||||
[dir=rtl] md-list-item > md-icon:first-child:not(.md-avatar-icon), [dir=rtl]
|
||||
md-list-item .md-list-item-inner > md-icon:first-child:not(.md-avatar-icon) {
|
||||
margin-right: auto;
|
||||
margin-left: 32px; }
|
||||
md-list-item .md-avatar, md-list-item .md-avatar-icon,
|
||||
md-list-item .md-list-item-inner .md-avatar,
|
||||
md-list-item .md-list-item-inner .md-avatar-icon {
|
||||
margin-top: 8px;
|
||||
margin-bottom: 8px;
|
||||
margin-right: 16px;
|
||||
border-radius: 50%;
|
||||
box-sizing: content-box; }
|
||||
[dir=rtl] md-list-item .md-avatar, [dir=rtl] md-list-item .md-avatar-icon, [dir=rtl]
|
||||
md-list-item .md-list-item-inner .md-avatar, [dir=rtl]
|
||||
md-list-item .md-list-item-inner .md-avatar-icon {
|
||||
margin-right: auto;
|
||||
margin-left: 16px; }
|
||||
md-list-item .md-avatar,
|
||||
md-list-item .md-list-item-inner .md-avatar {
|
||||
-webkit-box-flex: 0;
|
||||
-webkit-flex: none;
|
||||
flex: none;
|
||||
width: 40px;
|
||||
height: 40px; }
|
||||
md-list-item .md-avatar-icon,
|
||||
md-list-item .md-list-item-inner .md-avatar-icon {
|
||||
padding: 8px; }
|
||||
md-list-item .md-avatar-icon svg,
|
||||
md-list-item .md-list-item-inner .md-avatar-icon svg {
|
||||
width: 24px;
|
||||
height: 24px; }
|
||||
md-list-item > md-checkbox,
|
||||
md-list-item .md-list-item-inner > md-checkbox {
|
||||
width: 24px;
|
||||
margin-left: 3px;
|
||||
margin-right: 29px;
|
||||
margin-top: 16px; }
|
||||
[dir=rtl] md-list-item > md-checkbox, [dir=rtl]
|
||||
md-list-item .md-list-item-inner > md-checkbox {
|
||||
margin-left: 29px; }
|
||||
[dir=rtl] md-list-item > md-checkbox, [dir=rtl]
|
||||
md-list-item .md-list-item-inner > md-checkbox {
|
||||
margin-right: 3px; }
|
||||
md-list-item .md-secondary-container,
|
||||
md-list-item .md-list-item-inner .md-secondary-container {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
-webkit-flex-shrink: 0;
|
||||
flex-shrink: 0;
|
||||
margin: auto;
|
||||
margin-right: 0;
|
||||
margin-left: auto; }
|
||||
[dir=rtl] md-list-item .md-secondary-container, [dir=rtl]
|
||||
md-list-item .md-list-item-inner .md-secondary-container {
|
||||
margin-right: auto; }
|
||||
[dir=rtl] md-list-item .md-secondary-container, [dir=rtl]
|
||||
md-list-item .md-list-item-inner .md-secondary-container {
|
||||
margin-left: 0; }
|
||||
md-list-item .md-secondary-container .md-button:last-of-type, md-list-item .md-secondary-container .md-icon-button:last-of-type,
|
||||
md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,
|
||||
md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type {
|
||||
margin-right: 0; }
|
||||
[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type, [dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type, [dir=rtl]
|
||||
md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type, [dir=rtl]
|
||||
md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type {
|
||||
margin-right: auto;
|
||||
margin-left: 0; }
|
||||
md-list-item .md-secondary-container md-checkbox,
|
||||
md-list-item .md-list-item-inner .md-secondary-container md-checkbox {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0; }
|
||||
md-list-item .md-secondary-container md-checkbox:last-child,
|
||||
md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child {
|
||||
width: 24px;
|
||||
margin-right: 0; }
|
||||
[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child, [dir=rtl]
|
||||
md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child {
|
||||
margin-right: auto;
|
||||
margin-left: 0; }
|
||||
md-list-item .md-secondary-container md-switch,
|
||||
md-list-item .md-list-item-inner .md-secondary-container md-switch {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
margin-right: -6px; }
|
||||
[dir=rtl] md-list-item .md-secondary-container md-switch, [dir=rtl]
|
||||
md-list-item .md-list-item-inner .md-secondary-container md-switch {
|
||||
margin-right: auto;
|
||||
margin-left: -6px; }
|
||||
md-list-item > p, md-list-item > .md-list-item-inner > p,
|
||||
md-list-item .md-list-item-inner > p,
|
||||
md-list-item .md-list-item-inner > .md-list-item-inner > p {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1 1 auto;
|
||||
flex: 1 1 auto;
|
||||
margin: 0; }
|
||||
md-list-item.md-2-line, md-list-item.md-2-line > .md-no-style, md-list-item.md-3-line, md-list-item.md-3-line > .md-no-style {
|
||||
-webkit-box-align: start;
|
||||
-webkit-align-items: flex-start;
|
||||
-ms-grid-row-align: flex-start;
|
||||
align-items: flex-start;
|
||||
-webkit-box-pack: center;
|
||||
-webkit-justify-content: center;
|
||||
justify-content: center; }
|
||||
md-list-item.md-2-line.md-long-text, md-list-item.md-2-line > .md-no-style.md-long-text, md-list-item.md-3-line.md-long-text, md-list-item.md-3-line > .md-no-style.md-long-text {
|
||||
margin-top: 8px;
|
||||
margin-bottom: 8px; }
|
||||
md-list-item.md-2-line .md-list-item-text, md-list-item.md-2-line > .md-no-style .md-list-item-text, md-list-item.md-3-line .md-list-item-text, md-list-item.md-3-line > .md-no-style .md-list-item-text {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1 1 auto;
|
||||
flex: 1 1 auto;
|
||||
margin: auto;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden; }
|
||||
md-list-item.md-2-line .md-list-item-text.md-offset, md-list-item.md-2-line > .md-no-style .md-list-item-text.md-offset, md-list-item.md-3-line .md-list-item-text.md-offset, md-list-item.md-3-line > .md-no-style .md-list-item-text.md-offset {
|
||||
margin-left: 56px; }
|
||||
[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset, [dir=rtl] md-list-item.md-2-line > .md-no-style .md-list-item-text.md-offset, [dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset, [dir=rtl] md-list-item.md-3-line > .md-no-style .md-list-item-text.md-offset {
|
||||
margin-left: auto;
|
||||
margin-right: 56px; }
|
||||
md-list-item.md-2-line .md-list-item-text h3, md-list-item.md-2-line > .md-no-style .md-list-item-text h3, md-list-item.md-3-line .md-list-item-text h3, md-list-item.md-3-line > .md-no-style .md-list-item-text h3 {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
letter-spacing: 0.010em;
|
||||
margin: 0 0 0px 0;
|
||||
line-height: 1.2em;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis; }
|
||||
md-list-item.md-2-line .md-list-item-text h4, md-list-item.md-2-line > .md-no-style .md-list-item-text h4, md-list-item.md-3-line .md-list-item-text h4, md-list-item.md-3-line > .md-no-style .md-list-item-text h4 {
|
||||
font-size: 14px;
|
||||
letter-spacing: 0.010em;
|
||||
margin: 3px 0 1px 0;
|
||||
font-weight: 400;
|
||||
line-height: 1.2em;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis; }
|
||||
md-list-item.md-2-line .md-list-item-text p, md-list-item.md-2-line > .md-no-style .md-list-item-text p, md-list-item.md-3-line .md-list-item-text p, md-list-item.md-3-line > .md-no-style .md-list-item-text p {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.010em;
|
||||
margin: 0 0 0 0;
|
||||
line-height: 1.6em; }
|
||||
md-list-item.md-2-line, md-list-item.md-2-line > .md-no-style {
|
||||
height: auto;
|
||||
min-height: 72px; }
|
||||
md-list-item.md-2-line::before, md-list-item.md-2-line > .md-no-style::before {
|
||||
content: '';
|
||||
min-height: 72px;
|
||||
visibility: hidden;
|
||||
display: inline-block; }
|
||||
md-list-item.md-2-line > .md-avatar, md-list-item.md-2-line .md-avatar-icon, md-list-item.md-2-line > .md-no-style > .md-avatar, md-list-item.md-2-line > .md-no-style .md-avatar-icon {
|
||||
margin-top: 12px; }
|
||||
md-list-item.md-2-line > md-icon:first-child, md-list-item.md-2-line > .md-no-style > md-icon:first-child {
|
||||
-webkit-align-self: flex-start;
|
||||
align-self: flex-start; }
|
||||
md-list-item.md-2-line .md-list-item-text, md-list-item.md-2-line > .md-no-style .md-list-item-text {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1 1 auto;
|
||||
flex: 1 1 auto; }
|
||||
md-list-item.md-3-line, md-list-item.md-3-line > .md-no-style {
|
||||
height: auto;
|
||||
min-height: 88px; }
|
||||
md-list-item.md-3-line::before, md-list-item.md-3-line > .md-no-style::before {
|
||||
content: '';
|
||||
min-height: 88px;
|
||||
visibility: hidden;
|
||||
display: inline-block; }
|
||||
md-list-item.md-3-line > md-icon:first-child,
|
||||
md-list-item.md-3-line > .md-avatar, md-list-item.md-3-line > .md-no-style > md-icon:first-child,
|
||||
md-list-item.md-3-line > .md-no-style > .md-avatar {
|
||||
margin-top: 16px; }
|
||||
581
www/lib/angular-material/modules/js/list/list.js
vendored
Normal file
581
www/lib/angular-material/modules/js/list/list.js
vendored
Normal file
@@ -0,0 +1,581 @@
|
||||
/*!
|
||||
* Angular Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.1
|
||||
*/
|
||||
(function( window, angular, undefined ){
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.components.list
|
||||
* @description
|
||||
* List module
|
||||
*/
|
||||
MdListController.$inject = ["$scope", "$element", "$mdListInkRipple"];
|
||||
mdListDirective.$inject = ["$mdTheming"];
|
||||
mdListItemDirective.$inject = ["$mdAria", "$mdConstant", "$mdUtil", "$timeout"];
|
||||
angular.module('material.components.list', [
|
||||
'material.core'
|
||||
])
|
||||
.controller('MdListController', MdListController)
|
||||
.directive('mdList', mdListDirective)
|
||||
.directive('mdListItem', mdListItemDirective);
|
||||
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name mdList
|
||||
* @module material.components.list
|
||||
*
|
||||
* @restrict E
|
||||
*
|
||||
* @description
|
||||
* The `<md-list>` directive is a list container for 1..n `<md-list-item>` tags.
|
||||
*
|
||||
* @usage
|
||||
* <hljs lang="html">
|
||||
* <md-list>
|
||||
* <md-list-item class="md-2-line" ng-repeat="item in todos">
|
||||
* <md-checkbox ng-model="item.done"></md-checkbox>
|
||||
* <div class="md-list-item-text">
|
||||
* <h3>{{item.title}}</h3>
|
||||
* <p>{{item.description}}</p>
|
||||
* </div>
|
||||
* </md-list-item>
|
||||
* </md-list>
|
||||
* </hljs>
|
||||
*/
|
||||
|
||||
function mdListDirective($mdTheming) {
|
||||
return {
|
||||
restrict: 'E',
|
||||
compile: function(tEl) {
|
||||
tEl[0].setAttribute('role', 'list');
|
||||
return $mdTheming;
|
||||
}
|
||||
};
|
||||
}
|
||||
/**
|
||||
* @ngdoc directive
|
||||
* @name mdListItem
|
||||
* @module material.components.list
|
||||
*
|
||||
* @restrict E
|
||||
*
|
||||
* @description
|
||||
* A `md-list-item` element can be used to represent some information in a row.<br/>
|
||||
*
|
||||
* @usage
|
||||
* ### Single Row Item
|
||||
* <hljs lang="html">
|
||||
* <md-list-item>
|
||||
* <span>Single Row Item</span>
|
||||
* </md-list-item>
|
||||
* </hljs>
|
||||
*
|
||||
* ### Multiple Lines
|
||||
* By using the following markup, you will be able to have two lines inside of one `md-list-item`.
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-list-item class="md-2-line">
|
||||
* <div class="md-list-item-text" layout="column">
|
||||
* <p>First Line</p>
|
||||
* <p>Second Line</p>
|
||||
* </div>
|
||||
* </md-list-item>
|
||||
* </hljs>
|
||||
*
|
||||
* It is also possible to have three lines inside of one list item.
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-list-item class="md-3-line">
|
||||
* <div class="md-list-item-text" layout="column">
|
||||
* <p>First Line</p>
|
||||
* <p>Second Line</p>
|
||||
* <p>Third Line</p>
|
||||
* </div>
|
||||
* </md-list-item>
|
||||
* </hljs>
|
||||
*
|
||||
* ### Secondary Items
|
||||
* Secondary items are elements which will be aligned at the end of the `md-list-item`.
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-list-item>
|
||||
* <span>Single Row Item</span>
|
||||
* <md-button class="md-secondary">
|
||||
* Secondary Button
|
||||
* </md-button>
|
||||
* </md-list-item>
|
||||
* </hljs>
|
||||
*
|
||||
* It also possible to have multiple secondary items inside of one `md-list-item`.
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-list-item>
|
||||
* <span>Single Row Item</span>
|
||||
* <md-button class="md-secondary">First Button</md-button>
|
||||
* <md-button class="md-secondary">Second Button</md-button>
|
||||
* </md-list-item>
|
||||
* </hljs>
|
||||
*
|
||||
* ### Proxy Item
|
||||
* Proxies are elements, which will execute their specific action on click<br/>
|
||||
* Currently supported proxy items are
|
||||
* - `md-checkbox` (Toggle)
|
||||
* - `md-switch` (Toggle)
|
||||
* - `md-menu` (Open)
|
||||
*
|
||||
* This means, when using a supported proxy item inside of `md-list-item`, the list item will
|
||||
* become clickable and executes the associated action of the proxy element on click.
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-list-item>
|
||||
* <span>First Line</span>
|
||||
* <md-checkbox class="md-secondary"></md-checkbox>
|
||||
* </md-list-item>
|
||||
* </hljs>
|
||||
*
|
||||
* The `md-checkbox` element will be automatically detected as a proxy element and will toggle on click.
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-list-item>
|
||||
* <span>First Line</span>
|
||||
* <md-switch class="md-secondary"></md-switch>
|
||||
* </md-list-item>
|
||||
* </hljs>
|
||||
*
|
||||
* The recognized `md-switch` will toggle its state, when the user clicks on the `md-list-item`.
|
||||
*
|
||||
* It is also possible to have a `md-menu` inside of a `md-list-item`.
|
||||
* <hljs lang="html">
|
||||
* <md-list-item>
|
||||
* <p>Click anywhere to fire the secondary action</p>
|
||||
* <md-menu class="md-secondary">
|
||||
* <md-button class="md-icon-button">
|
||||
* <md-icon md-svg-icon="communication:message"></md-icon>
|
||||
* </md-button>
|
||||
* <md-menu-content width="4">
|
||||
* <md-menu-item>
|
||||
* <md-button>
|
||||
* Redial
|
||||
* </md-button>
|
||||
* </md-menu-item>
|
||||
* <md-menu-item>
|
||||
* <md-button>
|
||||
* Check voicemail
|
||||
* </md-button>
|
||||
* </md-menu-item>
|
||||
* <md-menu-divider></md-menu-divider>
|
||||
* <md-menu-item>
|
||||
* <md-button>
|
||||
* Notifications
|
||||
* </md-button>
|
||||
* </md-menu-item>
|
||||
* </md-menu-content>
|
||||
* </md-menu>
|
||||
* </md-list-item>
|
||||
* </hljs>
|
||||
*
|
||||
* The menu will automatically open, when the users clicks on the `md-list-item`.<br/>
|
||||
*
|
||||
* If the developer didn't specify any position mode on the menu, the `md-list-item` will automatically detect the
|
||||
* position mode and applies it to the `md-menu`.
|
||||
*
|
||||
* ### Avatars
|
||||
* Sometimes you may want to have some avatars inside of the `md-list-item `.<br/>
|
||||
* You are able to create a optimized icon for the list item, by applying the `.md-avatar` class on the `<img>` element.
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-list-item>
|
||||
* <img src="my-avatar.png" class="md-avatar">
|
||||
* <span>Alan Turing</span>
|
||||
* </hljs>
|
||||
*
|
||||
* When using `<md-icon>` for an avater, you have to use the `.md-avatar-icon` class.
|
||||
* <hljs lang="html">
|
||||
* <md-list-item>
|
||||
* <md-icon class="md-avatar-icon" md-svg-icon="avatars:timothy"></md-icon>
|
||||
* <span>Timothy Kopra</span>
|
||||
* </md-list-item>
|
||||
* </hljs>
|
||||
*
|
||||
* In cases, you have a `md-list-item`, which doesn't have any avatar,
|
||||
* but you want to align it with the other avatar items, you have to use the `.md-offset` class.
|
||||
*
|
||||
* <hljs lang="html">
|
||||
* <md-list-item class="md-offset">
|
||||
* <span>Jon Doe</span>
|
||||
* </md-list-item>
|
||||
* </hljs>
|
||||
*
|
||||
* ### DOM modification
|
||||
* The `md-list-item` component automatically detects if the list item should be clickable.
|
||||
*
|
||||
* ---
|
||||
* If the `md-list-item` is clickable, we wrap all content inside of a `<div>` and create
|
||||
* an overlaying button, which will will execute the given actions (like `ng-href`, `ng-click`)
|
||||
*
|
||||
* We create an overlaying button, instead of wrapping all content inside of the button,
|
||||
* because otherwise some elements may not be clickable inside of the button.
|
||||
*
|
||||
* ---
|
||||
* When using a secondary item inside of your list item, the `md-list-item` component will automatically create
|
||||
* a secondary container at the end of the `md-list-item`, which contains all secondary items.
|
||||
*
|
||||
* The secondary item container is not static, because otherwise the overflow will not work properly on the
|
||||
* list item.
|
||||
*
|
||||
*/
|
||||
function mdListItemDirective($mdAria, $mdConstant, $mdUtil, $timeout) {
|
||||
var proxiedTypes = ['md-checkbox', 'md-switch', 'md-menu'];
|
||||
return {
|
||||
restrict: 'E',
|
||||
controller: 'MdListController',
|
||||
compile: function(tEl, tAttrs) {
|
||||
|
||||
// Check for proxy controls (no ng-click on parent, and a control inside)
|
||||
var secondaryItems = tEl[0].querySelectorAll('.md-secondary');
|
||||
var hasProxiedElement;
|
||||
var proxyElement;
|
||||
var itemContainer = tEl;
|
||||
|
||||
tEl[0].setAttribute('role', 'listitem');
|
||||
|
||||
if (tAttrs.ngClick || tAttrs.ngDblclick || tAttrs.ngHref || tAttrs.href || tAttrs.uiSref || tAttrs.ngAttrUiSref) {
|
||||
wrapIn('button');
|
||||
} else {
|
||||
for (var i = 0, type; type = proxiedTypes[i]; ++i) {
|
||||
if (proxyElement = tEl[0].querySelector(type)) {
|
||||
hasProxiedElement = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (hasProxiedElement) {
|
||||
wrapIn('div');
|
||||
} else if (!tEl[0].querySelector('md-button:not(.md-secondary):not(.md-exclude)')) {
|
||||
tEl.addClass('md-no-proxy');
|
||||
}
|
||||
}
|
||||
|
||||
wrapSecondaryItems();
|
||||
setupToggleAria();
|
||||
|
||||
if (hasProxiedElement && proxyElement.nodeName === "MD-MENU") {
|
||||
setupProxiedMenu();
|
||||
}
|
||||
|
||||
function setupToggleAria() {
|
||||
var toggleTypes = ['md-switch', 'md-checkbox'];
|
||||
var toggle;
|
||||
|
||||
for (var i = 0, toggleType; toggleType = toggleTypes[i]; ++i) {
|
||||
if (toggle = tEl.find(toggleType)[0]) {
|
||||
if (!toggle.hasAttribute('aria-label')) {
|
||||
var p = tEl.find('p')[0];
|
||||
if (!p) return;
|
||||
toggle.setAttribute('aria-label', 'Toggle ' + p.textContent);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setupProxiedMenu() {
|
||||
var menuEl = angular.element(proxyElement);
|
||||
|
||||
var isEndAligned = menuEl.parent().hasClass('md-secondary-container') ||
|
||||
proxyElement.parentNode.firstElementChild !== proxyElement;
|
||||
|
||||
var xAxisPosition = 'left';
|
||||
|
||||
if (isEndAligned) {
|
||||
// When the proxy item is aligned at the end of the list, we have to set the origin to the end.
|
||||
xAxisPosition = 'right';
|
||||
}
|
||||
|
||||
// Set the position mode / origin of the proxied menu.
|
||||
if (!menuEl.attr('md-position-mode')) {
|
||||
menuEl.attr('md-position-mode', xAxisPosition + ' target');
|
||||
}
|
||||
|
||||
// Apply menu open binding to menu button
|
||||
var menuOpenButton = menuEl.children().eq(0);
|
||||
if (!hasClickEvent(menuOpenButton[0])) {
|
||||
menuOpenButton.attr('ng-click', '$mdOpenMenu($event)');
|
||||
}
|
||||
|
||||
if (!menuOpenButton.attr('aria-label')) {
|
||||
menuOpenButton.attr('aria-label', 'Open List Menu');
|
||||
}
|
||||
}
|
||||
|
||||
function wrapIn(type) {
|
||||
if (type == 'div') {
|
||||
itemContainer = angular.element('<div class="md-no-style md-list-item-inner">');
|
||||
itemContainer.append(tEl.contents());
|
||||
tEl.addClass('md-proxy-focus');
|
||||
} else {
|
||||
// Element which holds the default list-item content.
|
||||
itemContainer = angular.element(
|
||||
'<div class="md-button md-no-style">'+
|
||||
' <div class="md-list-item-inner"></div>'+
|
||||
'</div>'
|
||||
);
|
||||
|
||||
// Button which shows ripple and executes primary action.
|
||||
var buttonWrap = angular.element(
|
||||
'<md-button class="md-no-style"></md-button>'
|
||||
);
|
||||
|
||||
buttonWrap[0].setAttribute('aria-label', tEl[0].textContent);
|
||||
|
||||
copyAttributes(tEl[0], buttonWrap[0]);
|
||||
|
||||
// We allow developers to specify the `md-no-focus` class, to disable the focus style
|
||||
// on the button executor. Once more classes should be forwarded, we should probably make the
|
||||
// class forward more generic.
|
||||
if (tEl.hasClass('md-no-focus')) {
|
||||
buttonWrap.addClass('md-no-focus');
|
||||
}
|
||||
|
||||
// Append the button wrap before our list-item content, because it will overlay in relative.
|
||||
itemContainer.prepend(buttonWrap);
|
||||
itemContainer.children().eq(1).append(tEl.contents());
|
||||
|
||||
tEl.addClass('_md-button-wrap');
|
||||
}
|
||||
|
||||
tEl[0].setAttribute('tabindex', '-1');
|
||||
tEl.append(itemContainer);
|
||||
}
|
||||
|
||||
function wrapSecondaryItems() {
|
||||
var secondaryItemsWrapper = angular.element('<div class="md-secondary-container">');
|
||||
|
||||
angular.forEach(secondaryItems, function(secondaryItem) {
|
||||
wrapSecondaryItem(secondaryItem, secondaryItemsWrapper);
|
||||
});
|
||||
|
||||
itemContainer.append(secondaryItemsWrapper);
|
||||
}
|
||||
|
||||
function wrapSecondaryItem(secondaryItem, container) {
|
||||
// If the current secondary item is not a button, but contains a ng-click attribute,
|
||||
// the secondary item will be automatically wrapped inside of a button.
|
||||
if (secondaryItem && !isButton(secondaryItem) && secondaryItem.hasAttribute('ng-click')) {
|
||||
|
||||
$mdAria.expect(secondaryItem, 'aria-label');
|
||||
var buttonWrapper = angular.element('<md-button class="md-secondary md-icon-button">');
|
||||
|
||||
// Copy the attributes from the secondary item to the generated button.
|
||||
// We also support some additional attributes from the secondary item,
|
||||
// because some developers may use a ngIf, ngHide, ngShow on their item.
|
||||
copyAttributes(secondaryItem, buttonWrapper[0], ['ng-if', 'ng-hide', 'ng-show']);
|
||||
|
||||
secondaryItem.setAttribute('tabindex', '-1');
|
||||
buttonWrapper.append(secondaryItem);
|
||||
|
||||
secondaryItem = buttonWrapper[0];
|
||||
}
|
||||
|
||||
if (secondaryItem && (!hasClickEvent(secondaryItem) || (!tAttrs.ngClick && isProxiedElement(secondaryItem)))) {
|
||||
// In this case we remove the secondary class, so we can identify it later, when we searching for the
|
||||
// proxy items.
|
||||
angular.element(secondaryItem).removeClass('md-secondary');
|
||||
}
|
||||
|
||||
tEl.addClass('md-with-secondary');
|
||||
container.append(secondaryItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies attributes from a source element to the destination element
|
||||
* By default the function will copy the most necessary attributes, supported
|
||||
* by the button executor for clickable list items.
|
||||
* @param source Element with the specified attributes
|
||||
* @param destination Element which will retrieve the attributes
|
||||
* @param extraAttrs Additional attributes, which will be copied over.
|
||||
*/
|
||||
function copyAttributes(source, destination, extraAttrs) {
|
||||
var copiedAttrs = $mdUtil.prefixer([
|
||||
'ng-if', 'ng-click', 'ng-dblclick', 'aria-label', 'ng-disabled', 'ui-sref',
|
||||
'href', 'ng-href', 'target', 'ng-attr-ui-sref', 'ui-sref-opts'
|
||||
]);
|
||||
|
||||
if (extraAttrs) {
|
||||
copiedAttrs = copiedAttrs.concat($mdUtil.prefixer(extraAttrs));
|
||||
}
|
||||
|
||||
angular.forEach(copiedAttrs, function(attr) {
|
||||
if (source.hasAttribute(attr)) {
|
||||
destination.setAttribute(attr, source.getAttribute(attr));
|
||||
source.removeAttribute(attr);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function isProxiedElement(el) {
|
||||
return proxiedTypes.indexOf(el.nodeName.toLowerCase()) != -1;
|
||||
}
|
||||
|
||||
function isButton(el) {
|
||||
var nodeName = el.nodeName.toUpperCase();
|
||||
|
||||
return nodeName == "MD-BUTTON" || nodeName == "BUTTON";
|
||||
}
|
||||
|
||||
function hasClickEvent (element) {
|
||||
var attr = element.attributes;
|
||||
for (var i = 0; i < attr.length; i++) {
|
||||
if (tAttrs.$normalize(attr[i].name) === 'ngClick') return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return postLink;
|
||||
|
||||
function postLink($scope, $element, $attr, ctrl) {
|
||||
$element.addClass('_md'); // private md component indicator for styling
|
||||
|
||||
var proxies = [],
|
||||
firstElement = $element[0].firstElementChild,
|
||||
isButtonWrap = $element.hasClass('_md-button-wrap'),
|
||||
clickChild = isButtonWrap ? firstElement.firstElementChild : firstElement,
|
||||
hasClick = clickChild && hasClickEvent(clickChild);
|
||||
|
||||
computeProxies();
|
||||
computeClickable();
|
||||
|
||||
if ($element.hasClass('md-proxy-focus') && proxies.length) {
|
||||
angular.forEach(proxies, function(proxy) {
|
||||
proxy = angular.element(proxy);
|
||||
|
||||
$scope.mouseActive = false;
|
||||
proxy.on('mousedown', function() {
|
||||
$scope.mouseActive = true;
|
||||
$timeout(function(){
|
||||
$scope.mouseActive = false;
|
||||
}, 100);
|
||||
})
|
||||
.on('focus', function() {
|
||||
if ($scope.mouseActive === false) { $element.addClass('md-focused'); }
|
||||
proxy.on('blur', function proxyOnBlur() {
|
||||
$element.removeClass('md-focused');
|
||||
proxy.off('blur', proxyOnBlur);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function computeProxies() {
|
||||
if (firstElement && firstElement.children && !hasClick) {
|
||||
|
||||
angular.forEach(proxiedTypes, function(type) {
|
||||
|
||||
// All elements which are not capable for being used a proxy have the .md-secondary class
|
||||
// applied. These items had been sorted out in the secondary wrap function.
|
||||
angular.forEach(firstElement.querySelectorAll(type + ':not(.md-secondary)'), function(child) {
|
||||
proxies.push(child);
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function computeClickable() {
|
||||
if (proxies.length == 1 || hasClick) {
|
||||
$element.addClass('md-clickable');
|
||||
|
||||
if (!hasClick) {
|
||||
ctrl.attachRipple($scope, angular.element($element[0].querySelector('.md-no-style')));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function isEventFromControl(event) {
|
||||
var forbiddenControls = ['md-slider'];
|
||||
|
||||
// If there is no path property in the event, then we can assume that the event was not bubbled.
|
||||
if (!event.path) {
|
||||
return forbiddenControls.indexOf(event.target.tagName.toLowerCase()) !== -1;
|
||||
}
|
||||
|
||||
// We iterate the event path up and check for a possible component.
|
||||
// Our maximum index to search, is the list item root.
|
||||
var maxPath = event.path.indexOf($element.children()[0]);
|
||||
|
||||
for (var i = 0; i < maxPath; i++) {
|
||||
if (forbiddenControls.indexOf(event.path[i].tagName.toLowerCase()) !== -1) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var clickChildKeypressListener = function(e) {
|
||||
if (e.target.nodeName != 'INPUT' && e.target.nodeName != 'TEXTAREA' && !e.target.isContentEditable) {
|
||||
var keyCode = e.which || e.keyCode;
|
||||
if (keyCode == $mdConstant.KEY_CODE.SPACE) {
|
||||
if (clickChild) {
|
||||
clickChild.click();
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (!hasClick && !proxies.length) {
|
||||
clickChild && clickChild.addEventListener('keypress', clickChildKeypressListener);
|
||||
}
|
||||
|
||||
$element.off('click');
|
||||
$element.off('keypress');
|
||||
|
||||
if (proxies.length == 1 && clickChild) {
|
||||
$element.children().eq(0).on('click', function(e) {
|
||||
// When the event is coming from an control and it should not trigger the proxied element
|
||||
// then we are skipping.
|
||||
if (isEventFromControl(e)) return;
|
||||
|
||||
var parentButton = $mdUtil.getClosest(e.target, 'BUTTON');
|
||||
if (!parentButton && clickChild.contains(e.target)) {
|
||||
angular.forEach(proxies, function(proxy) {
|
||||
if (e.target !== proxy && !proxy.contains(e.target)) {
|
||||
if (proxy.nodeName === 'MD-MENU') {
|
||||
proxy = proxy.children[0];
|
||||
}
|
||||
angular.element(proxy).triggerHandler('click');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$scope.$on('$destroy', function () {
|
||||
clickChild && clickChild.removeEventListener('keypress', clickChildKeypressListener);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/*
|
||||
* @private
|
||||
* @ngdoc controller
|
||||
* @name MdListController
|
||||
* @module material.components.list
|
||||
*
|
||||
*/
|
||||
function MdListController($scope, $element, $mdListInkRipple) {
|
||||
var ctrl = this;
|
||||
ctrl.attachRipple = attachRipple;
|
||||
|
||||
function attachRipple (scope, element) {
|
||||
var options = {};
|
||||
$mdListInkRipple.attach(scope, element, options);
|
||||
}
|
||||
}
|
||||
|
||||
})(window, window.angular);
|
||||
6
www/lib/angular-material/modules/js/list/list.min.css
vendored
Normal file
6
www/lib/angular-material/modules/js/list/list.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
7
www/lib/angular-material/modules/js/list/list.min.js
vendored
Normal file
7
www/lib/angular-material/modules/js/list/list.min.js
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* Angular Material Design
|
||||
* https://github.com/angular/material
|
||||
* @license MIT
|
||||
* v1.1.0-master-2b98560
|
||||
*/
|
||||
!function(e,t,n){"use strict";function r(e){return{restrict:"E",compile:function(t){return t[0].setAttribute("role","list"),e}}}function i(e,n,r,i){var a=["md-checkbox","md-switch","md-menu"];return{restrict:"E",controller:"MdListController",compile:function(o,s){function d(){for(var e,t,n=["md-switch","md-checkbox"],r=0;t=n[r];++r)if((e=o.find(t)[0])&&!e.hasAttribute("aria-label")){var i=o.find("p")[0];if(!i)return;e.setAttribute("aria-label","Toggle "+i.textContent)}}function c(){var e=t.element(C),n=e.parent().hasClass("md-secondary-container")||C.parentNode.firstElementChild!==C,r="left";n&&(r="right"),e.attr("md-position-mode")||e.attr("md-position-mode",r+" target");var i=e.children().eq(0);g(i[0])||i.attr("ng-click","$mdOpenMenu($event)"),i.attr("aria-label")||i.attr("aria-label","Open List Menu")}function l(e){if("div"==e)A=t.element('<div class="md-no-style md-list-item-inner">'),A.append(o.contents()),o.addClass("md-proxy-focus");else{A=t.element('<div class="md-button md-no-style"> <div class="md-list-item-inner"></div></div>');var n=t.element('<md-button class="md-no-style"></md-button>');n[0].setAttribute("aria-label",o[0].textContent),f(o[0],n[0]),o.hasClass("md-no-focus")&&n.addClass("md-no-focus"),A.prepend(n),A.children().eq(1).append(o.contents()),o.addClass("_md-button-wrap")}o[0].setAttribute("tabindex","-1"),o.append(A)}function u(){var e=t.element('<div class="md-secondary-container">');t.forEach(y,function(t){m(t,e)}),A.append(e)}function m(n,r){if(n&&!h(n)&&n.hasAttribute("ng-click")){e.expect(n,"aria-label");var i=t.element('<md-button class="md-secondary md-icon-button">');f(n,i[0],["ng-if","ng-hide","ng-show"]),n.setAttribute("tabindex","-1"),i.append(n),n=i[0]}n&&(!g(n)||!s.ngClick&&p(n))&&t.element(n).removeClass("md-secondary"),o.addClass("md-with-secondary"),r.append(n)}function f(e,n,i){var a=r.prefixer(["ng-if","ng-click","ng-dblclick","aria-label","ng-disabled","ui-sref","href","ng-href","target","ng-attr-ui-sref","ui-sref-opts"]);i&&(a=a.concat(r.prefixer(i))),t.forEach(a,function(t){e.hasAttribute(t)&&(n.setAttribute(t,e.getAttribute(t)),e.removeAttribute(t))})}function p(e){return a.indexOf(e.nodeName.toLowerCase())!=-1}function h(e){var t=e.nodeName.toUpperCase();return"MD-BUTTON"==t||"BUTTON"==t}function g(e){for(var t=e.attributes,n=0;n<t.length;n++)if("ngClick"===s.$normalize(t[n].name))return!0;return!1}function v(e,o,s,d){function c(){f&&f.children&&!v&&t.forEach(a,function(e){t.forEach(f.querySelectorAll(e+":not(.md-secondary)"),function(e){m.push(e)})})}function l(){(1==m.length||v)&&(o.addClass("md-clickable"),v||d.attachRipple(e,t.element(o[0].querySelector(".md-no-style"))))}function u(e){var t=["md-slider"];if(!e.path)return t.indexOf(e.target.tagName.toLowerCase())!==-1;for(var n=e.path.indexOf(o.children()[0]),r=0;r<n;r++)if(t.indexOf(e.path[r].tagName.toLowerCase())!==-1)return!0}o.addClass("_md");var m=[],f=o[0].firstElementChild,p=o.hasClass("_md-button-wrap"),h=p?f.firstElementChild:f,v=h&&g(h);c(),l(),o.hasClass("md-proxy-focus")&&m.length&&t.forEach(m,function(n){n=t.element(n),e.mouseActive=!1,n.on("mousedown",function(){e.mouseActive=!0,i(function(){e.mouseActive=!1},100)}).on("focus",function(){e.mouseActive===!1&&o.addClass("md-focused"),n.on("blur",function t(){o.removeClass("md-focused"),n.off("blur",t)})})});var b=function(e){if("INPUT"!=e.target.nodeName&&"TEXTAREA"!=e.target.nodeName&&!e.target.isContentEditable){var t=e.which||e.keyCode;t==n.KEY_CODE.SPACE&&h&&(h.click(),e.preventDefault(),e.stopPropagation())}};v||m.length||h&&h.addEventListener("keypress",b),o.off("click"),o.off("keypress"),1==m.length&&h&&o.children().eq(0).on("click",function(e){if(!u(e)){var n=r.getClosest(e.target,"BUTTON");!n&&h.contains(e.target)&&t.forEach(m,function(n){e.target===n||n.contains(e.target)||("MD-MENU"===n.nodeName&&(n=n.children[0]),t.element(n).triggerHandler("click"))})}}),e.$on("$destroy",function(){h&&h.removeEventListener("keypress",b)})}var b,C,y=o[0].querySelectorAll(".md-secondary"),A=o;if(o[0].setAttribute("role","listitem"),s.ngClick||s.ngDblclick||s.ngHref||s.href||s.uiSref||s.ngAttrUiSref)l("button");else{for(var k,E=0;k=a[E];++E)if(C=o[0].querySelector(k)){b=!0;break}b?l("div"):o[0].querySelector("md-button:not(.md-secondary):not(.md-exclude)")||o.addClass("md-no-proxy")}return u(),d(),b&&"MD-MENU"===C.nodeName&&c(),v}}}function a(e,t,n){function r(e,t){var r={};n.attach(e,t,r)}var i=this;i.attachRipple=r}a.$inject=["$scope","$element","$mdListInkRipple"],r.$inject=["$mdTheming"],i.$inject=["$mdAria","$mdConstant","$mdUtil","$timeout"],t.module("material.components.list",["material.core"]).controller("MdListController",a).directive("mdList",r).directive("mdListItem",i)}(window,window.angular);
|
||||
Reference in New Issue
Block a user