[mobile] removed framework7 ver 1.5 sources

This commit is contained in:
Maxim Kadushkin 2021-05-11 13:32:48 +03:00
parent c4955d60fb
commit 4ccd255fe5
161 changed files with 0 additions and 100416 deletions

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -1,574 +0,0 @@
/**
* Framework7 1.5.0
* Full featured mobile HTML framework for building iOS & Android apps
*
* iOS Theme
*
* http://framework7.io/
*
* Copyright 2016, Vladimir Kharlampidi
* The iDangero.us
* http://www.idangero.us/
*
* Licensed under MIT
*
* Released on: November 8, 2016
*/
/*=============
Framework 7 RTL Additions
=============*/
html {
direction: rtl;
}
/* === Lists === */
.list-block ul ul {
padding-left: 0;
padding-right: 45px;
}
.list-block .item-content {
padding-left: 0;
padding-right: 15px;
}
.list-block .item-inner {
padding-right: 0;
padding-left: 15px;
}
.list-block .item-after {
margin-left: 0;
margin-right: 5px;
}
.list-block .item-media i + i,
.list-block .item-media i + img {
margin-left: 0;
margin-right: 5px;
}
.list-block .item-media + .item-inner {
margin-left: 0;
margin-right: 15px;
}
.list-block .item-link .item-inner {
padding-right: 0;
padding-left: 35px;
background-position: 15px center;
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%2060%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'm60%2061.5-38.25%2038.25-9.75-9.75%2029.25-28.5-29.25-28.5%209.75-9.75z'%20fill%3D'%23c7c7cc'%20transform%3D'translate(60%2C120)%20rotate(180)'%2F%3E%3C%2Fsvg%3E");
}
.list-block.media-list .item-link .item-inner,
.list-block li.media-item .item-link .item-inner {
padding-right: 0;
padding-left: 15px;
}
.list-block.media-list .item-link .item-title-row,
.list-block li.media-item .item-link .item-title-row {
padding-right: 0;
padding-left: 20px;
background-position: center left;
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%2060%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'm60%2061.5-38.25%2038.25-9.75-9.75%2029.25-28.5-29.25-28.5%209.75-9.75z'%20fill%3D'%23c7c7cc'%20transform%3D'translate(60%2C120)%20rotate(180)'%2F%3E%3C%2Fsvg%3E");
}
.list-block .sortable-handler {
right: auto;
left: 0;
}
.list-block.sortable-opened .item-inner,
.list-block.sortable-opened .item-link .item-inner {
padding-right: 0;
padding-left: 35px;
}
.list-block.sortable-opened .item-link .item-inner,
.list-block.sortable-opened .item-link .item-title-row {
background-image: none;
}
.list-block .swipeout-actions-left,
.list-block .swipeout-actions-right {
direction: ltr;
}
/* === Toolbars === */
.navbar a.link i + span,
.toolbar a.link i + span,
.navbar a.link i + i,
.toolbar a.link i + i,
.navbar a.link span + i,
.toolbar a.link span + i,
.navbar a.link span + span,
.toolbar a.link span + span {
margin-left: 0;
margin-right: 7px;
}
.navbar .left a + a,
.navbar .right a + a {
margin-left: 0;
margin-right: 15px;
}
.navbar .left {
margin-right: 0px;
margin-left: 10px;
}
.navbar .right {
margin-left: 0px;
margin-right: 10px;
}
.navbar .right:first-child {
right: auto;
left: 8px;
}
/* === Forms === */
.list-block input[type="text"],
.list-block input[type="password"],
.list-block input[type="email"],
.list-block input[type="tel"],
.list-block input[type="url"],
.list-block input[type="date"],
.list-block input[type="datetime-local"],
.list-block input[type="number"],
.list-block select,
.list-block textarea {
padding-left: 0;
padding-right: 5px;
}
.buttons-row .button:first-child {
border-radius: 0 5px 5px 0;
border-left: none;
}
.buttons-row .button:last-child {
border-radius: 5px 0 0 5px;
border-left-width: 1px;
border-left-style: solid;
}
.buttons-row .button.button-round:first-child {
border-radius: 0 27px 27px 0;
}
.buttons-row .button.button-round:last-child {
border-radius: 27px 0 0 27px;
}
.label-switch input[type="checkbox"] + .checkbox:before {
left: auto;
right: 2px;
}
.label-switch input[type="checkbox"] + .checkbox:after {
right: 2px;
left: auto;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.label-switch input[type="checkbox"]:checked + .checkbox:after {
left: auto;
-webkit-transform: translateX(-20px);
transform: translateX(-20px);
}
.range-slider {
padding-left: 0;
padding-right: 0;
margin-left: 0;
padding-right: 3px;
padding-left: 3px;
margin-right: -1px;
}
.range-slider input[type="range"]:after {
left: auto;
right: -5px;
}
.range-slider input[type="range"]::-webkit-slider-thumb:after {
left: auto;
right: 0;
}
.range-slider input[type="range"]::-webkit-slider-thumb:before {
right: auto;
left: 100%;
}
label.label-radio input[type="checkbox"] ~ .item-inner,
label.label-radio input[type="radio"] ~ .item-inner {
padding-left: 35px;
padding-right: 0;
}
label.label-radio input[type="checkbox"]:checked ~ .item-inner,
label.label-radio input[type="radio"]:checked ~ .item-inner {
background-position: 15px center;
}
/* === Search Bar === */
.searchbar input[type="search"] {
background-position: right center;
background-position: -webkit-calc(100% - 8px) center;
background-position: calc(100% - 8px) center;
}
.searchbar .searchbar-clear {
right: auto;
left: 0;
}
.searchbar.searchbar-active .searchbar-cancel {
margin-left: 0;
margin-right: 8px;
}
/* === Message Bar === */
.messagebar .link + textarea {
margin-left: 0;
margin-right: 8px;
}
.messagebar textarea + .link {
margin-left: 0;
margin-right: 8px;
}
/* === Modals === */
.modal-button:first-child {
border-radius: 0 0 7px 0;
border-right: none;
}
.modal-button:last-child {
border-right: 1px solid #b5b5b5;
border-radius: 0 0 0 7px;
}
.modal-button:first-child:last-child {
border-radius: 0 0 7px 7px;
}
/* === Content Block === */
.content-block-inner {
margin-left: 0;
margin-right: -15px;
}
/* === Pages === */
.page-from-right-to-center:before,
.page-from-center-to-right:before,
.page-fake-shadow {
right: auto;
left: 100%;
background: -webkit-linear-gradient(right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);
background: linear-gradient(to left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);
}
.page-on-left {
-webkit-transform: translate3d(20%, 0, 0);
transform: translate3d(20%, 0, 0);
}
.page-on-right {
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
}
@-webkit-keyframes pageFromRightToCenter {
from {
-webkit-transform: translate3d(-100%, 0, 0);
}
to {
-webkit-transform: translate3d(0, 0, 0);
}
}
@-webkit-keyframes pageFromCenterToRight {
from {
-webkit-transform: translate3d(0, 0, 0);
}
to {
-webkit-transform: translate3d(-100%, 0, 0);
}
}
@keyframes pageFromRightToCenter {
from {
transform: translate3d(-100%, 0, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
@keyframes pageFromCenterToRight {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(-100%, 0, 0);
}
}
@-webkit-keyframes pageFromCenterToLeft {
from {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
}
to {
opacity: 0.9;
-webkit-transform: translate3d(20%, 0, 0);
}
}
@-webkit-keyframes pageFromLeftToCenter {
from {
opacity: 0.9;
-webkit-transform: translate3d(20%, 0, 0);
}
to {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
}
}
@keyframes pageFromCenterToLeft {
from {
opacity: 1;
transform: translate3d(0, 0, 0);
}
to {
opacity: 0.9;
transform: translate3d(20%, 0, 0);
}
}
@keyframes pageFromLeftToCenter {
from {
opacity: 0.9;
transform: translate3d(20%, 0, 0);
}
to {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
/* === Messages === */
.message-received {
-ms-flex-item-align: end;
-webkit-align-self: flex-end;
align-self: flex-end;
-webkit-box-align: end;
-ms-flex-align: end;
-webkit-align-items: flex-end;
align-items: flex-end;
}
.message-sent {
-ms-flex-item-align: start;
-webkit-align-self: flex-start;
align-self: flex-start;
-webkit-box-align: start;
-ms-flex-align: start;
-webkit-align-items: flex-start;
align-items: flex-start;
}
/* === Chips === */
.chip-media + .chip-label {
margin-left: 0px;
margin-right: 4px;
}
.chip-delete {
margin-right: 0;
margin-left: -6px;
}
/* === Back Icons === */
i.icon.icon-back {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M2%2C20l-2-2l8-8L0%2C2l2-2l10%2C10L2%2C20z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");
}
i.icon.icon-forward {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M10%2C0l2%2C2l-8%2C8l8%2C8l-2%2C2L0%2C10L10%2C0z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");
}
i.icon.icon-next {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23007aff'%20d%3D'M14%2C1.6v11.8L2.2%2C7.6L14%2C1.6%20M15%2C0L0%2C7.6L15%2C15V0L15%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon.icon-prev {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23007aff'%20d%3D'M1%2C1.6l11.8%2C5.8L1%2C13.4V1.6%20M0%2C0v15l15-7.6L0%2C0L0%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-back.color-gray,
i.icon-back.theme-gray,
.theme-gray i.icon-back {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M2%2C20l-2-2l8-8L0%2C2l2-2l10%2C10L2%2C20z'%20fill%3D'%238e8e93'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-gray,
i.icon-forward.theme-gray,
.theme-gray i.icon-forward {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M10%2C0l2%2C2l-8%2C8l8%2C8l-2%2C2L0%2C10L10%2C0z'%20fill%3D'%238e8e93'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-gray,
i.icon-next.theme-gray,
.theme-gray i.icon-next {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%238e8e93'%20d%3D'M14%2C1.6v11.8L2.2%2C7.6L14%2C1.6%20M15%2C0L0%2C7.6L15%2C15V0L15%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-gray,
i.icon-prev.theme-gray,
.theme-gray i.icon-prev {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%238e8e93'%20d%3D'M1%2C1.6l11.8%2C5.8L1%2C13.4V1.6%20M0%2C0v15l15-7.6L0%2C0L0%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-back.color-white,
i.icon-back.theme-white,
.theme-white i.icon-back {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M2%2C20l-2-2l8-8L0%2C2l2-2l10%2C10L2%2C20z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-white,
i.icon-forward.theme-white,
.theme-white i.icon-forward {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M10%2C0l2%2C2l-8%2C8l8%2C8l-2%2C2L0%2C10L10%2C0z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-white,
i.icon-next.theme-white,
.theme-white i.icon-next {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23ffffff'%20d%3D'M14%2C1.6v11.8L2.2%2C7.6L14%2C1.6%20M15%2C0L0%2C7.6L15%2C15V0L15%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-white,
i.icon-prev.theme-white,
.theme-white i.icon-prev {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23ffffff'%20d%3D'M1%2C1.6l11.8%2C5.8L1%2C13.4V1.6%20M0%2C0v15l15-7.6L0%2C0L0%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-back.color-black,
i.icon-back.theme-black,
.theme-black i.icon-back {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M2%2C20l-2-2l8-8L0%2C2l2-2l10%2C10L2%2C20z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-black,
i.icon-forward.theme-black,
.theme-black i.icon-forward {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M10%2C0l2%2C2l-8%2C8l8%2C8l-2%2C2L0%2C10L10%2C0z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-black,
i.icon-next.theme-black,
.theme-black i.icon-next {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23000000'%20d%3D'M14%2C1.6v11.8L2.2%2C7.6L14%2C1.6%20M15%2C0L0%2C7.6L15%2C15V0L15%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-black,
i.icon-prev.theme-black,
.theme-black i.icon-prev {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23000000'%20d%3D'M1%2C1.6l11.8%2C5.8L1%2C13.4V1.6%20M0%2C0v15l15-7.6L0%2C0L0%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-back.color-lightblue,
i.icon-back.theme-lightblue,
.theme-lightblue i.icon-back {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M2%2C20l-2-2l8-8L0%2C2l2-2l10%2C10L2%2C20z'%20fill%3D'%235ac8fa'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-lightblue,
i.icon-forward.theme-lightblue,
.theme-lightblue i.icon-forward {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M10%2C0l2%2C2l-8%2C8l8%2C8l-2%2C2L0%2C10L10%2C0z'%20fill%3D'%235ac8fa'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-lightblue,
i.icon-next.theme-lightblue,
.theme-lightblue i.icon-next {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%235ac8fa'%20d%3D'M14%2C1.6v11.8L2.2%2C7.6L14%2C1.6%20M15%2C0L0%2C7.6L15%2C15V0L15%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-lightblue,
i.icon-prev.theme-lightblue,
.theme-lightblue i.icon-prev {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%235ac8fa'%20d%3D'M1%2C1.6l11.8%2C5.8L1%2C13.4V1.6%20M0%2C0v15l15-7.6L0%2C0L0%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-back.color-yellow,
i.icon-back.theme-yellow,
.theme-yellow i.icon-back {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M2%2C20l-2-2l8-8L0%2C2l2-2l10%2C10L2%2C20z'%20fill%3D'%23ffcc00'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-yellow,
i.icon-forward.theme-yellow,
.theme-yellow i.icon-forward {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M10%2C0l2%2C2l-8%2C8l8%2C8l-2%2C2L0%2C10L10%2C0z'%20fill%3D'%23ffcc00'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-yellow,
i.icon-next.theme-yellow,
.theme-yellow i.icon-next {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23ffcc00'%20d%3D'M14%2C1.6v11.8L2.2%2C7.6L14%2C1.6%20M15%2C0L0%2C7.6L15%2C15V0L15%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-yellow,
i.icon-prev.theme-yellow,
.theme-yellow i.icon-prev {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23ffcc00'%20d%3D'M1%2C1.6l11.8%2C5.8L1%2C13.4V1.6%20M0%2C0v15l15-7.6L0%2C0L0%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-back.color-orange,
i.icon-back.theme-orange,
.theme-orange i.icon-back {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M2%2C20l-2-2l8-8L0%2C2l2-2l10%2C10L2%2C20z'%20fill%3D'%23ff9500'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-orange,
i.icon-forward.theme-orange,
.theme-orange i.icon-forward {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M10%2C0l2%2C2l-8%2C8l8%2C8l-2%2C2L0%2C10L10%2C0z'%20fill%3D'%23ff9500'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-orange,
i.icon-next.theme-orange,
.theme-orange i.icon-next {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23ff9500'%20d%3D'M14%2C1.6v11.8L2.2%2C7.6L14%2C1.6%20M15%2C0L0%2C7.6L15%2C15V0L15%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-orange,
i.icon-prev.theme-orange,
.theme-orange i.icon-prev {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23ff9500'%20d%3D'M1%2C1.6l11.8%2C5.8L1%2C13.4V1.6%20M0%2C0v15l15-7.6L0%2C0L0%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-back.color-pink,
i.icon-back.theme-pink,
.theme-pink i.icon-back {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M2%2C20l-2-2l8-8L0%2C2l2-2l10%2C10L2%2C20z'%20fill%3D'%23ff2d55'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-pink,
i.icon-forward.theme-pink,
.theme-pink i.icon-forward {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M10%2C0l2%2C2l-8%2C8l8%2C8l-2%2C2L0%2C10L10%2C0z'%20fill%3D'%23ff2d55'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-pink,
i.icon-next.theme-pink,
.theme-pink i.icon-next {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23ff2d55'%20d%3D'M14%2C1.6v11.8L2.2%2C7.6L14%2C1.6%20M15%2C0L0%2C7.6L15%2C15V0L15%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-pink,
i.icon-prev.theme-pink,
.theme-pink i.icon-prev {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23ff2d55'%20d%3D'M1%2C1.6l11.8%2C5.8L1%2C13.4V1.6%20M0%2C0v15l15-7.6L0%2C0L0%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-back.color-blue,
i.icon-back.theme-blue,
.theme-blue i.icon-back {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M2%2C20l-2-2l8-8L0%2C2l2-2l10%2C10L2%2C20z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-blue,
i.icon-forward.theme-blue,
.theme-blue i.icon-forward {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M10%2C0l2%2C2l-8%2C8l8%2C8l-2%2C2L0%2C10L10%2C0z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-blue,
i.icon-next.theme-blue,
.theme-blue i.icon-next {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23007aff'%20d%3D'M14%2C1.6v11.8L2.2%2C7.6L14%2C1.6%20M15%2C0L0%2C7.6L15%2C15V0L15%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-blue,
i.icon-prev.theme-blue,
.theme-blue i.icon-prev {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23007aff'%20d%3D'M1%2C1.6l11.8%2C5.8L1%2C13.4V1.6%20M0%2C0v15l15-7.6L0%2C0L0%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-back.color-green,
i.icon-back.theme-green,
.theme-green i.icon-back {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M2%2C20l-2-2l8-8L0%2C2l2-2l10%2C10L2%2C20z'%20fill%3D'%234cd964'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-green,
i.icon-forward.theme-green,
.theme-green i.icon-forward {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M10%2C0l2%2C2l-8%2C8l8%2C8l-2%2C2L0%2C10L10%2C0z'%20fill%3D'%234cd964'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-green,
i.icon-next.theme-green,
.theme-green i.icon-next {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%234cd964'%20d%3D'M14%2C1.6v11.8L2.2%2C7.6L14%2C1.6%20M15%2C0L0%2C7.6L15%2C15V0L15%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-green,
i.icon-prev.theme-green,
.theme-green i.icon-prev {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%234cd964'%20d%3D'M1%2C1.6l11.8%2C5.8L1%2C13.4V1.6%20M0%2C0v15l15-7.6L0%2C0L0%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-back.color-red,
i.icon-back.theme-red,
.theme-red i.icon-back {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M2%2C20l-2-2l8-8L0%2C2l2-2l10%2C10L2%2C20z'%20fill%3D'%23ff3b30'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-red,
i.icon-forward.theme-red,
.theme-red i.icon-forward {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2012%2020'%3E%3Cpath%20d%3D'M10%2C0l2%2C2l-8%2C8l8%2C8l-2%2C2L0%2C10L10%2C0z'%20fill%3D'%23ff3b30'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-red,
i.icon-next.theme-red,
.theme-red i.icon-next {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23ff3b30'%20d%3D'M14%2C1.6v11.8L2.2%2C7.6L14%2C1.6%20M15%2C0L0%2C7.6L15%2C15V0L15%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-red,
i.icon-prev.theme-red,
.theme-red i.icon-prev {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2015%2015'%3E%3Cg%3E%3Cpath%20fill%3D'%23ff3b30'%20d%3D'M1%2C1.6l11.8%2C5.8L1%2C13.4V1.6%20M0%2C0v15l15-7.6L0%2C0L0%2C0z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
/* === Accordion === */
.list-block .accordion-toggle .item-inner {
padding-right: 0;
padding-left: 35px;
background-position: 15px center;
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%2060%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'm60%2061.5-38.25%2038.25-9.75-9.75%2029.25-28.5-29.25-28.5%209.75-9.75z'%20fill%3D'%23c7c7cc'%20transform%3D'translate(60%2C120)%20rotate(180)'%2F%3E%3C%2Fsvg%3E");
}
.list-block:not(.media-list) .accordion-item-expanded:not(.media-item) .accordion-item-toggle .item-inner,
.list-block:not(.media-list) .accordion-item-expanded:not(.media-item) > .item-link .item-inner,
.list-block.media-list .accordion-item-expanded .accordion-item-toggle .item-title-row,
.list-block.media-list .accordion-item-expanded > .item-link .item-title-row,
.list-block .accordion-item-expanded.media-item .accordion-item-toggle .item-title-row,
.list-block .accordion-item-expanded.media-item > .item-link .item-title-row {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%2060%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'm60%2061.5-38.25%2038.25-9.75-9.75%2029.25-28.5-29.25-28.5%209.75-9.75z'%20transform%3D'translate(70%2C%2030)%20rotate(90)'%20fill%3D'%23c7c7cc'%2F%3E%3C%2Fsvg%3E");
background-size: 20px 20px;
}
.list-block .accordion-item ul {
padding-right: 0;
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -1,571 +0,0 @@
/**
* Framework7 1.5.0
* Full featured mobile HTML framework for building iOS & Android apps
*
* Google Material Theme
*
* http://framework7.io/
*
* Copyright 2016, Vladimir Kharlampidi
* The iDangero.us
* http://www.idangero.us/
*
* Licensed under MIT
*
* Released on: November 8, 2016
*/
/*=============
Framework 7 RTL Additions
=============*/
html {
direction: rtl;
}
/* === Lists === */
.list-block ul ul {
padding-left: 0;
padding-right: 56px;
}
.list-block .item-content {
padding-left: 0;
padding-right: 16px;
}
.list-block .item-inner {
padding-right: 0;
padding-left: 16px;
}
.list-block .item-after {
margin-left: 0;
margin-right: 8px;
}
.list-block .item-media i + i,
.list-block .item-media i + img {
margin-left: 0;
margin-right: 8px;
}
.list-block .item-media + .item-inner {
margin-left: 0;
margin-right: 16px;
}
.list-block .item-link .item-inner {
padding-right: 0;
padding-left: 42px;
background-position: 16px center;
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%2060%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'm60%2061.5-38.25%2038.25-9.75-9.75%2029.25-28.5-29.25-28.5%209.75-9.75z'%20fill%3D'%23c7c7cc'%20transform%3D'translate(60%2C120)%20rotate(180)'%2F%3E%3C%2Fsvg%3E");
}
.list-block.media-list .item-link .item-inner,
.list-block li.media-item .item-link .item-inner {
padding-right: 0;
padding-left: 16px;
}
.list-block.media-list .item-link .item-title-row,
.list-block li.media-item .item-link .item-title-row {
padding-right: 0;
padding-left: 26px;
background-position: center left;
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%2060%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'm60%2061.5-38.25%2038.25-9.75-9.75%2029.25-28.5-29.25-28.5%209.75-9.75z'%20fill%3D'%23c7c7cc'%20transform%3D'translate(60%2C120)%20rotate(180)'%2F%3E%3C%2Fsvg%3E");
}
.list-block .sortable-handler {
right: auto;
left: 0;
}
.list-block.sortable-opened .item-inner,
.list-block.sortable-opened .item-link .item-inner {
padding-right: 0;
padding-left: 50px;
}
.list-block.sortable-opened .item-link .item-inner,
.list-block.sortable-opened .item-link .item-title-row {
background-image: none;
}
.list-block .swipeout-actions-left,
.list-block .swipeout-actions-right {
direction: ltr;
}
/* === Toolbars === */
.navbar a.link i + span,
.toolbar a.link i + span,
.navbar a.link i + i,
.toolbar a.link i + i,
.navbar a.link span + i,
.toolbar a.link span + i,
.navbar a.link span + span,
.toolbar a.link span + span {
margin-left: 0;
margin-right: 8px;
}
.navbar .right {
margin-left: 0;
margin-right: auto;
}
.tabbar .tab-link-highlight {
left: auto;
right: 0;
}
/* === Forms === */
.list-block input[type="text"],
.list-block input[type="password"],
.list-block input[type="search"],
.list-block input[type="email"],
.list-block input[type="tel"],
.list-block input[type="url"],
.list-block input[type="date"],
.list-block input[type="datetime-local"],
.list-block input[type="time"],
.list-block input[type="number"],
.list-block select,
.list-block textarea {
text-align: right;
}
.buttons-row .button {
margin-left: 0;
margin-right: 8px;
}
.buttons-row .button:first-child {
margin-right: 0;
}
.label-switch .checkbox:after {
left: auto;
right: 0;
}
.label-switch input[type="checkbox"]:checked + .checkbox:after {
-webkit-transform: translateX(-16px);
transform: translateX(-16px);
}
.range-slider input[type="range"]::-webkit-slider-thumb:before {
right: auto;
left: 100%;
}
label.label-checkbox .item-after i.icon-form-checkbox,
label.label-radio .item-after i.icon-form-checkbox,
label.label-checkbox .item-after i.icon-form-radio,
label.label-radio .item-after i.icon-form-radio {
margin-left: 16px;
margin-right: 8px;
}
/* === Search Bar === */
.searchbar input[type="search"] {
background-position: right center;
padding: 0 24px 0 36px;
}
.searchbar .searchbar-clear {
right: auto;
left: -16px;
}
/* === Modals === */
.modal-button + .modal-button {
margin-left: 0;
margin-right: 4px;
}
/* === Content Block === */
.content-block-inner {
margin-left: 0;
margin-right: -16px;
}
/* === Messages === */
.message-received {
-ms-flex-item-align: end;
-webkit-align-self: flex-end;
align-self: flex-end;
-webkit-box-align: end;
-ms-flex-align: end;
-webkit-align-items: flex-end;
align-items: flex-end;
}
.message-sent {
-ms-flex-item-align: start;
-webkit-align-self: flex-start;
align-self: flex-start;
-webkit-box-align: start;
-ms-flex-align: start;
-webkit-align-items: flex-start;
align-items: flex-start;
}
/* === Chips === */
.chip-media {
margin-left: 0;
margin-right: -12px;
}
.chip-media + .chip-label {
margin-left: 0px;
margin-right: 8px;
}
.chip-label + .chip-delete {
margin-left: -8px;
margin-right: 4px;
}
.chip-delete {
margin-left: -8px;
}
/* === Accordion === */
.list-block .accordion-toggle .item-inner {
padding-right: 0;
padding-left: 42px;
background-position: 16px center;
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%2060%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'm60%2061.5-38.25%2038.25-9.75-9.75%2029.25-28.5-29.25-28.5%209.75-9.75z'%20fill%3D'%23c7c7cc'%20transform%3D'translate(60%2C120)%20rotate(180)'%2F%3E%3C%2Fsvg%3E");
}
.list-block:not(.media-list) .accordion-item-expanded:not(.media-item) .accordion-item-toggle .item-inner,
.list-block:not(.media-list) .accordion-item-expanded:not(.media-item) > .item-link .item-inner,
.list-block.media-list .accordion-item-expanded .accordion-item-toggle .item-title-row,
.list-block.media-list .accordion-item-expanded > .item-link .item-title-row,
.list-block .accordion-item-expanded.media-item .accordion-item-toggle .item-title-row,
.list-block .accordion-item-expanded.media-item > .item-link .item-title-row {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%2060%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'm60%2061.5-38.25%2038.25-9.75-9.75%2029.25-28.5-29.25-28.5%209.75-9.75z'%20transform%3D'translate(70%2C%2030)%20rotate(90)'%20fill%3D'%23c7c7cc'%2F%3E%3C%2Fsvg%3E");
background-size: 20px 20px;
}
.list-block .accordion-item ul {
padding-right: 0;
}
/* === Icons === */
.contacts-block li:not(.list-group-title) {
padding-left: 0;
padding-right: 56px;
}
/* === Icons === */
i.icon.icon-back {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");
}
i.icon.icon-forward {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");
}
i.icon.icon-next {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23ffffff'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon.icon-prev {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23ffffff'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-red,
i.icon-back.theme-red {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%23f44336'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-red,
i.icon-forward.theme-red {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%23f44336'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-red,
i.icon-next.theme-red {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23f44336'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-red,
i.icon-prev.theme-red {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23f44336'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-pink,
i.icon-back.theme-pink {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%23e91e63'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-pink,
i.icon-forward.theme-pink {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%23e91e63'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-pink,
i.icon-next.theme-pink {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23e91e63'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-pink,
i.icon-prev.theme-pink {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23e91e63'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-purple,
i.icon-back.theme-purple {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%239c27b0'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-purple,
i.icon-forward.theme-purple {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%239c27b0'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-purple,
i.icon-next.theme-purple {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%239c27b0'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-purple,
i.icon-prev.theme-purple {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%239c27b0'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-deeppurple,
i.icon-back.theme-deeppurple {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%23673ab7'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-deeppurple,
i.icon-forward.theme-deeppurple {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%23673ab7'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-deeppurple,
i.icon-next.theme-deeppurple {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23673ab7'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-deeppurple,
i.icon-prev.theme-deeppurple {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23673ab7'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-indigo,
i.icon-back.theme-indigo {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%233f51b5'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-indigo,
i.icon-forward.theme-indigo {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%233f51b5'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-indigo,
i.icon-next.theme-indigo {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%233f51b5'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-indigo,
i.icon-prev.theme-indigo {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%233f51b5'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-blue,
i.icon-back.theme-blue {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%232196f3'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-blue,
i.icon-forward.theme-blue {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%232196f3'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-blue,
i.icon-next.theme-blue {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%232196f3'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-blue,
i.icon-prev.theme-blue {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%232196f3'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-lightblue,
i.icon-back.theme-lightblue {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%2303a9f4'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-lightblue,
i.icon-forward.theme-lightblue {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%2303a9f4'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-lightblue,
i.icon-next.theme-lightblue {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%2303a9f4'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-lightblue,
i.icon-prev.theme-lightblue {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%2303a9f4'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-cyan,
i.icon-back.theme-cyan {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%2300bcd4'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-cyan,
i.icon-forward.theme-cyan {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%2300bcd4'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-cyan,
i.icon-next.theme-cyan {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%2300bcd4'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-cyan,
i.icon-prev.theme-cyan {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%2300bcd4'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-teal,
i.icon-back.theme-teal {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%23009688'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-teal,
i.icon-forward.theme-teal {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%23009688'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-teal,
i.icon-next.theme-teal {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23009688'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-teal,
i.icon-prev.theme-teal {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23009688'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-green,
i.icon-back.theme-green {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%234caf50'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-green,
i.icon-forward.theme-green {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%234caf50'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-green,
i.icon-next.theme-green {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%234caf50'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-green,
i.icon-prev.theme-green {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%234caf50'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-lightgreen,
i.icon-back.theme-lightgreen {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%238bc34a'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-lightgreen,
i.icon-forward.theme-lightgreen {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%238bc34a'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-lightgreen,
i.icon-next.theme-lightgreen {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%238bc34a'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-lightgreen,
i.icon-prev.theme-lightgreen {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%238bc34a'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-lime,
i.icon-back.theme-lime {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%23cddc39'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-lime,
i.icon-forward.theme-lime {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%23cddc39'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-lime,
i.icon-next.theme-lime {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23cddc39'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-lime,
i.icon-prev.theme-lime {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23cddc39'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-yellow,
i.icon-back.theme-yellow {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%23ffeb3b'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-yellow,
i.icon-forward.theme-yellow {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%23ffeb3b'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-yellow,
i.icon-next.theme-yellow {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23ffeb3b'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-yellow,
i.icon-prev.theme-yellow {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23ffeb3b'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-amber,
i.icon-back.theme-amber {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%23ffc107'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-amber,
i.icon-forward.theme-amber {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%23ffc107'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-amber,
i.icon-next.theme-amber {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23ffc107'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-amber,
i.icon-prev.theme-amber {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23ffc107'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-orange,
i.icon-back.theme-orange {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%23ff9800'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-orange,
i.icon-forward.theme-orange {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%23ff9800'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-orange,
i.icon-next.theme-orange {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23ff9800'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-orange,
i.icon-prev.theme-orange {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23ff9800'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-deeporange,
i.icon-back.theme-deeporange {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%23ff5722'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-deeporange,
i.icon-forward.theme-deeporange {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%23ff5722'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-deeporange,
i.icon-next.theme-deeporange {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23ff5722'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-deeporange,
i.icon-prev.theme-deeporange {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23ff5722'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-brown,
i.icon-back.theme-brown {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%23795548'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-brown,
i.icon-forward.theme-brown {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%23795548'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-brown,
i.icon-next.theme-brown {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23795548'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-brown,
i.icon-prev.theme-brown {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23795548'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-gray,
i.icon-back.theme-gray {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%239e9e9e'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-gray,
i.icon-forward.theme-gray {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%239e9e9e'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-gray,
i.icon-next.theme-gray {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%239e9e9e'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-gray,
i.icon-prev.theme-gray {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%239e9e9e'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-bluegray,
i.icon-back.theme-bluegray {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%23607d8b'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-bluegray,
i.icon-forward.theme-bluegray {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%23607d8b'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-bluegray,
i.icon-next.theme-bluegray {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23607d8b'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-bluegray,
i.icon-prev.theme-bluegray {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23607d8b'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-white,
i.icon-back.theme-white {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-white,
i.icon-forward.theme-white {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-white,
i.icon-next.theme-white {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23ffffff'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-white,
i.icon-prev.theme-white {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23ffffff'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-back.color-black,
i.icon-back.theme-black {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M12%204l-1.41%201.41L16.17%2011H4v2h12.17l-5.58%205.59L12%2020l8-8z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E");
}
i.icon-forward.color-black,
i.icon-forward.theme-black {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M20%2011H7.83l5.59-5.59L12%204l-8%208%208%208%201.41-1.41L7.83%2013H20v-2z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E");
}
i.icon-next.color-black,
i.icon-next.theme-black {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23000000'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M15.41%207.41L14%206l-6%206%206%206%201.41-1.41L10.83%2012z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}
i.icon-prev.color-black,
i.icon-prev.theme-black {
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20fill%3D'%23000000'%20width%3D'24'%20height%3D'24'%20viewBox%3D'0%200%2024%2024'%3E%3Cpath%20d%3D'M10%206L8.59%207.41%2013.17%2012l-4.58%204.59L10%2018l6-6z'%2F%3E%3Cpath%20d%3D'M0%200h24v24H0z'%20fill%3D'none'%2F%3E%3C%2Fsvg%3E");
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,60 +0,0 @@
/*===============================================================================
************ Accordion ************
===============================================================================*/
app.accordionToggle = function (item) {
item = $(item);
if (item.length === 0) return;
if (item.hasClass('accordion-item-expanded')) app.accordionClose(item);
else app.accordionOpen(item);
};
app.accordionOpen = function (item) {
item = $(item);
var list = item.parents('.accordion-list').eq(0);
var content = item.children('.accordion-item-content');
if (content.length === 0) content = item.find('.accordion-item-content');
var expandedItem = list.length > 0 && item.parent().children('.accordion-item-expanded');
if (expandedItem.length > 0) {
app.accordionClose(expandedItem);
}
content.css('height', content[0].scrollHeight + 'px').transitionEnd(function () {
if (item.hasClass('accordion-item-expanded')) {
content.transition(0);
content.css('height', 'auto');
var clientLeft = content[0].clientLeft;
content.transition('');
item.trigger('opened');
}
else {
content.css('height', '');
item.trigger('closed');
}
});
item.trigger('open');
item.addClass('accordion-item-expanded');
};
app.accordionClose = function (item) {
item = $(item);
var content = item.children('.accordion-item-content');
if (content.length === 0) content = item.find('.accordion-item-content');
item.removeClass('accordion-item-expanded');
content.transition(0);
content.css('height', content[0].scrollHeight + 'px');
// Relayout
var clientLeft = content[0].clientLeft;
// Close
content.transition('');
content.css('height', '').transitionEnd(function () {
if (item.hasClass('accordion-item-expanded')) {
content.transition(0);
content.css('height', 'auto');
var clientLeft = content[0].clientLeft;
content.transition('');
item.trigger('opened');
}
else {
content.css('height', '');
item.trigger('closed');
}
});
item.trigger('close');
};

View file

@ -1,182 +0,0 @@
/*========================
Animate7 Animate Engine
==========================*/
var Animate7 = function (elements, props, params) {
props = props || {};
params = params || {};
var defaults = {
duration: 300,
easing: 'swing', // or 'linear'
/* Callbacks
begin(elements)
complete(elements)
progress(elements, complete, remaining, start, tweenValue)
*/
};
for (var def in defaults) {
if (typeof params[def] === 'undefined') {
params[def] = defaults[def];
}
}
var a = this;
a.params = params;
a.props = props;
a.elements = $(elements);
if (a.elements.length === 0) {
return a;
}
a.easingProgress = function (easing, progress) {
if (easing === 'swing') {
return 0.5 - Math.cos( progress * Math.PI ) / 2;
}
if (typeof easing === 'function') {
return easing(progress);
}
return progress;
};
a.stop = function () {
if (a.frameId) {
$.cancelAnimationFrame(a.frameId);
}
a.animating = false;
a.elements.each(function (index, el) {
delete el.animate7Instance;
});
a.que = [];
};
a.done = function (complete) {
a.animating = false;
a.elements.each(function (index, el) {
delete el.animate7Instance;
});
if (complete) complete(elements);
if (a.que.length > 0) {
var que = a.que.shift();
a.animate(que[0], que[1]);
}
};
a.animating = false;
a.que = [];
a.animate = function (props, params) {
if (a.animating) {
a.que.push([props, params]);
return a;
}
a.params = params;
var _elements = [];
// Define & Cache Initials & Units
a.elements.each(function (index, el) {
var initialFullValue, initialValue, unit, finalValue, finalFullValue;
_elements[index] = {
_container: el
};
for (var prop in props) {
initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');
initialValue = parseFloat(initialFullValue);
unit = initialFullValue.replace(initialValue, '');
finalValue = props[prop];
finalFullValue = props[prop] + unit;
_elements[index][prop] = {
initialFullValue: initialFullValue,
initialValue: initialValue,
unit: unit,
finalValue: finalValue,
finalFullValue: finalFullValue,
currentValue: initialValue
};
}
});
var startTime = null,
time,
elementsDone = 0,
propsDone = 0,
done,
began = false;
a.animating = true;
function render() {
time = new Date().getTime();
var progress, easeProgress, el;
if (!began) {
began = true;
if (params.begin) params.begin(elements);
}
if (startTime === null) {
startTime = time;
}
if (params.progress) {
params.progress(
a.elements,
Math.max(Math.min((time - startTime) / params.duration, 1), 0),
((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time),
startTime
);
}
for (var i = 0; i < _elements.length; i++) {
if (done) continue;
el = _elements[i];
if (el.done) continue;
for (var prop in props) {
progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);
easeProgress = a.easingProgress(params.easing, progress);
el[prop].currentValue = el[prop].initialValue + easeProgress * (el[prop].finalValue - el[prop].initialValue);
if (el[prop].finalValue > el[prop].initialValue && el[prop].currentValue >= el[prop].finalValue || el[prop].finalValue < el[prop].initialValue && el[prop].currentValue <= el[prop].finalValue) {
el._container.style[prop] = el[prop].finalValue + el[prop].unit;
propsDone ++;
if (propsDone === Object.keys(props).length) {
el.done = true;
elementsDone++;
}
if (elementsDone === _elements.length) {
done = true;
}
}
if (done) {
a.done(params.complete);
return a;
}
el._container.style[prop] = el[prop].currentValue + el[prop].unit;
}
}
// Then call
a.frameId = $.requestAnimationFrame(render);
}
a.frameId = $.requestAnimationFrame(render);
return a;
};
var foundInstance;
for (var i = 0; i < a.elements.length; i++) {
if (a.elements[i].animate7Instance) {
foundInstance = a.elements[i].animate7Instance;
}
else a.elements[i].animate7Instance = a;
}
if (foundInstance) {
return foundInstance.animate(props, params);
}
else a.animate(props, params);
return a;
};
window.Animate7 = function (elements, props, params){
return new Animate7(elements, props, params);
};
Dom7.fn.animate = function (props, params) {
new Animate7(this, props, params);
return this;
};

View file

@ -1,626 +0,0 @@
/*===============================================================================
************ Autocomplete ************
===============================================================================*/
var Autocomplete = function (params) {
var a = this;
// Params
var defaults = {
// Standalone Options
/*
opener: undefined,
*/
popupCloseText: 'Close',
backText: 'Back',
searchbarPlaceholderText: 'Search...',
searchbarCancelText: 'Cancel',
openIn: 'page',
backOnSelect: false,
notFoundText: 'Nothing found',
/*
pageTitle: undefined,
*/
// Handle Data
/*
source: undefined,
limit: undefined,
*/
valueProperty: 'id',
textProperty: 'text',
// Dropdown Options
/*
dropdownPlaceholderText: 'Type anything...',
*/
updateInputValueOnSelect: true,
expandInput: false,
// Preloader
preloaderColor: false,
preloader: false,
// Templates
/*
itemTemplate: undefined,
navbarTemplate: undefined,
dropdownTemplate: undefined
dropdownItemTemplate: undefined,
dropdownPlaceholderTemplate: undefined
*/
// Color themes
/*
navbarTheme: undefined,
formTheme: undefined,
*/
// Callbacks
/*
onChange: function (a, value) - for not dropdown
onOpen: function (a)
onClose: function (a)
*/
};
params = params || {};
for (var def in defaults) {
if (typeof params[def] === 'undefined') {
params[def] = defaults[def];
}
}
a.params = params;
// Opener Link & View
if (a.params.opener) {
a.opener = $(a.params.opener);
}
var view = a.params.view;
if (!a.params.view && a.opener && a.opener.length) {
// Find related view
view = a.opener.parents('.' + app.params.viewClass);
if (view.length === 0) return;
view = view[0].f7View;
}
// Input
if (a.params.input) {
a.input = $(a.params.input);
if (a.input.length === 0 && a.params.openIn === 'dropdown') return;
}
// Array with selected items
a.value = a.params.value || [];
// ID & Inputs
a.id = (new Date()).getTime();
a.inputType = a.params.multiple ? 'checkbox' : 'radio';
a.inputName = a.inputType + '-' + a.id;
// Is Material
var material = app.params.material;
// Back On Select
var backOnSelect = a.params.backOnSelect;
if (a.params.openIn !== 'dropdown') {
// Item Template
a.itemTemplate = t7.compile(a.params.itemTemplate ||
'<li>' +
'<label class="label-{{inputType}} item-content">' +
'<input type="{{inputType}}" name="{{inputName}}" value="{{value}}" {{#if selected}}checked{{/if}}>' +
'{{#if material}}' +
'<div class="item-media">' +
'<i class="icon icon-form-{{inputType}}"></i>' +
'</div>' +
'<div class="item-inner">' +
'<div class="item-title">{{text}}</div>' +
'</div>' +
'{{else}}' +
'{{#if checkbox}}' +
'<div class="item-media">' +
'<i class="icon icon-form-checkbox"></i>' +
'</div>' +
'{{/if}}' +
'<div class="item-inner">' +
'<div class="item-title">{{text}}</div>' +
'</div>' +
'{{/if}}' +
'</label>' +
'</li>'
);
// Page Layout
var pageTitle = a.params.pageTitle || '';
if (!pageTitle && a.opener && a.opener.length) {
pageTitle = a.opener.find('.item-title').text();
}
var pageName = 'autocomplete-' + a.inputName;
var navbarTheme = a.params.navbarTheme,
formTheme = a.params.formTheme;
// Navbar HTML
var navbarHTML;
var noNavbar = '', noToolbar = '', navbarLayout;
a.navbarTemplate = t7.compile(a.params.navbarTemplate ||
'<div class="navbar {{#if navbarTheme}}theme-{{navbarTheme}}{{/if}}">' +
'<div class="navbar-inner">' +
'<div class="left sliding">' +
'{{#if material}}' +
'<a href="#" class="link {{#if inPopup}}close-popup{{else}}back{{/if}} icon-only"><i class="icon icon-back"></i></a>' +
'{{else}}' +
'<a href="#" class="link {{#if inPopup}}close-popup{{else}}back{{/if}}">' +
'<i class="icon icon-back"></i>' +
'{{#if inPopup}}' +
'<span>{{popupCloseText}}</span>' +
'{{else}}' +
'<span>{{backText}}</span>' +
'{{/if}}' +
'</a>' +
'{{/if}}' +
'</div>' +
'<div class="center sliding">{{pageTitle}}</div>' +
'{{#if preloader}}' +
'<div class="right">' +
'<div class="autocomplete-preloader preloader {{#if preloaderColor}}preloader-{{preloaderColor}}{{/if}}"></div>' +
'</div>' +
'{{/if}}' +
'</div>' +
'</div>'
);
navbarHTML = a.navbarTemplate({
pageTitle: pageTitle,
backText: a.params.backText,
popupCloseText: a.params.popupCloseText,
openIn: a.params.openIn,
navbarTheme: navbarTheme,
inPopup: a.params.openIn === 'popup',
inPage: a.params.openIn === 'page',
material: material,
preloader: a.params.preloader,
preloaderColor: a.params.preloaderColor,
});
// Determine navbar layout type - static/fixed/through
if (a.params.openIn === 'page') {
navbarLayout = 'static';
if (a.opener) {
if (a.opener.parents('.navbar-through').length > 0) navbarLayout = 'through';
if (a.opener.parents('.navbar-fixed').length > 0) navbarLayout = 'fixed';
noToolbar = a.opener.parents('.page').hasClass('no-toolbar') ? 'no-toolbar' : '';
noNavbar = a.opener.parents('.page').hasClass('no-navbar') ? 'no-navbar' : 'navbar-' + navbarLayout;
}
else if (view.container) {
if ($(view.container).hasClass('navbar-through') || $(view.container).find('.navbar-through').length > 0) navbarLayout = 'through';
if ($(view.container).hasClass('navbar-fixed') || $(view.container).find('.navbar-fixed').length > 0) navbarLayout = 'fixed';
noToolbar = $(view.activePage.container).hasClass('no-toolbar') ? 'no-toolbar' : '';
noNavbar = $(view.activePage.container).hasClass('no-navbar') ? 'no-navbar' : 'navbar-' + navbarLayout;
}
}
else {
navbarLayout = 'fixed';
}
var searchbarHTML =
'<form class="searchbar">' +
'<div class="searchbar-input">' +
'<input type="search" placeholder="' + a.params.searchbarPlaceholderText + '">' +
'<a href="#" class="searchbar-clear"></a>' +
'</div>' +
(material ? '' : '<a href="#" class="searchbar-cancel">' + a.params.searchbarCancelText + '</a>') +
'</form>' +
'<div class="searchbar-overlay"></div>';
var pageHTML =
(navbarLayout === 'through' ? navbarHTML : '') +
'<div class="pages">' +
'<div data-page="' + pageName + '" class="page autocomplete-page ' + noNavbar + ' ' + noToolbar + '">' +
(navbarLayout === 'fixed' ? navbarHTML : '') +
searchbarHTML +
'<div class="page-content">' +
(navbarLayout === 'static' ? navbarHTML : '') +
'<div class="list-block autocomplete-found autocomplete-list-' + a.id + ' ' + (formTheme ? 'theme-' + formTheme : '') + '">' +
'<ul></ul>' +
'</div>' +
'<div class="list-block autocomplete-not-found">' +
'<ul><li class="item-content"><div class="item-inner"><div class="item-title">' + a.params.notFoundText + '</div></div></li></ul>' +
'</div>' +
'<div class="list-block autocomplete-values">' +
'<ul></ul>' +
'</div>' +
'</div>' +
'</div>' +
'</div>';
}
else {
a.dropdownItemTemplate = t7.compile(a.params.dropdownItemTemplate ||
'<li>' +
'<label class="{{#unless placeholder}}label-radio{{/unless}} item-content" data-value="{{value}}">' +
'<div class="item-inner">' +
'<div class="item-title">{{text}}</div>' +
'</div>' +
'</label>' +
'</li>'
);
a.dropdownPlaceholderTemplate = t7.compile(a.params.dropdownPlaceholderTemplate ||
'<li class="autocomplete-dropdown-placeholder">' +
'<div class="item-content">' +
'<div class="item-inner">' +
'<div class="item-title">{{text}}</div>' +
'</div>' +
'</label>' +
'</li>'
);
a.dropdownTemplate = t7.compile(a.params.dropdownTemplate ||
'<div class="autocomplete-dropdown">' +
'<div class="autocomplete-dropdown-inner">' +
'<div class="list-block">' +
'<ul></ul>' +
'</div>' +
'</div>' +
'{{#if preloader}}' +
'<div class="autocomplete-preloader preloader {{#if preloaderColor}}preloader-{{preloaderColor}}{{/if}}">{{#if material}}{{materialPreloaderHtml}}{{/if}}</div>' +
'{{/if}}' +
'</div>'
);
}
// Define popup
a.popup = undefined;
// Define Dropdown
a.dropdown = undefined;
// Handle Input Value Change
function handleInputValue (e) {
var query = a.input.val();
if (a.params.source) {
a.params.source(a, query, function (items) {
var itemsHTML = '';
var limit = a.params.limit ? Math.min(a.params.limit, items.length) : items.length;
a.items = items;
var i, j;
var regExp = new RegExp('('+query+')', 'i');
for (i = 0; i < limit; i++) {
var itemValue = typeof items[i] === 'object' ? items[i][a.params.valueProperty] : items[i];
itemsHTML += a.dropdownItemTemplate({
value: itemValue,
text: (typeof items[i] !== 'object' ? items[i] : items[i][a.params.textProperty]).replace(regExp, '<b>$1</b>')
});
}
if (itemsHTML === '' && query === '' && a.params.dropdownPlaceholderText) {
itemsHTML += a.dropdownPlaceholderTemplate({
text: a.params.dropdownPlaceholderText,
});
}
a.dropdown.find('ul').html(itemsHTML);
});
}
}
// Handle Drop Down Click
function handleDropdownClick (e) {
/*jshint validthis:true */
var clicked = $(this);
var clickedItem;
for (var i = 0; i < a.items.length; i++) {
var itemValue = typeof a.items[i] === 'object' ? a.items[i][a.params.valueProperty] : a.items[i];
var value = clicked.attr('data-value');
if (itemValue === value || itemValue * 1 === value * 1) {
clickedItem = a.items[i];
}
}
if (a.params.updateInputValueOnSelect) {
a.input.val(typeof clickedItem === 'object' ? clickedItem[a.params.textProperty] : clickedItem);
a.input.trigger('input change');
}
if (a.params.onChange) {
a.params.onChange(a, clickedItem);
}
a.close();
}
// Handle HTML Click to close Dropdown
function closeOnHTMLClick (e) {
var target = $(e.target);
if (!(target.is(a.input[0]) || a.dropdown && target.parents(a.dropdown[0]).length > 0)) {
a.close();
}
}
a.positionDropDown = function () {
var listBlock = a.input.parents('.list-block'),
pageContent = a.input.parents('.page-content'),
paddingTop = parseInt(pageContent.css('padding-top'), 10),
paddingBottom = parseInt(pageContent.css('padding-top'), 10),
// inputOffset = a.input.offset(),
listBlockOffsetLeft = listBlock.length > 0 ? listBlock.offset().left - listBlock.parent().offset().left : 0,
inputOffsetLeft = a.input.offset().left - (listBlock.length > 0 ? listBlock.offset().left : 0),
inputOffsetTop = a.input.offset().top - (pageContent.offset().top - pageContent[0].scrollTop),
maxHeight = pageContent[0].scrollHeight - paddingBottom - (inputOffsetTop + pageContent[0].scrollTop) - a.input[0].offsetHeight;
a.dropdown.css({
left: (listBlock.length > 0 ? listBlockOffsetLeft : inputOffsetLeft) + 'px',
top: inputOffsetTop + pageContent[0].scrollTop + a.input[0].offsetHeight + 'px',
width: (listBlock.length > 0 ? listBlock[0].offsetWidth : a.input[0].offsetWidth) + 'px'
});
a.dropdown.children('.autocomplete-dropdown-inner').css({
maxHeight: maxHeight + 'px',
paddingLeft: listBlock.length > 0 && !a.params.expandInput ? inputOffsetLeft - (material ? 16 : 15) + 'px' : ''
});
};
// Event Listeners on new page
a.pageInit = function (e) {
var page = e.detail.page;
a.page = $(page.container);
a.pageData = page;
if (page.name !== pageName) {
return;
}
var container = $(page.container);
// Init Search Bar
var searchbar = app.searchbar(container.find('.searchbar'), {
customSearch: true,
onSearch: function (searchbar, data) {
if (data.query.length === 0 && searchbar.active) {
searchbar.overlay.addClass('searchbar-overlay-active');
}
else {
searchbar.overlay.removeClass('searchbar-overlay-active');
}
var i, j, k;
if (a.params.source) {
a.params.source(a, data.query, function(items) {
var itemsHTML = '';
var limit = a.params.limit ? Math.min(a.params.limit, items.length) : items.length;
a.items = items;
for (i = 0; i < limit; i++) {
var selected = false;
var itemValue = typeof items[i] === 'object' ? items[i][a.params.valueProperty] : items[i];
for (j = 0; j < a.value.length; j++) {
var aValue = typeof a.value[j] === 'object' ? a.value[j][a.params.valueProperty] : a.value[j];
if (aValue === itemValue || aValue * 1 === itemValue * 1) selected = true;
}
itemsHTML += a.itemTemplate({
value: itemValue,
text: typeof items[i] !== 'object' ? items[i] : items[i][a.params.textProperty],
inputType: a.inputType,
id: a.id,
inputName: a.inputName,
selected: selected,
checkbox: a.inputType === 'checkbox',
material: material
});
}
container.find('.autocomplete-found ul').html(itemsHTML);
if (items.length === 0) {
if (data.query.length !== 0) {
container.find('.autocomplete-not-found').show();
container.find('.autocomplete-found, .autocomplete-values').hide();
}
else {
container.find('.autocomplete-values').show();
container.find('.autocomplete-found, .autocomplete-not-found').hide();
}
}
else {
container.find('.autocomplete-found').show();
container.find('.autocomplete-not-found, .autocomplete-values').hide();
}
});
}
}
});
// Save searchbar instance
a.searchbar = searchbar;
// Update values
function updateValues() {
var valuesHTML = '';
var i;
for (i = 0; i < a.value.length; i++) {
valuesHTML += a.itemTemplate({
value: typeof a.value[i] === 'object' ? a.value[i][a.params.valueProperty] : a.value[i],
text: typeof a.value[i] === 'object' ? a.value[i][a.params.textProperty]: a.value[i],
inputType: a.inputType,
id: a.id,
inputName: a.inputName + '-checked',
checkbox: a.inputType === 'checkbox',
material: material,
selected: true
});
}
container.find('.autocomplete-values ul').html(valuesHTML);
}
// Handle Inputs
container.on('change', 'input[type="radio"], input[type="checkbox"]', function () {
var i;
var input = this;
var value = input.value;
var text = $(input).parents('li').find('.item-title').text();
var isValues = $(input).parents('.autocomplete-values').length > 0;
var item, itemValue, aValue;
if (isValues) {
if (a.inputType === 'checkbox' && !input.checked) {
for (i = 0; i < a.value.length; i++) {
aValue = typeof a.value[i] === 'string' ? a.value[i] : a.value[i][a.params.valueProperty];
if (aValue === value || aValue * 1 === value * 1) {
a.value.splice(i, 1);
}
}
updateValues();
if (a.params.onChange) a.params.onChange(a, a.value);
}
return;
}
// Find Related Item
for (i = 0; i < a.items.length; i++) {
itemValue = typeof a.items[i] === 'string' ? a.items[i] : a.items[i][a.params.valueProperty];
if (itemValue === value || itemValue * 1 === value * 1) item = a.items[i];
}
// Update Selected Value
if (a.inputType === 'radio') {
a.value = [item];
}
else {
if (input.checked) {
a.value.push(item);
}
else {
for (i = 0; i < a.value.length; i++) {
aValue = typeof a.value[i] === 'string' ? a.value[i] : a.value[i][a.params.valueProperty];
if (aValue === value || aValue * 1 === value * 1) {
a.value.splice(i, 1);
}
}
}
}
// Update Values Block
updateValues();
// On Select Callback
if ((a.inputType === 'radio' && input.checked || a.inputType === 'checkbox') && a.params.onChange ) {
a.params.onChange(a, a.value);
}
if (backOnSelect && a.inputType === 'radio') {
if (a.params.openIn === 'popup') app.closeModal(a.popup);
else view.router.back();
}
});
// Update Values On Page Init
updateValues();
if (a.params.onOpen) a.params.onOpen(a);
};
// Show Hide Preloader
a.showPreloader = function () {
if (a.params.openIn === 'dropdown') {
if (a.dropdown) a.dropdown.find('.autocomplete-preloader').addClass('autocomplete-preloader-visible');
}
else $('.autocomplete-preloader').addClass('autocomplete-preloader-visible');
};
a.hidePreloader = function () {
if (a.params.openIn === 'dropdown') {
if (a.dropdown) a.dropdown.find('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');
}
else $('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');
};
// Open Autocomplete Page/Popup
a.open = function () {
if (a.opened) return;
a.opened = true;
if (a.params.openIn === 'dropdown') {
if (!a.dropdown) {
a.dropdown = $(a.dropdownTemplate({
preloader: a.params.preloader,
preloaderColor: a.params.preloaderColor,
material: material,
materialPreloaderHtml: app.params.materialPreloaderHtml
}));
a.dropdown.on('click', 'label', handleDropdownClick);
}
var listBlock = a.input.parents('.list-block');
if (listBlock.length && a.input.parents('.item-content').length > 0 && a.params.expandInput) {
a.input.parents('.item-content').addClass('item-content-dropdown-expand');
}
a.positionDropDown();
a.input.parents('.page-content').append(a.dropdown);
a.dropdown.addClass('autocomplete-dropdown-in');
a.input.trigger('input');
$(window).on('resize', a.positionDropDown);
if (a.params.onOpen) a.params.onOpen(a);
}
else {
$(document).once('pageInit', '.autocomplete-page', a.pageInit);
if (a.params.openIn === 'popup') {
a.popup = app.popup(
'<div class="popup autocomplete-popup autocomplete-popup-' + a.inputName + '">' +
'<div class="view navbar-fixed">' +
pageHTML +
'</div>' +
'</div>'
);
a.popup = $(a.popup);
a.popup.once('closed', function () {
a.popup = undefined;
a.opened = false;
if (a.params.onClose) a.params.onClose(a);
});
}
else {
view.router.load({
content: pageHTML
});
$(document).once('pageBack', '.autocomplete-page', function () {
a.opened = false;
if (a.params.onClose) a.params.onClose(a);
});
}
}
};
a.close = function (e) {
if (!a.opened) return;
if (a.params.openIn === 'dropdown') {
if (e && e.type === 'blur' && a.dropdown.find('label.active-state').length > 0) return;
a.dropdown.removeClass('autocomplete-dropdown-in').remove();
a.input.parents('.item-content-dropdown-expand').removeClass('item-content-dropdown-expand');
a.opened = false;
$(window).off('resize', a.positionDropDown);
if (a.params.onClose) a.params.onClose(a);
}
if (a.params.openIn === 'popup') {
if (a.popup) app.closeModal(a.popup);
}
};
// Init Events
a.initEvents = function (detach) {
var method = detach ? 'off' : 'on';
if (a.params.openIn !== 'dropdown' && a.opener) {
a.opener[method]('click', a.open);
}
if (a.params.openIn === 'dropdown' && a.input) {
a.input[method]('focus', a.open);
a.input[method]('input', handleInputValue);
if (app.device.android) {
$('html')[method]('click', closeOnHTMLClick);
}
else {
a.input[method]('blur', a.close);
}
}
if (detach && a.dropdown) {
a.dropdown = null;
}
};
// Init/Destroy Methods
a.init = function () {
a.initEvents();
};
a.destroy = function () {
a.initEvents(true);
a = null;
};
// Init
a.init();
return a;
};
app.autocomplete = function (params) {
return new Autocomplete(params);
};

View file

@ -1,996 +0,0 @@
/*======================================================
************ Calendar ************
======================================================*/
var Calendar = function (params) {
var p = this;
var defaults = {
monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August' , 'September' , 'October', 'November', 'December'],
monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
firstDay: 1, // First day of the week, Monday
weekendDays: [0, 6], // Sunday and Saturday
multiple: false,
rangePicker: false,
dateFormat: 'yyyy-mm-dd',
direction: 'horizontal', // or 'vertical'
minDate: null,
maxDate: null,
disabled: null, // dates range of disabled days
events: null, // dates range of days with events
rangesClasses: null, //array with custom classes date ranges
touchMove: true,
animate: true,
closeOnSelect: false,
monthPicker: true,
monthPickerTemplate:
'<div class="picker-calendar-month-picker">' +
'<a href="#" class="link icon-only picker-calendar-prev-month"><i class="icon icon-prev"></i></a>' +
'<span class="current-month-value"></span>' +
'<a href="#" class="link icon-only picker-calendar-next-month"><i class="icon icon-next"></i></a>' +
'</div>',
yearPicker: true,
yearPickerTemplate:
'<div class="picker-calendar-year-picker">' +
'<a href="#" class="link icon-only picker-calendar-prev-year"><i class="icon icon-prev"></i></a>' +
'<span class="current-year-value"></span>' +
'<a href="#" class="link icon-only picker-calendar-next-year"><i class="icon icon-next"></i></a>' +
'</div>',
weekHeader: true,
// Common settings
closeByOutsideClick: true,
scrollToInput: true,
inputReadOnly: true,
convertToPopover: true,
onlyInPopover: false,
toolbar: true,
toolbarCloseText: 'Done',
headerPlaceholder: 'Select date',
header: app.params.material,
footer: app.params.material,
toolbarTemplate:
'<div class="toolbar">' +
'<div class="toolbar-inner">' +
'{{monthPicker}}' +
'{{yearPicker}}' +
'</div>' +
'</div>',
headerTemplate:
'<div class="picker-header">' +
'<div class="picker-calendar-selected-date">{{placeholder}}</div>' +
'</div>',
footerTemplate:
'<div class="picker-footer">' +
'<a href="#" class="button close-picker">{{closeText}}</a>' +
'</div>',
/* Callbacks
onMonthAdd
onChange
onOpen
onClose
onDayClick
onMonthYearChangeStart
onMonthYearChangeEnd
*/
};
params = params || {};
for (var def in defaults) {
if (typeof params[def] === 'undefined') {
params[def] = defaults[def];
}
}
p.params = params;
p.initialized = false;
// Inline flag
p.inline = p.params.container ? true : false;
// Is horizontal
p.isH = p.params.direction === 'horizontal';
// RTL inverter
var inverter = p.isH ? (app.rtl ? -1 : 1) : 1;
// Animating flag
p.animating = false;
// Should be converted to popover
function isPopover() {
var toPopover = false;
if (!p.params.convertToPopover && !p.params.onlyInPopover) return toPopover;
if (!p.inline && p.params.input) {
if (p.params.onlyInPopover) toPopover = true;
else {
if (app.device.ios) {
toPopover = app.device.ipad ? true : false;
}
else {
if ($(window).width() >= 768) toPopover = true;
}
}
}
return toPopover;
}
function inPopover() {
if (p.opened && p.container && p.container.length > 0 && p.container.parents('.popover').length > 0) return true;
else return false;
}
// Format date
function formatDate(date) {
date = new Date(date);
var year = date.getFullYear();
var month = date.getMonth();
var month1 = month + 1;
var day = date.getDate();
var weekDay = date.getDay();
return p.params.dateFormat
.replace(/yyyy/g, year)
.replace(/yy/g, (year + '').substring(2))
.replace(/mm/g, month1 < 10 ? '0' + month1 : month1)
.replace(/m(\W+)/g, month1 + '$1')
.replace(/MM/g, p.params.monthNames[month])
.replace(/M(\W+)/g, p.params.monthNamesShort[month] + '$1')
.replace(/dd/g, day < 10 ? '0' + day : day)
.replace(/d(\W+)/g, day + '$1')
.replace(/DD/g, p.params.dayNames[weekDay])
.replace(/D(\W+)/g, p.params.dayNamesShort[weekDay] + '$1');
}
// Value
p.addValue = function (value) {
if (p.params.multiple) {
if (!p.value) p.value = [];
var inValuesIndex;
for (var i = 0; i < p.value.length; i++) {
if (new Date(value).getTime() === new Date(p.value[i]).getTime()) {
inValuesIndex = i;
}
}
if (typeof inValuesIndex === 'undefined') {
p.value.push(value);
}
else {
p.value.splice(inValuesIndex, 1);
}
p.updateValue();
}
else if (p.params.rangePicker) {
if (!p.value) p.value = [];
if (p.value.length === 2 || p.value.length === 0) {
p.value = [];
}
if (p.value[0] !== value) p.value.push(value);
else p.value = [];
p.value.sort(function (a,b) {
return a - b;
});
p.updateValue();
}
else {
p.value = [value];
p.updateValue();
}
};
p.setValue = function (arrValues) {
p.value = arrValues;
p.updateValue();
};
p.updateValue = function (onlyHeader) {
var i, inputValue;
if (p.container && p.container.length > 0) {
p.wrapper.find('.picker-calendar-day-selected').removeClass('picker-calendar-day-selected');
var valueDate;
if (p.params.rangePicker && p.value.length === 2) {
for (i = p.value[0]; i <= p.value[1]; i += 24*60*60*1000) {
valueDate = new Date(i);
p.wrapper.find('.picker-calendar-day[data-date="' + valueDate.getFullYear() + '-' + valueDate.getMonth() + '-' + valueDate.getDate() + '"]').addClass('picker-calendar-day-selected');
}
}
else {
for (i = 0; i < p.value.length; i++) {
valueDate = new Date(p.value[i]);
p.wrapper.find('.picker-calendar-day[data-date="' + valueDate.getFullYear() + '-' + valueDate.getMonth() + '-' + valueDate.getDate() + '"]').addClass('picker-calendar-day-selected');
}
}
}
if (p.params.onChange) {
p.params.onChange(p, p.value);
}
if ((p.input && p.input.length > 0) || (app.params.material && p.params.header)) {
if (p.params.formatValue) inputValue = p.params.formatValue(p, p.value);
else {
inputValue = [];
for (i = 0; i < p.value.length; i++) {
inputValue.push(formatDate(p.value[i]));
}
inputValue = inputValue.join(p.params.rangePicker ? ' - ' : ', ');
}
if (app.params.material && p.params.header && p.container && p.container.length > 0) {
p.container.find('.picker-calendar-selected-date').text(inputValue);
}
if (p.input && p.input.length > 0 && !onlyHeader) {
$(p.input).val(inputValue);
$(p.input).trigger('change');
}
}
};
// Columns Handlers
p.initCalendarEvents = function () {
var col;
var allowItemClick = true;
var isTouched, isMoved, touchStartX, touchStartY, touchCurrentX, touchCurrentY, touchStartTime, touchEndTime, startTranslate, currentTranslate, wrapperWidth, wrapperHeight, percentage, touchesDiff, isScrolling;
function handleTouchStart (e) {
if (isMoved || isTouched) return;
// e.preventDefault();
isTouched = true;
touchStartX = touchCurrentY = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
touchStartY = touchCurrentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
touchStartTime = (new Date()).getTime();
percentage = 0;
allowItemClick = true;
isScrolling = undefined;
startTranslate = currentTranslate = p.monthsTranslate;
}
function handleTouchMove (e) {
if (!isTouched) return;
touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
if (typeof isScrolling === 'undefined') {
isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));
}
if (p.isH && isScrolling) {
isTouched = false;
return;
}
e.preventDefault();
if (p.animating) {
isTouched = false;
return;
}
allowItemClick = false;
if (!isMoved) {
// First move
isMoved = true;
wrapperWidth = p.wrapper[0].offsetWidth;
wrapperHeight = p.wrapper[0].offsetHeight;
p.wrapper.transition(0);
}
touchesDiff = p.isH ? touchCurrentX - touchStartX : touchCurrentY - touchStartY;
percentage = touchesDiff/(p.isH ? wrapperWidth : wrapperHeight);
currentTranslate = (p.monthsTranslate * inverter + percentage) * 100;
// Transform wrapper
p.wrapper.transform('translate3d(' + (p.isH ? currentTranslate : 0) + '%, ' + (p.isH ? 0 : currentTranslate) + '%, 0)');
}
function handleTouchEnd (e) {
if (!isTouched || !isMoved) {
isTouched = isMoved = false;
return;
}
isTouched = isMoved = false;
touchEndTime = new Date().getTime();
if (touchEndTime - touchStartTime < 300) {
if (Math.abs(touchesDiff) < 10) {
p.resetMonth();
}
else if (touchesDiff >= 10) {
if (app.rtl) p.nextMonth();
else p.prevMonth();
}
else {
if (app.rtl) p.prevMonth();
else p.nextMonth();
}
}
else {
if (percentage <= -0.5) {
if (app.rtl) p.prevMonth();
else p.nextMonth();
}
else if (percentage >= 0.5) {
if (app.rtl) p.nextMonth();
else p.prevMonth();
}
else {
p.resetMonth();
}
}
// Allow click
setTimeout(function () {
allowItemClick = true;
}, 100);
}
function handleDayClick(e) {
if (!allowItemClick) return;
var day = $(e.target).parents('.picker-calendar-day');
if (day.length === 0 && $(e.target).hasClass('picker-calendar-day')) {
day = $(e.target);
}
if (day.length === 0) return;
if (day.hasClass('picker-calendar-day-selected') && !(p.params.multiple || p.params.rangePicker)) return;
if (day.hasClass('picker-calendar-day-disabled')) return;
if (!p.params.rangePicker) {
if (day.hasClass('picker-calendar-day-next')) p.nextMonth();
if (day.hasClass('picker-calendar-day-prev')) p.prevMonth();
}
var dateYear = day.attr('data-year');
var dateMonth = day.attr('data-month');
var dateDay = day.attr('data-day');
if (p.params.onDayClick) {
p.params.onDayClick(p, day[0], dateYear, dateMonth, dateDay);
}
p.addValue(new Date(dateYear, dateMonth, dateDay).getTime());
if (p.params.closeOnSelect) {
if (p.params.rangePicker && p.value.length === 2 || !p.params.rangePicker) p.close();
}
}
p.container.find('.picker-calendar-prev-month').on('click', p.prevMonth);
p.container.find('.picker-calendar-next-month').on('click', p.nextMonth);
p.container.find('.picker-calendar-prev-year').on('click', p.prevYear);
p.container.find('.picker-calendar-next-year').on('click', p.nextYear);
p.wrapper.on('click', handleDayClick);
var passiveListener = app.touchEvents.start === 'touchstart' && app.support.passiveListener ? {passive: true, capture: false} : false;
if (p.params.touchMove) {
p.wrapper.on(app.touchEvents.start, handleTouchStart, passiveListener);
p.wrapper.on(app.touchEvents.move, handleTouchMove);
p.wrapper.on(app.touchEvents.end, handleTouchEnd, passiveListener);
}
p.container[0].f7DestroyCalendarEvents = function () {
p.container.find('.picker-calendar-prev-month').off('click', p.prevMonth);
p.container.find('.picker-calendar-next-month').off('click', p.nextMonth);
p.container.find('.picker-calendar-prev-year').off('click', p.prevYear);
p.container.find('.picker-calendar-next-year').off('click', p.nextYear);
p.wrapper.off('click', handleDayClick);
if (p.params.touchMove) {
p.wrapper.off(app.touchEvents.start, handleTouchStart, passiveListener);
p.wrapper.off(app.touchEvents.move, handleTouchMove);
p.wrapper.off(app.touchEvents.end, handleTouchEnd, passiveListener);
}
};
};
p.destroyCalendarEvents = function (colContainer) {
if ('f7DestroyCalendarEvents' in p.container[0]) p.container[0].f7DestroyCalendarEvents();
};
// Scan Dates Range
p.dateInRange = function (dayDate, range) {
var match = false;
var i;
if (!range) return false;
if ($.isArray(range)) {
for (i = 0; i < range.length; i ++) {
if (range[i].from || range[i].to) {
if (range[i].from && range[i].to) {
if ((dayDate <= new Date(range[i].to).getTime()) && (dayDate >= new Date(range[i].from).getTime())) {
match = true;
}
}
else if (range[i].from) {
if (dayDate >= new Date(range[i].from).getTime()) {
match = true;
}
}
else if (range[i].to) {
if (dayDate <= new Date(range[i].to).getTime()) {
match = true;
}
}
} else if (dayDate === new Date(range[i]).getTime()) {
match = true;
}
}
}
else if (range.from || range.to) {
if (range.from && range.to) {
if ((dayDate <= new Date(range.to).getTime()) && (dayDate >= new Date(range.from).getTime())) {
match = true;
}
}
else if (range.from) {
if (dayDate >= new Date(range.from).getTime()) {
match = true;
}
}
else if (range.to) {
if (dayDate <= new Date(range.to).getTime()) {
match = true;
}
}
}
else if (typeof range === 'function') {
match = range(new Date(dayDate));
}
return match;
};
// Calendar Methods
p.daysInMonth = function (date) {
var d = new Date(date);
return new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();
};
p.monthHTML = function (date, offset) {
date = new Date(date);
var year = date.getFullYear(),
month = date.getMonth(),
day = date.getDate();
if (offset === 'next') {
if (month === 11) date = new Date(year + 1, 0);
else date = new Date(year, month + 1, 1);
}
if (offset === 'prev') {
if (month === 0) date = new Date(year - 1, 11);
else date = new Date(year, month - 1, 1);
}
if (offset === 'next' || offset === 'prev') {
month = date.getMonth();
year = date.getFullYear();
}
var daysInPrevMonth = p.daysInMonth(new Date(date.getFullYear(), date.getMonth()).getTime() - 10 * 24 * 60 * 60 * 1000),
daysInMonth = p.daysInMonth(date),
firstDayOfMonthIndex = new Date(date.getFullYear(), date.getMonth()).getDay();
if (firstDayOfMonthIndex === 0) firstDayOfMonthIndex = 7;
var dayDate, currentValues = [], i, j, k,
rows = 6, cols = 7,
monthHTML = '',
dayIndex = 0 + (p.params.firstDay - 1),
today = new Date().setHours(0,0,0,0),
minDate = p.params.minDate ? new Date(p.params.minDate).getTime() : null,
maxDate = p.params.maxDate ? new Date(p.params.maxDate).getTime() : null,
disabled,
hasEvent;
if (p.value && p.value.length) {
for (i = 0; i < p.value.length; i++) {
currentValues.push(new Date(p.value[i]).setHours(0,0,0,0));
}
}
for (i = 1; i <= rows; i++) {
var rowHTML = '';
var row = i;
for (j = 1; j <= cols; j++) {
var col = j;
dayIndex ++;
var dayNumber = dayIndex - firstDayOfMonthIndex;
var weekDayIndex = (col - 1 + p.params.firstDay > 6) ? (col - 1 - 7 + p.params.firstDay) : (col - 1 + p.params.firstDay);
var addClass = '';
if (dayNumber < 0) {
dayNumber = daysInPrevMonth + dayNumber + 1;
addClass += ' picker-calendar-day-prev';
dayDate = new Date(month - 1 < 0 ? year - 1 : year, month - 1 < 0 ? 11 : month - 1, dayNumber).getTime();
}
else {
dayNumber = dayNumber + 1;
if (dayNumber > daysInMonth) {
dayNumber = dayNumber - daysInMonth;
addClass += ' picker-calendar-day-next';
dayDate = new Date(month + 1 > 11 ? year + 1 : year, month + 1 > 11 ? 0 : month + 1, dayNumber).getTime();
}
else {
dayDate = new Date(year, month, dayNumber).getTime();
}
}
// Today
if (dayDate === today) addClass += ' picker-calendar-day-today';
// Selected
if (p.params.rangePicker && currentValues.length === 2) {
if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) addClass += ' picker-calendar-day-selected';
}
else {
if (currentValues.indexOf(dayDate) >= 0) addClass += ' picker-calendar-day-selected';
}
// Weekend
if (p.params.weekendDays.indexOf(weekDayIndex) >= 0) {
addClass += ' picker-calendar-day-weekend';
}
// Has Events
hasEvent = false;
if (p.params.events) {
if (p.dateInRange(dayDate, p.params.events)) {
hasEvent = true;
}
}
if (hasEvent) {
addClass += ' picker-calendar-day-has-events';
}
// Custom Ranges
if (p.params.rangesClasses) {
for (k = 0; k < p.params.rangesClasses.length; k++) {
if (p.dateInRange(dayDate, p.params.rangesClasses[k].range)) {
addClass += ' ' + p.params.rangesClasses[k].cssClass;
}
}
}
// Disabled
disabled = false;
if ((minDate && dayDate < minDate) || (maxDate && dayDate > maxDate)) {
disabled = true;
}
if (p.params.disabled) {
if (p.dateInRange(dayDate, p.params.disabled)) {
disabled = true;
}
}
if (disabled) {
addClass += ' picker-calendar-day-disabled';
}
dayDate = new Date(dayDate);
var dayYear = dayDate.getFullYear();
var dayMonth = dayDate.getMonth();
rowHTML += '<div data-year="' + dayYear + '" data-month="' + dayMonth + '" data-day="' + dayNumber + '" class="picker-calendar-day' + (addClass) + '" data-date="' + (dayYear + '-' + dayMonth + '-' + dayNumber) + '"><span>'+dayNumber+'</span></div>';
}
monthHTML += '<div class="picker-calendar-row">' + rowHTML + '</div>';
}
monthHTML = '<div class="picker-calendar-month" data-year="' + year + '" data-month="' + month + '">' + monthHTML + '</div>';
return monthHTML;
};
p.animating = false;
p.updateCurrentMonthYear = function (dir) {
if (typeof dir === 'undefined') {
p.currentMonth = parseInt(p.months.eq(1).attr('data-month'), 10);
p.currentYear = parseInt(p.months.eq(1).attr('data-year'), 10);
}
else {
p.currentMonth = parseInt(p.months.eq(dir === 'next' ? (p.months.length - 1) : 0).attr('data-month'), 10);
p.currentYear = parseInt(p.months.eq(dir === 'next' ? (p.months.length - 1) : 0).attr('data-year'), 10);
}
p.container.find('.current-month-value').text(p.params.monthNames[p.currentMonth]);
p.container.find('.current-year-value').text(p.currentYear);
};
p.onMonthChangeStart = function (dir) {
p.updateCurrentMonthYear(dir);
p.months.removeClass('picker-calendar-month-current picker-calendar-month-prev picker-calendar-month-next');
var currentIndex = dir === 'next' ? p.months.length - 1 : 0;
p.months.eq(currentIndex).addClass('picker-calendar-month-current');
p.months.eq(dir === 'next' ? currentIndex - 1 : currentIndex + 1).addClass(dir === 'next' ? 'picker-calendar-month-prev' : 'picker-calendar-month-next');
if (p.params.onMonthYearChangeStart) {
p.params.onMonthYearChangeStart(p, p.currentYear, p.currentMonth);
}
};
p.onMonthChangeEnd = function (dir, rebuildBoth) {
p.animating = false;
var nextMonthHTML, prevMonthHTML, newMonthHTML;
p.wrapper.find('.picker-calendar-month:not(.picker-calendar-month-prev):not(.picker-calendar-month-current):not(.picker-calendar-month-next)').remove();
if (typeof dir === 'undefined') {
dir = 'next';
rebuildBoth = true;
}
if (!rebuildBoth) {
newMonthHTML = p.monthHTML(new Date(p.currentYear, p.currentMonth), dir);
}
else {
p.wrapper.find('.picker-calendar-month-next, .picker-calendar-month-prev').remove();
prevMonthHTML = p.monthHTML(new Date(p.currentYear, p.currentMonth), 'prev');
nextMonthHTML = p.monthHTML(new Date(p.currentYear, p.currentMonth), 'next');
}
if (dir === 'next' || rebuildBoth) {
p.wrapper.append(newMonthHTML || nextMonthHTML);
}
if (dir === 'prev' || rebuildBoth) {
p.wrapper.prepend(newMonthHTML || prevMonthHTML);
}
p.months = p.wrapper.find('.picker-calendar-month');
p.setMonthsTranslate(p.monthsTranslate);
if (p.params.onMonthAdd) {
p.params.onMonthAdd(p, dir === 'next' ? p.months.eq(p.months.length - 1)[0] : p.months.eq(0)[0]);
}
if (p.params.onMonthYearChangeEnd) {
p.params.onMonthYearChangeEnd(p, p.currentYear, p.currentMonth);
}
};
p.setMonthsTranslate = function (translate) {
translate = translate || p.monthsTranslate || 0;
if (typeof p.monthsTranslate === 'undefined') p.monthsTranslate = translate;
p.months.removeClass('picker-calendar-month-current picker-calendar-month-prev picker-calendar-month-next');
var prevMonthTranslate = -(translate + 1) * 100 * inverter;
var currentMonthTranslate = -translate * 100 * inverter;
var nextMonthTranslate = -(translate - 1) * 100 * inverter;
p.months.eq(0).transform('translate3d(' + (p.isH ? prevMonthTranslate : 0) + '%, ' + (p.isH ? 0 : prevMonthTranslate) + '%, 0)').addClass('picker-calendar-month-prev');
p.months.eq(1).transform('translate3d(' + (p.isH ? currentMonthTranslate : 0) + '%, ' + (p.isH ? 0 : currentMonthTranslate) + '%, 0)').addClass('picker-calendar-month-current');
p.months.eq(2).transform('translate3d(' + (p.isH ? nextMonthTranslate : 0) + '%, ' + (p.isH ? 0 : nextMonthTranslate) + '%, 0)').addClass('picker-calendar-month-next');
};
p.nextMonth = function (transition) {
if (typeof transition === 'undefined' || typeof transition === 'object') {
transition = '';
if (!p.params.animate) transition = 0;
}
var nextMonth = parseInt(p.months.eq(p.months.length - 1).attr('data-month'), 10);
var nextYear = parseInt(p.months.eq(p.months.length - 1).attr('data-year'), 10);
var nextDate = new Date(nextYear, nextMonth);
var nextDateTime = nextDate.getTime();
var transitionEndCallback = p.animating ? false : true;
if (p.params.maxDate) {
if (nextDateTime > new Date(p.params.maxDate).getTime()) {
return p.resetMonth();
}
}
p.monthsTranslate --;
if (nextMonth === p.currentMonth) {
var nextMonthTranslate = -(p.monthsTranslate) * 100 * inverter;
var nextMonthHTML = $(p.monthHTML(nextDateTime, 'next')).transform('translate3d(' + (p.isH ? nextMonthTranslate : 0) + '%, ' + (p.isH ? 0 : nextMonthTranslate) + '%, 0)').addClass('picker-calendar-month-next');
p.wrapper.append(nextMonthHTML[0]);
p.months = p.wrapper.find('.picker-calendar-month');
if (p.params.onMonthAdd) {
p.params.onMonthAdd(p, p.months.eq(p.months.length - 1)[0]);
}
}
p.animating = true;
p.onMonthChangeStart('next');
var translate = (p.monthsTranslate * 100) * inverter;
p.wrapper.transition(transition).transform('translate3d(' + (p.isH ? translate : 0) + '%, ' + (p.isH ? 0 : translate) + '%, 0)');
if (transitionEndCallback) {
p.wrapper.transitionEnd(function () {
p.onMonthChangeEnd('next');
});
}
if (!p.params.animate) {
p.onMonthChangeEnd('next');
}
};
p.prevMonth = function (transition) {
if (typeof transition === 'undefined' || typeof transition === 'object') {
transition = '';
if (!p.params.animate) transition = 0;
}
var prevMonth = parseInt(p.months.eq(0).attr('data-month'), 10);
var prevYear = parseInt(p.months.eq(0).attr('data-year'), 10);
var prevDate = new Date(prevYear, prevMonth + 1, -1);
var prevDateTime = prevDate.getTime();
var transitionEndCallback = p.animating ? false : true;
if (p.params.minDate) {
if (prevDateTime < new Date(p.params.minDate).getTime()) {
return p.resetMonth();
}
}
p.monthsTranslate ++;
if (prevMonth === p.currentMonth) {
var prevMonthTranslate = -(p.monthsTranslate) * 100 * inverter;
var prevMonthHTML = $(p.monthHTML(prevDateTime, 'prev')).transform('translate3d(' + (p.isH ? prevMonthTranslate : 0) + '%, ' + (p.isH ? 0 : prevMonthTranslate) + '%, 0)').addClass('picker-calendar-month-prev');
p.wrapper.prepend(prevMonthHTML[0]);
p.months = p.wrapper.find('.picker-calendar-month');
if (p.params.onMonthAdd) {
p.params.onMonthAdd(p, p.months.eq(0)[0]);
}
}
p.animating = true;
p.onMonthChangeStart('prev');
var translate = (p.monthsTranslate * 100) * inverter;
p.wrapper.transition(transition).transform('translate3d(' + (p.isH ? translate : 0) + '%, ' + (p.isH ? 0 : translate) + '%, 0)');
if (transitionEndCallback) {
p.wrapper.transitionEnd(function () {
p.onMonthChangeEnd('prev');
});
}
if (!p.params.animate) {
p.onMonthChangeEnd('prev');
}
};
p.resetMonth = function (transition) {
if (typeof transition === 'undefined') transition = '';
var translate = (p.monthsTranslate * 100) * inverter;
p.wrapper.transition(transition).transform('translate3d(' + (p.isH ? translate : 0) + '%, ' + (p.isH ? 0 : translate) + '%, 0)');
};
p.setYearMonth = function (year, month, transition) {
if (typeof year === 'undefined') year = p.currentYear;
if (typeof month === 'undefined') month = p.currentMonth;
if (typeof transition === 'undefined' || typeof transition === 'object') {
transition = '';
if (!p.params.animate) transition = 0;
}
var targetDate;
if (year < p.currentYear) {
targetDate = new Date(year, month + 1, -1).getTime();
}
else {
targetDate = new Date(year, month).getTime();
}
if (p.params.maxDate && targetDate > new Date(p.params.maxDate).getTime()) {
return false;
}
if (p.params.minDate && targetDate < new Date(p.params.minDate).getTime()) {
return false;
}
var currentDate = new Date(p.currentYear, p.currentMonth).getTime();
var dir = targetDate > currentDate ? 'next' : 'prev';
var newMonthHTML = p.monthHTML(new Date(year, month));
p.monthsTranslate = p.monthsTranslate || 0;
var prevTranslate = p.monthsTranslate;
var monthTranslate, wrapperTranslate;
var transitionEndCallback = p.animating ? false : true;
if (targetDate > currentDate) {
// To next
p.monthsTranslate --;
if (!p.animating) p.months.eq(p.months.length - 1).remove();
p.wrapper.append(newMonthHTML);
p.months = p.wrapper.find('.picker-calendar-month');
monthTranslate = -(prevTranslate - 1) * 100 * inverter;
p.months.eq(p.months.length - 1).transform('translate3d(' + (p.isH ? monthTranslate : 0) + '%, ' + (p.isH ? 0 : monthTranslate) + '%, 0)').addClass('picker-calendar-month-next');
}
else {
// To prev
p.monthsTranslate ++;
if (!p.animating) p.months.eq(0).remove();
p.wrapper.prepend(newMonthHTML);
p.months = p.wrapper.find('.picker-calendar-month');
monthTranslate = -(prevTranslate + 1) * 100 * inverter;
p.months.eq(0).transform('translate3d(' + (p.isH ? monthTranslate : 0) + '%, ' + (p.isH ? 0 : monthTranslate) + '%, 0)').addClass('picker-calendar-month-prev');
}
if (p.params.onMonthAdd) {
p.params.onMonthAdd(p, dir === 'next' ? p.months.eq(p.months.length - 1)[0] : p.months.eq(0)[0]);
}
p.animating = true;
p.onMonthChangeStart(dir);
wrapperTranslate = (p.monthsTranslate * 100) * inverter;
p.wrapper.transition(transition).transform('translate3d(' + (p.isH ? wrapperTranslate : 0) + '%, ' + (p.isH ? 0 : wrapperTranslate) + '%, 0)');
if (transitionEndCallback) {
p.wrapper.transitionEnd(function () {
p.onMonthChangeEnd(dir, true);
});
}
if (!p.params.animate) {
p.onMonthChangeEnd(dir);
}
};
p.nextYear = function () {
p.setYearMonth(p.currentYear + 1);
};
p.prevYear = function () {
p.setYearMonth(p.currentYear - 1);
};
// HTML Layout
p.layout = function () {
var pickerHTML = '';
var pickerClass = '';
var i;
var layoutDate = p.value && p.value.length ? p.value[0] : new Date().setHours(0,0,0,0);
var prevMonthHTML = p.monthHTML(layoutDate, 'prev');
var currentMonthHTML = p.monthHTML(layoutDate);
var nextMonthHTML = p.monthHTML(layoutDate, 'next');
var monthsHTML = '<div class="picker-calendar-months"><div class="picker-calendar-months-wrapper">' + (prevMonthHTML + currentMonthHTML + nextMonthHTML) + '</div></div>';
// Week days header
var weekHeaderHTML = '';
if (p.params.weekHeader) {
for (i = 0; i < 7; i++) {
var weekDayIndex = (i + p.params.firstDay > 6) ? (i - 7 + p.params.firstDay) : (i + p.params.firstDay);
var dayName = p.params.dayNamesShort[weekDayIndex];
weekHeaderHTML += '<div class="picker-calendar-week-day ' + ((p.params.weekendDays.indexOf(weekDayIndex) >= 0) ? 'picker-calendar-week-day-weekend' : '') + '"> ' + dayName + '</div>';
}
weekHeaderHTML = '<div class="picker-calendar-week-days">' + weekHeaderHTML + '</div>';
}
pickerClass = 'picker-modal picker-calendar' +
(p.params.rangePicker ? ' picker-calendar-range' : '') +
(p.params.cssClass ? ' ' + p.params.cssClass : '');
var toolbarHTML = p.params.toolbar ? p.params.toolbarTemplate.replace(/{{closeText}}/g, p.params.toolbarCloseText) : '';
if (p.params.toolbar) {
toolbarHTML = p.params.toolbarTemplate
.replace(/{{closeText}}/g, p.params.toolbarCloseText)
.replace(/{{monthPicker}}/g, (p.params.monthPicker ? p.params.monthPickerTemplate : ''))
.replace(/{{yearPicker}}/g, (p.params.yearPicker ? p.params.yearPickerTemplate : ''));
}
var headerHTML = p.params.header ? p.params.headerTemplate.replace(/{{closeText}}/g, p.params.toolbarCloseText).replace(/{{placeholder}}/g, p.params.headerPlaceholder) : '';
var footerHTML = p.params.footer ? p.params.footerTemplate.replace(/{{closeText}}/g, p.params.toolbarCloseText) : '';
pickerHTML =
'<div class="' + (pickerClass) + '">' +
headerHTML +
footerHTML +
toolbarHTML +
'<div class="picker-modal-inner">' +
weekHeaderHTML +
monthsHTML +
'</div>' +
'</div>';
p.pickerHTML = pickerHTML;
};
// Input Events
function openOnInput(e) {
e.preventDefault();
if (p.opened) return;
p.open();
if (p.params.scrollToInput && !isPopover() && !app.params.material) {
var pageContent = p.input.parents('.page-content');
if (pageContent.length === 0) return;
var paddingTop = parseInt(pageContent.css('padding-top'), 10),
paddingBottom = parseInt(pageContent.css('padding-bottom'), 10),
pageHeight = pageContent[0].offsetHeight - paddingTop - p.container.height(),
pageScrollHeight = pageContent[0].scrollHeight - paddingTop - p.container.height(),
newPaddingBottom;
var inputTop = p.input.offset().top - paddingTop + p.input[0].offsetHeight;
if (inputTop > pageHeight) {
var scrollTop = pageContent.scrollTop() + inputTop - pageHeight;
if (scrollTop + pageHeight > pageScrollHeight) {
newPaddingBottom = scrollTop + pageHeight - pageScrollHeight + paddingBottom;
if (pageHeight === pageScrollHeight) {
newPaddingBottom = p.container.height();
}
pageContent.css({'padding-bottom': (newPaddingBottom) + 'px'});
}
pageContent.scrollTop(scrollTop, 300);
}
}
}
function closeOnHTMLClick(e) {
if (inPopover()) return;
if (p.input && p.input.length > 0) {
if (e.target !== p.input[0] && $(e.target).parents('.picker-modal').length === 0) p.close();
}
else {
if ($(e.target).parents('.picker-modal').length === 0) p.close();
}
}
if (p.params.input) {
p.input = $(p.params.input);
if (p.input.length > 0) {
if (p.params.inputReadOnly) p.input.prop('readOnly', true);
if (!p.inline) {
p.input.on('click', openOnInput);
}
if (p.params.inputReadOnly) {
p.input.on('focus mousedown', function (e) {
e.preventDefault();
});
}
}
}
if (!p.inline && p.params.closeByOutsideClick) $('html').on('click', closeOnHTMLClick);
// Open
function onPickerClose() {
p.opened = false;
if (p.input && p.input.length > 0) {
p.input.parents('.page-content').css({'padding-bottom': ''});
if (app.params.material) p.input.trigger('blur');
}
if (p.params.onClose) p.params.onClose(p);
// Destroy events
p.destroyCalendarEvents();
}
p.opened = false;
p.open = function () {
var toPopover = isPopover();
var updateValue = false;
if (!p.opened) {
// Set date value
if (!p.value) {
if (p.params.value) {
p.value = p.params.value;
updateValue = true;
}
}
// Layout
p.layout();
// Append
if (toPopover) {
p.pickerHTML = '<div class="popover popover-picker-calendar"><div class="popover-inner">' + p.pickerHTML + '</div></div>';
p.popover = app.popover(p.pickerHTML, p.params.input, true);
p.container = $(p.popover).find('.picker-modal');
$(p.popover).on('close', function () {
onPickerClose();
});
}
else if (p.inline) {
p.container = $(p.pickerHTML);
p.container.addClass('picker-modal-inline');
$(p.params.container).append(p.container);
}
else {
p.container = $(app.pickerModal(p.pickerHTML));
$(p.container)
.on('close', function () {
onPickerClose();
});
}
// Store calendar instance
p.container[0].f7Calendar = p;
p.wrapper = p.container.find('.picker-calendar-months-wrapper');
// Months
p.months = p.wrapper.find('.picker-calendar-month');
// Update current month and year
p.updateCurrentMonthYear();
// Set initial translate
p.monthsTranslate = 0;
p.setMonthsTranslate();
// Init events
p.initCalendarEvents();
// Update input value
if (updateValue) p.updateValue();
else if (app.params.material && p.value) p.updateValue(true);
// Material Focus
if (p.input && p.input.length > 0 && app.params.material) {
p.input.trigger('focus');
}
}
// Set flag
p.opened = true;
p.initialized = true;
if (p.params.onMonthAdd) {
p.months.each(function () {
p.params.onMonthAdd(p, this);
});
}
if (p.params.onOpen) p.params.onOpen(p);
};
// Close
p.close = function () {
if (!p.opened || p.inline) return;
if (inPopover()) {
app.closeModal(p.popover);
return;
}
else {
app.closeModal(p.container);
return;
}
};
// Destroy
p.destroy = function () {
p.close();
if (p.params.input && p.input.length > 0) {
p.input.off('click focus', openOnInput);
}
$('html').off('click', closeOnHTMLClick);
};
if (p.inline) {
p.open();
}
else {
if (!p.initialized && p.params.value) p.setValue(p.params.value);
}
return p;
};
app.calendar = function (params) {
return new Calendar(params);
};

View file

@ -1,336 +0,0 @@
/*===============================================================================
************ Handle clicks and make them fast (on tap); ************
===============================================================================*/
app.initClickEvents = function () {
function handleScrollTop(e) {
/*jshint validthis:true */
var clicked = $(this);
var target = $(e.target);
var isLink = clicked[0].nodeName.toLowerCase() === 'a' ||
clicked.parents('a').length > 0 ||
target[0].nodeName.toLowerCase() === 'a' ||
target.parents('a').length > 0;
if (isLink) return;
var pageContent, page;
if (app.params.scrollTopOnNavbarClick && clicked.is('.navbar .center')) {
// Find active page
var navbar = clicked.parents('.navbar');
// Static Layout
pageContent = navbar.parents('.page-content');
if (pageContent.length === 0) {
// Fixed Layout
if (navbar.parents('.page').length > 0) {
pageContent = navbar.parents('.page').find('.page-content');
}
// Through Layout
if (pageContent.length === 0) {
if (navbar.nextAll('.pages').length > 0) {
pageContent = navbar.nextAll('.pages').find('.page:not(.page-on-left):not(.page-on-right):not(.cached)').find('.page-content');
}
}
}
}
if (app.params.scrollTopOnStatusbarClick && clicked.is('.statusbar-overlay')) {
if ($('.popup.modal-in').length > 0) {
// Check for opened popup
pageContent = $('.popup.modal-in').find('.page:not(.page-on-left):not(.page-on-right):not(.cached)').find('.page-content');
}
else if ($('.panel.active').length > 0) {
// Check for opened panel
pageContent = $('.panel.active').find('.page:not(.page-on-left):not(.page-on-right):not(.cached)').find('.page-content');
}
else if ($('.views > .view.active').length > 0) {
// View in tab bar app layout
pageContent = $('.views > .view.active').find('.page:not(.page-on-left):not(.page-on-right):not(.cached)').find('.page-content');
}
else {
// Usual case
pageContent = $('.views').find('.page:not(.page-on-left):not(.page-on-right):not(.cached)').find('.page-content');
}
}
if (pageContent && pageContent.length > 0) {
// Check for tab
if (pageContent.hasClass('tab')) {
pageContent = pageContent.parent('.tabs').children('.page-content.active');
}
if (pageContent.length > 0) pageContent.scrollTop(0, 300);
}
}
function handleClicks(e) {
/*jshint validthis:true */
var clicked = $(this);
var url = clicked.attr('href');
var isLink = clicked[0].nodeName.toLowerCase() === 'a';
// Check if link is external
if (isLink) {
if (clicked.is(app.params.externalLinks) || (url && url.indexOf('javascript:') >= 0)) {
if(url && clicked.attr('target') === '_system') {
e.preventDefault();
window.open(url, '_system');
}
return;
}
}
// Collect Clicked data- attributes
var clickedData = clicked.dataset();
// Smart Select
if (clicked.hasClass('smart-select')) {
if (app.smartSelectOpen) app.smartSelectOpen(clicked);
}
// Open Panel
if (clicked.hasClass('open-panel')) {
if ($('.panel').length === 1) {
if ($('.panel').hasClass('panel-left')) app.openPanel('left');
else app.openPanel('right');
}
else {
if (clickedData.panel === 'right') app.openPanel('right');
else app.openPanel('left');
}
}
// Close Panel
if (clicked.hasClass('close-panel')) {
app.closePanel();
}
if (clicked.hasClass('panel-overlay') && app.params.panelsCloseByOutside) {
app.closePanel();
}
// Popover
if (clicked.hasClass('open-popover')) {
var popover;
if (clickedData.popover) {
popover = clickedData.popover;
}
else popover = '.popover';
app.popover(popover, clicked);
}
if (clicked.hasClass('close-popover')) {
app.closeModal('.popover.modal-in');
}
// Popup
var popup;
if (clicked.hasClass('open-popup')) {
if (clickedData.popup) {
popup = clickedData.popup;
}
else popup = '.popup';
app.popup(popup);
}
if (clicked.hasClass('close-popup')) {
if (clickedData.popup) {
popup = clickedData.popup;
}
else popup = '.popup.modal-in';
app.closeModal(popup);
}
// Login Screen
var loginScreen;
if (clicked.hasClass('open-login-screen')) {
if (clickedData.loginScreen) {
loginScreen = clickedData.loginScreen;
}
else loginScreen = '.login-screen';
app.loginScreen(loginScreen);
}
if (clicked.hasClass('close-login-screen')) {
app.closeModal('.login-screen.modal-in');
}
// Close Modal
if (clicked.hasClass('modal-overlay')) {
if ($('.modal.modal-in').length > 0 && app.params.modalCloseByOutside)
app.closeModal('.modal.modal-in');
if ($('.actions-modal.modal-in').length > 0 && app.params.actionsCloseByOutside)
app.closeModal('.actions-modal.modal-in');
if ($('.popover.modal-in').length > 0) app.closeModal('.popover.modal-in');
}
if (clicked.hasClass('popup-overlay')) {
if ($('.popup.modal-in').length > 0 && app.params.popupCloseByOutside)
app.closeModal('.popup.modal-in');
}
if (clicked.hasClass('picker-modal-overlay')) {
if ($('.picker-modal.modal-in').length > 0)
app.closeModal('.picker-modal.modal-in');
}
// Picker
if (clicked.hasClass('close-picker')) {
var pickerToClose = $('.picker-modal.modal-in');
if (pickerToClose.length > 0) {
app.closeModal(pickerToClose);
}
else {
pickerToClose = $('.popover.modal-in .picker-modal');
if (pickerToClose.length > 0) {
app.closeModal(pickerToClose.parents('.popover'));
}
}
}
if (clicked.hasClass('open-picker')) {
var pickerToOpen;
if (clickedData.picker) {
pickerToOpen = clickedData.picker;
}
else pickerToOpen = '.picker-modal';
app.pickerModal(pickerToOpen, clicked);
}
// Tabs
var isTabLink;
if (clicked.hasClass('tab-link')) {
isTabLink = true;
app.showTab(clickedData.tab || clicked.attr('href'), clicked);
}
// Swipeout Close
if (clicked.hasClass('swipeout-close')) {
app.swipeoutClose(clicked.parents('.swipeout-opened'));
}
// Swipeout Delete
if (clicked.hasClass('swipeout-delete')) {
if (clickedData.confirm) {
var text = clickedData.confirm;
var title = clickedData.confirmTitle;
if (title) {
app.confirm(text, title, function () {
app.swipeoutDelete(clicked.parents('.swipeout'));
}, function () {
if (clickedData.closeOnCancel) app.swipeoutClose(clicked.parents('.swipeout'));
});
}
else {
app.confirm(text, function () {
app.swipeoutDelete(clicked.parents('.swipeout'));
}, function () {
if (clickedData.closeOnCancel) app.swipeoutClose(clicked.parents('.swipeout'));
});
}
}
else {
app.swipeoutDelete(clicked.parents('.swipeout'));
}
}
// Sortable
if (clicked.hasClass('toggle-sortable')) {
app.sortableToggle(clickedData.sortable);
}
if (clicked.hasClass('open-sortable')) {
app.sortableOpen(clickedData.sortable);
}
if (clicked.hasClass('close-sortable')) {
app.sortableClose(clickedData.sortable);
}
// Accordion
if (clicked.hasClass('accordion-item-toggle') || (clicked.hasClass('item-link') && clicked.parent().hasClass('accordion-item'))) {
var accordionItem = clicked.parent('.accordion-item');
if (accordionItem.length === 0) accordionItem = clicked.parents('.accordion-item');
if (accordionItem.length === 0) accordionItem = clicked.parents('li');
app.accordionToggle(accordionItem);
}
// Speed Dial
if (clicked.hasClass('floating-button') && clicked.parent().hasClass('speed-dial')) {
clicked.parent().toggleClass('speed-dial-opened');
}
if (clicked.hasClass('close-speed-dial')) {
$('.speed-dial-opened').removeClass('speed-dial-opened');
}
// Load Page
if (app.params.ajaxLinks && !clicked.is(app.params.ajaxLinks) || !isLink || !app.params.router) {
return;
}
if (isLink) {
e.preventDefault();
}
var validUrl = url && url.length > 0 && url !== '#' && !isTabLink;
var template = clickedData.template;
if (validUrl || clicked.hasClass('back') || template) {
var view;
if (clickedData.view) {
view = $(clickedData.view)[0].f7View;
}
else {
view = clicked.parents('.' + app.params.viewClass)[0] && clicked.parents('.' + app.params.viewClass)[0].f7View;
if (view && view.params.linksView) {
if (typeof view.params.linksView === 'string') view = $(view.params.linksView)[0].f7View;
else if (view.params.linksView instanceof View) view = view.params.linksView;
}
}
if (!view) {
if (app.mainView) view = app.mainView;
}
if (!view) return;
var pageName;
if (!template) {
if (url && url.indexOf('#') === 0 && url !== '#') {
if (view.params.domCache) {
pageName = url.split('#')[1];
}
else return;
}
if (url === '#' && !clicked.hasClass('back')) return;
}
else {
url = undefined;
}
var animatePages;
if (typeof clickedData.animatePages !== 'undefined') {
animatePages = clickedData.animatePages;
}
else {
if (clicked.hasClass('with-animation')) animatePages = true;
if (clicked.hasClass('no-animation')) animatePages = false;
}
var options = {
animatePages: animatePages,
ignoreCache: clickedData.ignoreCache,
force: clickedData.force,
reload: clickedData.reload,
reloadPrevious: clickedData.reloadPrevious,
pageName: pageName,
pushState: clickedData.pushState,
url: url
};
if (app.params.template7Pages) {
options.contextName = clickedData.contextName;
var context = clickedData.context;
if (context) {
options.context = JSON.parse(context);
}
}
if (template && template in t7.templates) {
options.template = t7.templates[template];
}
if (clicked.hasClass('back')) view.router.back(options);
else view.router.load(options);
}
}
$(document).on('click', 'a, .open-panel, .close-panel, .panel-overlay, .modal-overlay, .popup-overlay, .swipeout-delete, .swipeout-close, .close-popup, .open-popup, .open-popover, .open-login-screen, .close-login-screen .smart-select, .toggle-sortable, .open-sortable, .close-sortable, .accordion-item-toggle, .close-picker, .picker-modal-overlay', handleClicks);
if (app.params.scrollTopOnNavbarClick || app.params.scrollTopOnStatusbarClick) {
$(document).on('click', '.statusbar-overlay, .navbar .center', handleScrollTop);
}
// Prevent scrolling on overlays
function preventScrolling(e) {
e.preventDefault();
}
if (app.support.touch && !app.device.android) {
$(document).on((app.params.fastClicks ? 'touchstart' : 'touchmove'), '.panel-overlay, .modal-overlay, .preloader-indicator-overlay, .popup-overlay, .searchbar-overlay', preventScrolling);
}
};

View file

@ -1,280 +0,0 @@
// Global Ajax Setup
var globalAjaxOptions = {};
$.ajaxSetup = function (options) {
if (options.type) options.method = options.type;
$.each(options, function (optionName, optionValue) {
globalAjaxOptions[optionName] = optionValue;
});
};
// Ajax
var _jsonpRequests = 0;
$.ajax = function (options) {
var defaults = {
method: 'GET',
data: false,
async: true,
cache: true,
user: '',
password: '',
headers: {},
xhrFields: {},
statusCode: {},
processData: true,
dataType: 'text',
contentType: 'application/x-www-form-urlencoded',
timeout: 0
};
var callbacks = ['beforeSend', 'error', 'complete', 'success', 'statusCode'];
//For jQuery guys
if (options.type) options.method = options.type;
// Merge global and defaults
$.each(globalAjaxOptions, function (globalOptionName, globalOptionValue) {
if (callbacks.indexOf(globalOptionName) < 0) defaults[globalOptionName] = globalOptionValue;
});
// Function to run XHR callbacks and events
function fireAjaxCallback (eventName, eventData, callbackName) {
var a = arguments;
if (eventName) $(document).trigger(eventName, eventData);
if (callbackName) {
// Global callback
if (callbackName in globalAjaxOptions) globalAjaxOptions[callbackName](a[3], a[4], a[5], a[6]);
// Options callback
if (options[callbackName]) options[callbackName](a[3], a[4], a[5], a[6]);
}
}
// Merge options and defaults
$.each(defaults, function (prop, defaultValue) {
if (!(prop in options)) options[prop] = defaultValue;
});
// Default URL
if (!options.url) {
options.url = window.location.toString();
}
// Parameters Prefix
var paramsPrefix = options.url.indexOf('?') >= 0 ? '&' : '?';
// UC method
var _method = options.method.toUpperCase();
// Data to modify GET URL
if ((_method === 'GET' || _method === 'HEAD' || _method === 'OPTIONS' || _method === 'DELETE') && options.data) {
var stringData;
if (typeof options.data === 'string') {
// Should be key=value string
if (options.data.indexOf('?') >= 0) stringData = options.data.split('?')[1];
else stringData = options.data;
}
else {
// Should be key=value object
stringData = $.serializeObject(options.data);
}
if (stringData.length) {
options.url += paramsPrefix + stringData;
if (paramsPrefix === '?') paramsPrefix = '&';
}
}
// JSONP
if (options.dataType === 'json' && options.url.indexOf('callback=') >= 0) {
var callbackName = 'f7jsonp_' + Date.now() + (_jsonpRequests++);
var abortTimeout;
var callbackSplit = options.url.split('callback=');
var requestUrl = callbackSplit[0] + 'callback=' + callbackName;
if (callbackSplit[1].indexOf('&') >= 0) {
var addVars = callbackSplit[1].split('&').filter(function (el) { return el.indexOf('=') > 0; }).join('&');
if (addVars.length > 0) requestUrl += '&' + addVars;
}
// Create script
var script = document.createElement('script');
script.type = 'text/javascript';
script.onerror = function() {
clearTimeout(abortTimeout);
fireAjaxCallback(undefined, undefined, 'error', null, 'scripterror');
};
script.src = requestUrl;
// Handler
window[callbackName] = function (data) {
clearTimeout(abortTimeout);
fireAjaxCallback(undefined, undefined, 'success', data);
script.parentNode.removeChild(script);
script = null;
delete window[callbackName];
};
document.querySelector('head').appendChild(script);
if (options.timeout > 0) {
abortTimeout = setTimeout(function () {
script.parentNode.removeChild(script);
script = null;
fireAjaxCallback(undefined, undefined, 'error', null, 'timeout');
}, options.timeout);
}
return;
}
// Cache for GET/HEAD requests
if (_method === 'GET' || _method === 'HEAD' || _method === 'OPTIONS' || _method === 'DELETE') {
if (options.cache === false) {
options.url += (paramsPrefix + '_nocache=' + Date.now());
}
}
// Create XHR
var xhr = new XMLHttpRequest();
// Save Request URL
xhr.requestUrl = options.url;
xhr.requestParameters = options;
// Open XHR
xhr.open(_method, options.url, options.async, options.user, options.password);
// Create POST Data
var postData = null;
if ((_method === 'POST' || _method === 'PUT' || _method === 'PATCH') && options.data) {
if (options.processData) {
var postDataInstances = [ArrayBuffer, Blob, Document, FormData];
// Post Data
if (postDataInstances.indexOf(options.data.constructor) >= 0) {
postData = options.data;
}
else {
// POST Headers
var boundary = '---------------------------' + Date.now().toString(16);
if (options.contentType === 'multipart\/form-data') {
xhr.setRequestHeader('Content-Type', 'multipart\/form-data; boundary=' + boundary);
}
else {
xhr.setRequestHeader('Content-Type', options.contentType);
}
postData = '';
var _data = $.serializeObject(options.data);
if (options.contentType === 'multipart\/form-data') {
boundary = '---------------------------' + Date.now().toString(16);
_data = _data.split('&');
var _newData = [];
for (var i = 0; i < _data.length; i++) {
_newData.push('Content-Disposition: form-data; name="' + _data[i].split('=')[0] + '"\r\n\r\n' + _data[i].split('=')[1] + '\r\n');
}
postData = '--' + boundary + '\r\n' + _newData.join('--' + boundary + '\r\n') + '--' + boundary + '--\r\n';
}
else {
postData = options.contentType === 'application/x-www-form-urlencoded' ? _data : _data.replace(/&/g, '\r\n');
}
}
}
else {
postData = options.data;
}
}
// Additional headers
if (options.headers) {
$.each(options.headers, function (headerName, headerCallback) {
xhr.setRequestHeader(headerName, headerCallback);
});
}
// Check for crossDomain
if (typeof options.crossDomain === 'undefined') {
options.crossDomain = /^([\w-]+:)?\/\/([^\/]+)/.test(options.url) && RegExp.$2 !== window.location.host;
}
if (!options.crossDomain) {
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
}
if (options.xhrFields) {
$.each(options.xhrFields, function (fieldName, fieldValue) {
xhr[fieldName] = fieldValue;
});
}
var xhrTimeout;
// Handle XHR
xhr.onload = function (e) {
if (xhrTimeout) clearTimeout(xhrTimeout);
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) {
var responseData;
if (options.dataType === 'json') {
try {
responseData = JSON.parse(xhr.responseText);
fireAjaxCallback('ajaxSuccess', {xhr: xhr}, 'success', responseData, xhr.status, xhr);
}
catch (err) {
fireAjaxCallback('ajaxError', {xhr: xhr, parseerror: true}, 'error', xhr, 'parseerror');
}
}
else {
responseData = xhr.responseType === 'text' || xhr.responseType === '' ? xhr.responseText : xhr.response;
fireAjaxCallback('ajaxSuccess', {xhr: xhr}, 'success', responseData, xhr.status, xhr);
}
}
else {
fireAjaxCallback('ajaxError', {xhr: xhr}, 'error', xhr, xhr.status);
}
if (options.statusCode) {
if (globalAjaxOptions.statusCode && globalAjaxOptions.statusCode[xhr.status]) globalAjaxOptions.statusCode[xhr.status](xhr);
if (options.statusCode[xhr.status]) options.statusCode[xhr.status](xhr);
}
fireAjaxCallback('ajaxComplete', {xhr: xhr}, 'complete', xhr, xhr.status);
};
xhr.onerror = function (e) {
if (xhrTimeout) clearTimeout(xhrTimeout);
fireAjaxCallback('ajaxError', {xhr: xhr}, 'error', xhr, xhr.status);
};
// Ajax start callback
fireAjaxCallback('ajaxStart', {xhr: xhr}, 'start', xhr);
fireAjaxCallback(undefined, undefined, 'beforeSend', xhr);
// Timeout
if (options.timeout > 0) {
xhr.onabort = function () {
if (xhrTimeout) clearTimeout(xhrTimeout);
};
xhrTimeout = setTimeout(function () {
xhr.abort();
fireAjaxCallback('ajaxError', {xhr: xhr, timeout: true}, 'error', xhr, 'timeout');
fireAjaxCallback('ajaxComplete', {xhr: xhr, timeout: true}, 'complete', xhr, 'timeout');
}, options.timeout);
}
// Send XHR
xhr.send(postData);
// Return XHR object
return xhr;
};
// Shrotcuts
(function () {
var methods = ('get post getJSON').split(' ');
function createMethod(method) {
$[method] = function (url, data, success, error) {
return $.ajax({
url: url,
method: method === 'post' ? 'POST' : 'GET',
data: typeof data === 'function' ? undefined : data,
success: typeof data === 'function' ? data : success,
error: typeof data === 'function' ? success : error,
dataType: method === 'getJSON' ? 'json' : undefined
});
};
}
for (var i = 0; i < methods.length; i++) {
createMethod(methods[i]);
}
})();

View file

@ -1,66 +0,0 @@
/*===========================
Dom7 Library
===========================*/
var Dom7 = (function () {
var Dom7 = function (arr) {
var _this = this, i = 0;
// Create array-like object
for (i = 0; i < arr.length; i++) {
_this[i] = arr[i];
}
_this.length = arr.length;
// Return collection with methods
return this;
};
var $ = function (selector, context) {
var arr = [], i = 0;
if (selector && !context) {
if (selector instanceof Dom7) {
return selector;
}
}
if (selector) {
// String
if (typeof selector === 'string') {
var els, tempParent, html;
selector = html = selector.trim();
if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
var toCreate = 'div';
if (html.indexOf('<li') === 0) toCreate = 'ul';
if (html.indexOf('<tr') === 0) toCreate = 'tbody';
if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';
if (html.indexOf('<tbody') === 0) toCreate = 'table';
if (html.indexOf('<option') === 0) toCreate = 'select';
tempParent = document.createElement(toCreate);
tempParent.innerHTML = html;
for (i = 0; i < tempParent.childNodes.length; i++) {
arr.push(tempParent.childNodes[i]);
}
}
else {
if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {
// Pure ID selector
els = [document.getElementById(selector.split('#')[1])];
}
else {
// Other selectors
els = (context || document).querySelectorAll(selector);
}
for (i = 0; i < els.length; i++) {
if (els[i]) arr.push(els[i]);
}
}
}
// Node/element
else if (selector.nodeType || selector === window || selector === document) {
arr.push(selector);
}
//Array of elements or instance of Dom
else if (selector.length > 0 && selector[0].nodeType) {
for (i = 0; i < selector.length; i++) {
arr.push(selector[i]);
}
}
}
return new Dom7(arr);
};

View file

@ -1,783 +0,0 @@
Dom7.prototype = {
// Classes and attriutes
addClass: function (className) {
if (typeof className === 'undefined') {
return this;
}
var classes = className.split(' ');
for (var i = 0; i < classes.length; i++) {
for (var j = 0; j < this.length; j++) {
if (typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);
}
}
return this;
},
removeClass: function (className) {
var classes = className.split(' ');
for (var i = 0; i < classes.length; i++) {
for (var j = 0; j < this.length; j++) {
if (typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);
}
}
return this;
},
hasClass: function (className) {
if (!this[0]) return false;
else return this[0].classList.contains(className);
},
toggleClass: function (className) {
var classes = className.split(' ');
for (var i = 0; i < classes.length; i++) {
for (var j = 0; j < this.length; j++) {
if (typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);
}
}
return this;
},
attr: function (attrs, value) {
if (arguments.length === 1 && typeof attrs === 'string') {
// Get attr
if (this[0]) return this[0].getAttribute(attrs);
else return undefined;
}
else {
// Set attrs
for (var i = 0; i < this.length; i++) {
if (arguments.length === 2) {
// String
this[i].setAttribute(attrs, value);
}
else {
// Object
for (var attrName in attrs) {
this[i][attrName] = attrs[attrName];
this[i].setAttribute(attrName, attrs[attrName]);
}
}
}
return this;
}
},
removeAttr: function (attr) {
for (var i = 0; i < this.length; i++) {
this[i].removeAttribute(attr);
}
return this;
},
prop: function (props, value) {
if (arguments.length === 1 && typeof props === 'string') {
// Get prop
if (this[0]) return this[0][props];
else return undefined;
}
else {
// Set props
for (var i = 0; i < this.length; i++) {
if (arguments.length === 2) {
// String
this[i][props] = value;
}
else {
// Object
for (var propName in props) {
this[i][propName] = props[propName];
}
}
}
return this;
}
},
data: function (key, value) {
if (typeof value === 'undefined') {
// Get value
if (this[0]) {
if (this[0].dom7ElementDataStorage && (key in this[0].dom7ElementDataStorage)) {
return this[0].dom7ElementDataStorage[key];
}
else {
var dataKey = this[0].getAttribute('data-' + key);
if (dataKey) {
return dataKey;
}
else return undefined;
}
}
else return undefined;
}
else {
// Set value
for (var i = 0; i < this.length; i++) {
var el = this[i];
if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};
el.dom7ElementDataStorage[key] = value;
}
return this;
}
},
removeData: function(key) {
for (var i = 0; i < this.length; i++) {
var el = this[i];
if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {
el.dom7ElementDataStorage[key] = null;
delete el.dom7ElementDataStorage[key];
}
}
},
dataset: function () {
var el = this[0];
if (el) {
var dataset = {};
if (el.dataset) {
for (var dataKey in el.dataset) {
dataset[dataKey] = el.dataset[dataKey];
}
}
else {
for (var i = 0; i < el.attributes.length; i++) {
var attr = el.attributes[i];
if (attr.name.indexOf('data-') >= 0) {
dataset[$.toCamelCase(attr.name.split('data-')[1])] = attr.value;
}
}
}
for (var key in dataset) {
if (dataset[key] === 'false') dataset[key] = false;
else if (dataset[key] === 'true') dataset[key] = true;
else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] = dataset[key] * 1;
}
return dataset;
}
else return undefined;
},
val: function (value) {
if (typeof value === 'undefined') {
if (this[0]) return this[0].value;
else return undefined;
}
else {
for (var i = 0; i < this.length; i++) {
this[i].value = value;
}
return this;
}
},
// Transforms
transform : function (transform) {
for (var i = 0; i < this.length; i++) {
var elStyle = this[i].style;
elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform;
}
return this;
},
transition: function (duration) {
if (typeof duration !== 'string') {
duration = duration + 'ms';
}
for (var i = 0; i < this.length; i++) {
var elStyle = this[i].style;
elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration;
}
return this;
},
//Events
on: function (eventName, targetSelector, listener, capture) {
function handleLiveEvent(e) {
var target = e.target;
if ($(target).is(targetSelector)) listener.call(target, e);
else {
var parents = $(target).parents();
for (var k = 0; k < parents.length; k++) {
if ($(parents[k]).is(targetSelector)) listener.call(parents[k], e);
}
}
}
var events = eventName.split(' ');
var i, j;
for (i = 0; i < this.length; i++) {
if (typeof targetSelector === 'function' || targetSelector === false) {
// Usual events
if (typeof targetSelector === 'function') {
listener = arguments[1];
capture = arguments[2] || false;
}
for (j = 0; j < events.length; j++) {
this[i].addEventListener(events[j], listener, capture);
}
}
else {
//Live events
for (j = 0; j < events.length; j++) {
if (!this[i].dom7LiveListeners) this[i].dom7LiveListeners = [];
this[i].dom7LiveListeners.push({listener: listener, liveListener: handleLiveEvent});
this[i].addEventListener(events[j], handleLiveEvent, capture);
}
}
}
return this;
},
off: function (eventName, targetSelector, listener, capture) {
var events = eventName.split(' ');
for (var i = 0; i < events.length; i++) {
for (var j = 0; j < this.length; j++) {
if (typeof targetSelector === 'function' || targetSelector === false) {
// Usual events
if (typeof targetSelector === 'function') {
listener = arguments[1];
capture = arguments[2] || false;
}
this[j].removeEventListener(events[i], listener, capture);
}
else {
// Live event
if (this[j].dom7LiveListeners) {
for (var k = 0; k < this[j].dom7LiveListeners.length; k++) {
if (this[j].dom7LiveListeners[k].listener === listener) {
this[j].removeEventListener(events[i], this[j].dom7LiveListeners[k].liveListener, capture);
}
}
}
}
}
}
return this;
},
once: function (eventName, targetSelector, listener, capture) {
var dom = this;
if (typeof targetSelector === 'function') {
listener = arguments[1];
capture = arguments[2];
targetSelector = false;
}
function proxy(e) {
listener.call(e.target, e);
dom.off(eventName, targetSelector, proxy, capture);
}
return dom.on(eventName, targetSelector, proxy, capture);
},
trigger: function (eventName, eventData) {
var events = eventName.split(' ');
for (var i = 0; i < events.length; i++) {
for (var j = 0; j < this.length; j++) {
var evt;
try {
evt = new CustomEvent(events[i], {detail: eventData, bubbles: true, cancelable: true});
}
catch (e) {
evt = document.createEvent('Event');
evt.initEvent(events[i], true, true);
evt.detail = eventData;
}
this[j].dispatchEvent(evt);
}
}
return this;
},
transitionEnd: function (callback) {
var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],
i, j, dom = this;
function fireCallBack(e) {
/*jshint validthis:true */
if (e.target !== this) return;
callback.call(this, e);
for (i = 0; i < events.length; i++) {
dom.off(events[i], fireCallBack);
}
}
if (callback) {
for (i = 0; i < events.length; i++) {
dom.on(events[i], fireCallBack);
}
}
return this;
},
animationEnd: function (callback) {
var events = ['webkitAnimationEnd', 'OAnimationEnd', 'MSAnimationEnd', 'animationend'],
i, j, dom = this;
function fireCallBack(e) {
callback(e);
for (i = 0; i < events.length; i++) {
dom.off(events[i], fireCallBack);
}
}
if (callback) {
for (i = 0; i < events.length; i++) {
dom.on(events[i], fireCallBack);
}
}
return this;
},
// Sizing/Styles
width: function () {
if (this[0] === window) {
return window.innerWidth;
}
else {
if (this.length > 0) {
return parseFloat(this.css('width'));
}
else {
return null;
}
}
},
outerWidth: function (includeMargins) {
if (this.length > 0) {
if (includeMargins) {
var styles = this.styles();
return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));
}
else
return this[0].offsetWidth;
}
else return null;
},
height: function () {
if (this[0] === window) {
return window.innerHeight;
}
else {
if (this.length > 0) {
return parseFloat(this.css('height'));
}
else {
return null;
}
}
},
outerHeight: function (includeMargins) {
if (this.length > 0) {
if (includeMargins) {
var styles = this.styles();
return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));
}
else
return this[0].offsetHeight;
}
else return null;
},
offset: function () {
if (this.length > 0) {
var el = this[0];
var box = el.getBoundingClientRect();
var body = document.body;
var clientTop = el.clientTop || body.clientTop || 0;
var clientLeft = el.clientLeft || body.clientLeft || 0;
var scrollTop = window.pageYOffset || el.scrollTop;
var scrollLeft = window.pageXOffset || el.scrollLeft;
return {
top: box.top + scrollTop - clientTop,
left: box.left + scrollLeft - clientLeft
};
}
else {
return null;
}
},
hide: function () {
for (var i = 0; i < this.length; i++) {
this[i].style.display = 'none';
}
return this;
},
show: function () {
for (var i = 0; i < this.length; i++) {
this[i].style.display = 'block';
}
return this;
},
styles: function () {
var i, styles;
if (this[0]) return window.getComputedStyle(this[0], null);
else return undefined;
},
css: function (props, value) {
var i;
if (arguments.length === 1) {
if (typeof props === 'string') {
if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);
}
else {
for (i = 0; i < this.length; i++) {
for (var prop in props) {
this[i].style[prop] = props[prop];
}
}
return this;
}
}
if (arguments.length === 2 && typeof props === 'string') {
for (i = 0; i < this.length; i++) {
this[i].style[props] = value;
}
return this;
}
return this;
},
//Dom manipulation
each: function (callback) {
for (var i = 0; i < this.length; i++) {
callback.call(this[i], i, this[i]);
}
return this;
},
filter: function (callback) {
var matchedItems = [];
var dom = this;
for (var i = 0; i < dom.length; i++) {
if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);
}
return new Dom7(matchedItems);
},
html: function (html) {
if (typeof html === 'undefined') {
return this[0] ? this[0].innerHTML : undefined;
}
else {
for (var i = 0; i < this.length; i++) {
this[i].innerHTML = html;
}
return this;
}
},
text: function (text) {
if (typeof text === 'undefined') {
if (this[0]) {
return this[0].textContent.trim();
}
else return null;
}
else {
for (var i = 0; i < this.length; i++) {
this[i].textContent = text;
}
return this;
}
},
is: function (selector) {
if (!this[0] || typeof selector === 'undefined') return false;
var compareWith, i;
if (typeof selector === 'string') {
var el = this[0];
if (el === document) return selector === document;
if (el === window) return selector === window;
if (el.matches) return el.matches(selector);
else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);
else if (el.mozMatchesSelector) return el.mozMatchesSelector(selector);
else if (el.msMatchesSelector) return el.msMatchesSelector(selector);
else {
compareWith = $(selector);
for (i = 0; i < compareWith.length; i++) {
if (compareWith[i] === this[0]) return true;
}
return false;
}
}
else if (selector === document) return this[0] === document;
else if (selector === window) return this[0] === window;
else {
if (selector.nodeType || selector instanceof Dom7) {
compareWith = selector.nodeType ? [selector] : selector;
for (i = 0; i < compareWith.length; i++) {
if (compareWith[i] === this[0]) return true;
}
return false;
}
return false;
}
},
indexOf: function (el) {
for (var i = 0; i < this.length; i++) {
if (this[i] === el) return i;
}
},
index: function () {
if (this[0]) {
var child = this[0];
var i = 0;
while ((child = child.previousSibling) !== null) {
if (child.nodeType === 1) i++;
}
return i;
}
else return undefined;
},
eq: function (index) {
if (typeof index === 'undefined') return this;
var length = this.length;
var returnIndex;
if (index > length - 1) {
return new Dom7([]);
}
if (index < 0) {
returnIndex = length + index;
if (returnIndex < 0) return new Dom7([]);
else return new Dom7([this[returnIndex]]);
}
return new Dom7([this[index]]);
},
append: function (newChild) {
var i, j;
for (i = 0; i < this.length; i++) {
if (typeof newChild === 'string') {
var tempDiv = document.createElement('div');
tempDiv.innerHTML = newChild;
while (tempDiv.firstChild) {
this[i].appendChild(tempDiv.firstChild);
}
}
else if (newChild instanceof Dom7) {
for (j = 0; j < newChild.length; j++) {
this[i].appendChild(newChild[j]);
}
}
else {
this[i].appendChild(newChild);
}
}
return this;
},
appendTo: function (parent) {
$(parent).append(this);
return this;
},
prepend: function (newChild) {
var i, j;
for (i = 0; i < this.length; i++) {
if (typeof newChild === 'string') {
var tempDiv = document.createElement('div');
tempDiv.innerHTML = newChild;
for (j = tempDiv.childNodes.length - 1; j >= 0; j--) {
this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
}
// this[i].insertAdjacentHTML('afterbegin', newChild);
}
else if (newChild instanceof Dom7) {
for (j = 0; j < newChild.length; j++) {
this[i].insertBefore(newChild[j], this[i].childNodes[0]);
}
}
else {
this[i].insertBefore(newChild, this[i].childNodes[0]);
}
}
return this;
},
prependTo: function (parent) {
$(parent).prepend(this);
return this;
},
insertBefore: function (selector) {
var before = $(selector);
for (var i = 0; i < this.length; i++) {
if (before.length === 1) {
before[0].parentNode.insertBefore(this[i], before[0]);
}
else if (before.length > 1) {
for (var j = 0; j < before.length; j++) {
before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);
}
}
}
},
insertAfter: function (selector) {
var after = $(selector);
for (var i = 0; i < this.length; i++) {
if (after.length === 1) {
after[0].parentNode.insertBefore(this[i], after[0].nextSibling);
}
else if (after.length > 1) {
for (var j = 0; j < after.length; j++) {
after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);
}
}
}
},
next: function (selector) {
if (this.length > 0) {
if (selector) {
if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) return new Dom7([this[0].nextElementSibling]);
else return new Dom7([]);
}
else {
if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);
else return new Dom7([]);
}
}
else return new Dom7([]);
},
nextAll: function (selector) {
var nextEls = [];
var el = this[0];
if (!el) return new Dom7([]);
while (el.nextElementSibling) {
var next = el.nextElementSibling;
if (selector) {
if($(next).is(selector)) nextEls.push(next);
}
else nextEls.push(next);
el = next;
}
return new Dom7(nextEls);
},
prev: function (selector) {
if (this.length > 0) {
if (selector) {
if (this[0].previousElementSibling && $(this[0].previousElementSibling).is(selector)) return new Dom7([this[0].previousElementSibling]);
else return new Dom7([]);
}
else {
if (this[0].previousElementSibling) return new Dom7([this[0].previousElementSibling]);
else return new Dom7([]);
}
}
else return new Dom7([]);
},
prevAll: function (selector) {
var prevEls = [];
var el = this[0];
if (!el) return new Dom7([]);
while (el.previousElementSibling) {
var prev = el.previousElementSibling;
if (selector) {
if($(prev).is(selector)) prevEls.push(prev);
}
else prevEls.push(prev);
el = prev;
}
return new Dom7(prevEls);
},
siblings: function (selector) {
return this.nextAll(selector).add(this.prevAll(selector));
},
parent: function (selector) {
var parents = [];
for (var i = 0; i < this.length; i++) {
if (this[i].parentNode !== null) {
if (selector) {
if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);
}
else {
parents.push(this[i].parentNode);
}
}
}
return $($.unique(parents));
},
parents: function (selector) {
var parents = [];
for (var i = 0; i < this.length; i++) {
var parent = this[i].parentNode;
while (parent) {
if (selector) {
if ($(parent).is(selector)) parents.push(parent);
}
else {
parents.push(parent);
}
parent = parent.parentNode;
}
}
return $($.unique(parents));
},
closest: function (selector) {
var closest = this;
if (typeof selector === 'undefined') {
return new Dom7([]);
}
if (!closest.is(selector)) {
closest = closest.parents(selector).eq(0);
}
return closest;
},
find : function (selector) {
var foundElements = [];
for (var i = 0; i < this.length; i++) {
var found = this[i].querySelectorAll(selector);
for (var j = 0; j < found.length; j++) {
foundElements.push(found[j]);
}
}
return new Dom7(foundElements);
},
children: function (selector) {
var children = [];
for (var i = 0; i < this.length; i++) {
var childNodes = this[i].childNodes;
for (var j = 0; j < childNodes.length; j++) {
if (!selector) {
if (childNodes[j].nodeType === 1) children.push(childNodes[j]);
}
else {
if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) children.push(childNodes[j]);
}
}
}
return new Dom7($.unique(children));
},
remove: function () {
for (var i = 0; i < this.length; i++) {
if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);
}
return this;
},
detach: function () {
return this.remove();
},
add: function () {
var dom = this;
var i, j;
for (i = 0; i < arguments.length; i++) {
var toAdd = $(arguments[i]);
for (j = 0; j < toAdd.length; j++) {
dom[dom.length] = toAdd[j];
dom.length++;
}
}
return dom;
},
empty: function () {
for (var i = 0; i < this.length; i++) {
var el = this[i];
if (el.nodeType === 1) {
for (var j = 0; j < el.childNodes.length; j++) {
if (el.childNodes[j].parentNode) el.childNodes[j].parentNode.removeChild(el.childNodes[j]);
}
el.textContent = '';
}
}
return this;
}
};
// Shortcuts
(function () {
var shortcuts = ('click blur focus focusin focusout keyup keydown keypress submit change mousedown mousemove mouseup mouseenter mouseleave mouseout mouseover touchstart touchend touchmove resize scroll').split(' ');
var notTrigger = ('resize scroll').split(' ');
function createMethod(name) {
Dom7.prototype[name] = function (targetSelector, listener, capture) {
var i;
if (typeof targetSelector === 'undefined') {
for (i = 0; i < this.length; i++) {
if (notTrigger.indexOf(name) < 0) {
if (name in this[i]) this[i][name]();
else {
$(this[i]).trigger(name);
}
}
}
return this;
}
else {
return this.on(name, targetSelector, listener, capture);
}
};
}
for (var i = 0; i < shortcuts.length; i++) {
createMethod(shortcuts[i]);
}
})();

View file

@ -1,11 +0,0 @@
return $;
})();
// Export Dom7 to Framework7
Framework7.$ = Dom7;
// Export to local scope
var $ = Dom7;
// Export to Window
window.Dom7 = Dom7;

View file

@ -1,393 +0,0 @@
// DOM Library Utilites
$.parseUrlQuery = function (url) {
var url = url || location.href;
var query = {}, i, params, param;
if (typeof url === 'string' && url.length) {
url = (url.indexOf('#') > -1) ? url.split('#')[0] : url;
if (url.indexOf('?') > -1) url = url.split('?')[1];
else return query;
params = url.split('&');
for (i = 0; i < params.length; i ++) {
param = params[i].split('=');
query[param[0]] = param[1];
}
}
return query;
};
$.isArray = function (arr) {
if (Object.prototype.toString.apply(arr) === '[object Array]') return true;
else return false;
};
$.each = function (obj, callback) {
if (typeof obj !== 'object') return;
if (!callback) return;
var i, prop;
if ($.isArray(obj) || obj instanceof Dom7) {
// Array
for (i = 0; i < obj.length; i++) {
callback(i, obj[i]);
}
}
else {
// Object
for (prop in obj) {
if (obj.hasOwnProperty(prop)) {
callback(prop, obj[prop]);
}
}
}
};
$.unique = function (arr) {
var unique = [];
for (var i = 0; i < arr.length; i++) {
if (unique.indexOf(arr[i]) === -1) unique.push(arr[i]);
}
return unique;
};
$.serializeObject = $.param = function (obj, parents) {
if (typeof obj === 'string') return obj;
var resultArray = [];
var separator = '&';
parents = parents || [];
var newParents;
function var_name(name) {
if (parents.length > 0) {
var _parents = '';
for (var j = 0; j < parents.length; j++) {
if (j === 0) _parents += parents[j];
else _parents += '[' + encodeURIComponent(parents[j]) + ']';
}
return _parents + '[' + encodeURIComponent(name) + ']';
}
else {
return encodeURIComponent(name);
}
}
function var_value(value) {
return encodeURIComponent(value);
}
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
var toPush;
if ($.isArray(obj[prop])) {
toPush = [];
for (var i = 0; i < obj[prop].length; i ++) {
if (!$.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {
newParents = parents.slice();
newParents.push(prop);
newParents.push(i + '');
toPush.push($.serializeObject(obj[prop][i], newParents));
}
else {
toPush.push(var_name(prop) + '[]=' + var_value(obj[prop][i]));
}
}
if (toPush.length > 0) resultArray.push(toPush.join(separator));
}
else if (obj[prop] === null) {
resultArray.push(var_name(prop) + '=');
}
else if (typeof obj[prop] === 'object') {
// Object, convert to named array
newParents = parents.slice();
newParents.push(prop);
toPush = $.serializeObject(obj[prop], newParents);
if (toPush !== '') resultArray.push(toPush);
}
else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {
// Should be string or plain value
resultArray.push(var_name(prop) + '=' + var_value(obj[prop]));
}
}
}
return resultArray.join(separator);
};
$.toCamelCase = function (string) {
return string.toLowerCase().replace(/-(.)/g, function(match, group1) {
return group1.toUpperCase();
});
};
$.dataset = function (el) {
return $(el).dataset();
};
$.getTranslate = function (el, axis) {
var matrix, curTransform, curStyle, transformMatrix;
// automatic axis detection
if (typeof axis === 'undefined') {
axis = 'x';
}
curStyle = window.getComputedStyle(el, null);
if (window.WebKitCSSMatrix) {
curTransform = curStyle.transform || curStyle.webkitTransform;
if (curTransform.split(',').length > 6) {
curTransform = curTransform.split(', ').map(function(a){
return a.replace(',','.');
}).join(', ');
}
// Some old versions of Webkit choke when 'none' is passed; pass
// empty string instead in this case
transformMatrix = new WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
}
else {
transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
matrix = transformMatrix.toString().split(',');
}
if (axis === 'x') {
//Latest Chrome and webkits Fix
if (window.WebKitCSSMatrix)
curTransform = transformMatrix.m41;
//Crazy IE10 Matrix
else if (matrix.length === 16)
curTransform = parseFloat(matrix[12]);
//Normal Browsers
else
curTransform = parseFloat(matrix[4]);
}
if (axis === 'y') {
//Latest Chrome and webkits Fix
if (window.WebKitCSSMatrix)
curTransform = transformMatrix.m42;
//Crazy IE10 Matrix
else if (matrix.length === 16)
curTransform = parseFloat(matrix[13]);
//Normal Browsers
else
curTransform = parseFloat(matrix[5]);
}
return curTransform || 0;
};
$.requestAnimationFrame = function (callback) {
if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);
else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);
else if (window.mozRequestAnimationFrame) return window.mozRequestAnimationFrame(callback);
else {
return window.setTimeout(callback, 1000 / 60);
}
};
$.cancelAnimationFrame = function (id) {
if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);
else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);
else if (window.mozCancelAnimationFrame) return window.mozCancelAnimationFrame(id);
else {
return window.clearTimeout(id);
}
};
$.supportTouch = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);
// Remove Diacritics
var defaultDiacriticsRemovalap = [
{base:'A', letters:'\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F'},
{base:'AA',letters:'\uA732'},
{base:'AE',letters:'\u00C6\u01FC\u01E2'},
{base:'AO',letters:'\uA734'},
{base:'AU',letters:'\uA736'},
{base:'AV',letters:'\uA738\uA73A'},
{base:'AY',letters:'\uA73C'},
{base:'B', letters:'\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181'},
{base:'C', letters:'\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E'},
{base:'D', letters:'\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779'},
{base:'DZ',letters:'\u01F1\u01C4'},
{base:'Dz',letters:'\u01F2\u01C5'},
{base:'E', letters:'\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E'},
{base:'F', letters:'\u0046\u24BB\uFF26\u1E1E\u0191\uA77B'},
{base:'G', letters:'\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E'},
{base:'H', letters:'\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D'},
{base:'I', letters:'\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197'},
{base:'J', letters:'\u004A\u24BF\uFF2A\u0134\u0248'},
{base:'K', letters:'\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2'},
{base:'L', letters:'\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780'},
{base:'LJ',letters:'\u01C7'},
{base:'Lj',letters:'\u01C8'},
{base:'M', letters:'\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C'},
{base:'N', letters:'\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4'},
{base:'NJ',letters:'\u01CA'},
{base:'Nj',letters:'\u01CB'},
{base:'O', letters:'\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C'},
{base:'OI',letters:'\u01A2'},
{base:'OO',letters:'\uA74E'},
{base:'OU',letters:'\u0222'},
{base:'OE',letters:'\u008C\u0152'},
{base:'oe',letters:'\u009C\u0153'},
{base:'P', letters:'\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754'},
{base:'Q', letters:'\u0051\u24C6\uFF31\uA756\uA758\u024A'},
{base:'R', letters:'\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782'},
{base:'S', letters:'\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784'},
{base:'T', letters:'\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786'},
{base:'TZ',letters:'\uA728'},
{base:'U', letters:'\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244'},
{base:'V', letters:'\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245'},
{base:'VY',letters:'\uA760'},
{base:'W', letters:'\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72'},
{base:'X', letters:'\u0058\u24CD\uFF38\u1E8A\u1E8C'},
{base:'Y', letters:'\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE'},
{base:'Z', letters:'\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762'},
{base:'a', letters:'\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250'},
{base:'aa',letters:'\uA733'},
{base:'ae',letters:'\u00E6\u01FD\u01E3'},
{base:'ao',letters:'\uA735'},
{base:'au',letters:'\uA737'},
{base:'av',letters:'\uA739\uA73B'},
{base:'ay',letters:'\uA73D'},
{base:'b', letters:'\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253'},
{base:'c', letters:'\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184'},
{base:'d', letters:'\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A'},
{base:'dz',letters:'\u01F3\u01C6'},
{base:'e', letters:'\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD'},
{base:'f', letters:'\u0066\u24D5\uFF46\u1E1F\u0192\uA77C'},
{base:'g', letters:'\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F'},
{base:'h', letters:'\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265'},
{base:'hv',letters:'\u0195'},
{base:'i', letters:'\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131'},
{base:'j', letters:'\u006A\u24D9\uFF4A\u0135\u01F0\u0249'},
{base:'k', letters:'\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3'},
{base:'l', letters:'\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747'},
{base:'lj',letters:'\u01C9'},
{base:'m', letters:'\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F'},
{base:'n', letters:'\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5'},
{base:'nj',letters:'\u01CC'},
{base:'o', letters:'\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275'},
{base:'oi',letters:'\u01A3'},
{base:'ou',letters:'\u0223'},
{base:'oo',letters:'\uA74F'},
{base:'p',letters:'\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755'},
{base:'q',letters:'\u0071\u24E0\uFF51\u024B\uA757\uA759'},
{base:'r',letters:'\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783'},
{base:'s',letters:'\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B'},
{base:'t',letters:'\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787'},
{base:'tz',letters:'\uA729'},
{base:'u',letters: '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289'},
{base:'v',letters:'\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C'},
{base:'vy',letters:'\uA761'},
{base:'w',letters:'\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73'},
{base:'x',letters:'\u0078\u24E7\uFF58\u1E8B\u1E8D'},
{base:'y',letters:'\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF'},
{base:'z',letters:'\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763'}
];
var diacriticsMap = {};
for (var i=0; i < defaultDiacriticsRemovalap.length; i++){
var letters = defaultDiacriticsRemovalap[i].letters;
for (var j=0; j < letters.length ; j++){
diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;
}
}
$.removeDiacritics = function (str) {
return str.replace(/[^\u0000-\u007E]/g, function(a){
return diacriticsMap[a] || a;
});
};
// Link to prototype
$.fn = Dom7.prototype;
// Plugins
$.fn.scrollTo = function (left, top, duration, easing, callback) {
if (arguments.length === 4 && typeof easing === 'function') {
callback = easing;
easing = undefined;
}
return this.each(function () {
var el = this;
var currentTop, currentLeft, maxTop, maxLeft, newTop, newLeft, scrollTop, scrollLeft;
var animateTop = top > 0 || top === 0;
var animateLeft = left > 0 || left === 0;
if (typeof easing === 'undefined') {
easing = 'swing';
}
if (animateTop) {
currentTop = el.scrollTop;
if (!duration) {
el.scrollTop = top;
}
}
if (animateLeft) {
currentLeft = el.scrollLeft;
if (!duration) {
el.scrollLeft = left;
}
}
if (!duration) return;
if (animateTop) {
maxTop = el.scrollHeight - el.offsetHeight;
newTop = Math.max(Math.min(top, maxTop), 0);
}
if (animateLeft) {
maxLeft = el.scrollWidth - el.offsetWidth;
newLeft = Math.max(Math.min(left, maxLeft), 0);
}
var startTime = null;
if (animateTop && newTop === currentTop) animateTop = false;
if (animateLeft && newLeft === currentLeft) animateLeft = false;
function render(time) {
if (time === undefined) {
time = new Date().getTime();
}
if (startTime === null) {
startTime = time;
}
var doneLeft, doneTop, done;
var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
var easeProgress = easing === 'linear' ? progress : (0.5 - Math.cos( progress * Math.PI ) / 2);
if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));
if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));
if (animateTop && newTop > currentTop && scrollTop >= newTop) {
el.scrollTop = newTop;
done = true;
}
if (animateTop && newTop < currentTop && scrollTop <= newTop) {
el.scrollTop = newTop;
done = true;
}
if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {
el.scrollLeft = newLeft;
done = true;
}
if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {
el.scrollLeft = newLeft;
done = true;
}
if (done) {
if (callback) callback();
return;
}
if (animateTop) el.scrollTop = scrollTop;
if (animateLeft) el.scrollLeft = scrollLeft;
$.requestAnimationFrame(render);
}
$.requestAnimationFrame(render);
});
};
$.fn.scrollTop = function (top, duration, easing, callback) {
if (arguments.length === 3 && typeof easing === 'function') {
callback = easing;
easing = undefined;
}
var dom = this;
if (typeof top === 'undefined') {
if (dom.length > 0) return dom[0].scrollTop;
else return null;
}
return dom.scrollTo(undefined, top, duration, easing, callback);
};
$.fn.scrollLeft = function (left, duration, easing, callback) {
if (arguments.length === 3 && typeof easing === 'function') {
callback = easing;
easing = undefined;
}
var dom = this;
if (typeof left === 'undefined') {
if (dom.length > 0) return dom[0].scrollLeft;
else return null;
}
return dom.scrollTo(left, undefined, duration, easing, callback);
};

View file

@ -1,173 +0,0 @@
'use strict';
/*===========================
Framework 7
===========================*/
window.Framework7 = function (params) {
// App
var app = this;
// Version
app.version = '1.5.0';
// Default Parameters
app.params = {
//
root: 'body',
//
cache: true,
cacheIgnore: [],
cacheIgnoreGetParameters: false,
cacheDuration: 1000 * 60 * 10, // Ten minutes
preloadPreviousPage: true,
uniqueHistory: false,
uniqueHistoryIgnoreGetParameters: false,
dynamicPageUrl: 'content-{{index}}',
allowDuplicateUrls: false,
router: true,
routerRemoveTimeout: false,
routerRemoveWithTimeout: false,
// Push State
pushState: false,
pushStateRoot: undefined,
pushStateNoAnimation: false,
pushStateSeparator: '#!/',
pushStateOnLoad: true,
// Fast clicks
fastClicks: true,
fastClicksDistanceThreshold: 10,
fastClicksDelayBetweenClicks: 50,
fastClicksExclude: '', // CSS selector
// Tap Hold
tapHold: false,
tapHoldDelay: 750,
tapHoldPreventClicks: true,
// Active State
activeState: true,
activeStateElements: 'a, button, label, span',
// Animate Nav Back Icon
animateNavBackIcon: false,
// Swipe Back
swipeBackPage: true,
swipeBackPageThreshold: 0,
swipeBackPageActiveArea: 30,
swipeBackPageAnimateShadow: true,
swipeBackPageAnimateOpacity: true,
// Ajax
ajaxLinks: undefined, // or CSS selector
// External Links
externalLinks: '.external', // CSS selector
// Sortable
sortable: true,
// Scroll toolbars
hideNavbarOnPageScroll: false,
hideToolbarOnPageScroll: false,
hideTabbarOnPageScroll: false,
showBarsOnPageScrollEnd: true,
showBarsOnPageScrollTop: true,
// Swipeout
swipeout: true,
swipeoutActionsNoFold: false,
swipeoutNoFollow: false,
swipeoutRemoveWithTimeout: false,
// Smart Select Back link template
smartSelectOpenIn: 'page', // or 'popup' or 'picker'
smartSelectBackText: 'Back',
smartSelectPopupCloseText: 'Close',
smartSelectPickerCloseText: 'Done',
smartSelectSearchbar: false,
smartSelectBackOnSelect: false,
// Tap Navbar or Statusbar to scroll to top
scrollTopOnNavbarClick: false,
scrollTopOnStatusbarClick: false,
// Panels
swipePanel: false, // or 'left' or 'right'
swipePanelActiveArea: 0,
swipePanelCloseOpposite: true,
swipePanelOnlyClose: false,
swipePanelNoFollow: false,
swipePanelThreshold: 0,
panelsCloseByOutside: true,
// Modals
modalButtonOk: 'OK',
modalButtonCancel: 'Cancel',
modalUsernamePlaceholder: 'Username',
modalPasswordPlaceholder: 'Password',
modalTitle: 'Framework7',
modalCloseByOutside: false,
actionsCloseByOutside: true,
popupCloseByOutside: true,
modalPreloaderTitle: 'Loading... ',
modalStack: true,
// Lazy Load
imagesLazyLoadThreshold: 0,
imagesLazyLoadSequential: true,
// Name space
viewClass: 'view',
viewMainClass: 'view-main',
viewsClass: 'views',
// Notifications defaults
notificationCloseOnClick: false,
notificationCloseIcon: true,
notificationCloseButtonText: 'Close',
// Animate Pages
animatePages: true,
// Template7
templates: {},
template7Data: {},
template7Pages: false,
precompileTemplates: false,
// Material
material: false,
materialPageLoadDelay: 0,
materialPreloaderSvg: '<svg xmlns="http://www.w3.org/2000/svg" height="75" width="75" viewbox="0 0 75 75"><circle cx="37.5" cy="37.5" r="33.5" stroke-width="8"/></svg>',
materialPreloaderHtml:
'<span class="preloader-inner">' +
'<span class="preloader-inner-gap"></span>' +
'<span class="preloader-inner-left">' +
'<span class="preloader-inner-half-circle"></span>' +
'</span>' +
'<span class="preloader-inner-right">' +
'<span class="preloader-inner-half-circle"></span>' +
'</span>' +
'</span>',
materialRipple: true,
materialRippleElements: '.ripple, a.link, a.item-link, .button, .modal-button, .tab-link, .label-radio, .label-checkbox, .actions-modal-button, a.searchbar-clear, a.floating-button, .floating-button > a, .speed-dial-buttons a',
// Auto init
init: true,
};
// Extend defaults with parameters
for (var param in params) {
app.params[param] = params[param];
}
// DOM lib
var $ = Dom7;
// Template7 lib
var t7 = Template7;
app._compiledTemplates = {};
// App Root
app.root = $(app.params.root);
app.root.eq(0).addClass('framework7-root');
// Touch events
app.touchEvents = {
start: app.support.touch ? 'touchstart' : 'mousedown',
move: app.support.touch ? 'touchmove' : 'mousemove',
end: app.support.touch ? 'touchend' : 'mouseup'
};
// Link to local storage
app.ls = window.localStorage;
// RTL
app.rtl = $('body').css('direction') === 'rtl';
if (app.rtl) $('html').attr('dir', 'rtl');
// Overwrite statusbar overlay
if (typeof app.params.statusbarOverlay !== 'undefined') {
if (app.params.statusbarOverlay) $('html').addClass('with-statusbar-overlay');
else $('html').removeClass('with-statusbar-overlay');
}

View file

@ -1,3 +0,0 @@
//Return instance
return app;
};

View file

@ -1,537 +0,0 @@
/*===============================================================================
************ Fast Clicks ************
************ Inspired by https://github.com/ftlabs/fastclick ************
===============================================================================*/
app.initFastClicks = function () {
if (app.params.activeState) {
$('html').addClass('watch-active-state');
}
if (app.device.ios && app.device.webView) {
// Strange hack required for iOS 8 webview to work on inputs
window.addEventListener('touchstart', function () {});
}
var touchStartX, touchStartY, touchStartTime, targetElement, trackClick, activeSelection, scrollParent, lastClickTime, isMoved, tapHoldFired, tapHoldTimeout;
var activableElement, activeTimeout, needsFastClick, needsFastClickTimeOut;
var rippleWave, rippleTarget, rippleTransform, rippleTimeout;
function findActivableElement(el) {
var target = $(el);
var parents = target.parents(app.params.activeStateElements);
var activable;
if (target.is(app.params.activeStateElements)) {
activable = target;
}
if (parents.length > 0) {
activable = activable ? activable.add(parents) : parents;
}
return activable ? activable : target;
}
function isInsideScrollableView(el) {
var pageContent = el.parents('.page-content, .panel');
if (pageContent.length === 0) {
return false;
}
// This event handler covers the "tap to stop scrolling".
if (pageContent.prop('scrollHandlerSet') !== 'yes') {
pageContent.on('scroll', function() {
clearTimeout(activeTimeout);
clearTimeout(rippleTimeout);
});
pageContent.prop('scrollHandlerSet', 'yes');
}
return true;
}
function addActive() {
if (!activableElement) return;
activableElement.addClass('active-state');
}
function removeActive(el) {
if (!activableElement) return;
activableElement.removeClass('active-state');
activableElement = null;
}
function isFormElement(el) {
var nodes = ('input select textarea label').split(' ');
if (el.nodeName && nodes.indexOf(el.nodeName.toLowerCase()) >= 0) return true;
return false;
}
function androidNeedsBlur(el) {
var noBlur = ('button input textarea select').split(' ');
if (document.activeElement && el !== document.activeElement && document.activeElement !== document.body) {
if (noBlur.indexOf(el.nodeName.toLowerCase()) >= 0) {
return false;
}
else {
return true;
}
}
else {
return false;
}
}
function targetNeedsFastClick(el) {
var $el = $(el);
if (el.nodeName.toLowerCase() === 'input' && el.type === 'file') return false;
if (el.nodeName.toLowerCase() === 'select' && app.device.android) return false;
if ($el.hasClass('no-fastclick') || $el.parents('.no-fastclick').length > 0) return false;
if (app.params.fastClicksExclude && $el.is(app.params.fastClicksExclude)) return false;
return true;
}
function targetNeedsFocus(el) {
if (document.activeElement === el) {
return false;
}
var tag = el.nodeName.toLowerCase();
var skipInputs = ('button checkbox file image radio submit').split(' ');
if (el.disabled || el.readOnly) return false;
if (tag === 'textarea') return true;
if (tag === 'select') {
if (app.device.android) return false;
else return true;
}
if (tag === 'input' && skipInputs.indexOf(el.type) < 0) return true;
}
function targetNeedsPrevent(el) {
el = $(el);
var prevent = true;
if (el.is('label') || el.parents('label').length > 0) {
if (app.device.android) {
prevent = false;
}
else if (app.device.ios && el.is('input')) {
prevent = true;
}
else prevent = false;
}
return prevent;
}
// Mouse Handlers
function handleMouseDown (e) {
findActivableElement(e.target).addClass('active-state');
if ('which' in e && e.which === 3) {
setTimeout(function () {
$('.active-state').removeClass('active-state');
}, 0);
}
if (app.params.material && app.params.materialRipple) {
touchStartX = e.pageX;
touchStartY = e.pageY;
rippleTouchStart(e.target, e.pageX, e.pageY);
}
}
function handleMouseMove (e) {
$('.active-state').removeClass('active-state');
if (app.params.material && app.params.materialRipple) {
rippleTouchMove();
}
}
function handleMouseUp (e) {
$('.active-state').removeClass('active-state');
if (app.params.material && app.params.materialRipple) {
rippleTouchEnd();
}
}
// Material Touch Ripple Effect
function findRippleElement(el) {
var needsRipple = app.params.materialRippleElements;
var $el = $(el);
if ($el.is(needsRipple)) {
if ($el.hasClass('no-ripple')) {
return false;
}
return $el;
}
else if ($el.parents(needsRipple).length > 0) {
var rippleParent = $el.parents(needsRipple).eq(0);
if (rippleParent.hasClass('no-ripple')) {
return false;
}
return rippleParent;
}
else return false;
}
function createRipple(x, y, el) {
var box = el[0].getBoundingClientRect();
var center = {
x: x - box.left,
y: y - box.top
},
height = box.height,
width = box.width;
var diameter = Math.max(Math.pow((Math.pow(height, 2) + Math.pow(width, 2)), 0.5), 48);
rippleWave = $(
'<div class="ripple-wave" style="width: ' + diameter + 'px; height: '+diameter+'px; margin-top:-'+diameter/2+'px; margin-left:-'+diameter/2+'px; left:'+center.x+'px; top:'+center.y+'px;"></div>'
);
el.prepend(rippleWave);
var clientLeft = rippleWave[0].clientLeft;
rippleTransform = 'translate3d('+(-center.x + width/2)+'px, '+(-center.y + height/2)+'px, 0) scale(1)';
rippleWave.transform(rippleTransform);
}
function removeRipple() {
if (!rippleWave) return;
var toRemove = rippleWave;
var removeTimeout = setTimeout(function () {
toRemove.remove();
}, 400);
rippleWave
.addClass('ripple-wave-fill')
.transform(rippleTransform.replace('scale(1)', 'scale(1.01)'))
.transitionEnd(function () {
clearTimeout(removeTimeout);
var rippleWave = $(this)
.addClass('ripple-wave-out')
.transform(rippleTransform.replace('scale(1)', 'scale(1.01)'));
removeTimeout = setTimeout(function () {
rippleWave.remove();
}, 700);
setTimeout(function () {
rippleWave.transitionEnd(function(){
clearTimeout(removeTimeout);
$(this).remove();
});
}, 0);
});
rippleWave = rippleTarget = undefined;
}
function rippleTouchStart (el, x, y) {
rippleTarget = findRippleElement(el);
if (!rippleTarget || rippleTarget.length === 0) {
rippleTarget = undefined;
return;
}
if (!isInsideScrollableView(rippleTarget)) {
createRipple(touchStartX, touchStartY, rippleTarget);
}
else {
rippleTimeout = setTimeout(function () {
createRipple(touchStartX, touchStartY, rippleTarget);
}, 80);
}
}
function rippleTouchMove() {
clearTimeout(rippleTimeout);
removeRipple();
}
function rippleTouchEnd() {
if (rippleWave) {
removeRipple();
}
else if (rippleTarget && !isMoved) {
clearTimeout(rippleTimeout);
createRipple(touchStartX, touchStartY, rippleTarget);
setTimeout(removeRipple, 0);
}
else {
removeRipple();
}
}
// Send Click
function sendClick(e) {
var touch = e.changedTouches[0];
var evt = document.createEvent('MouseEvents');
var eventType = 'click';
if (app.device.android && targetElement.nodeName.toLowerCase() === 'select') {
eventType = 'mousedown';
}
evt.initMouseEvent(eventType, true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);
evt.forwardedTouchEvent = true;
targetElement.dispatchEvent(evt);
}
// Touch Handlers
function handleTouchStart(e) {
isMoved = false;
tapHoldFired = false;
if (e.targetTouches.length > 1) {
if (activableElement) removeActive();
return true;
}
if (e.touches.length > 1 && activableElement) {
removeActive();
}
if (app.params.tapHold) {
if (tapHoldTimeout) clearTimeout(tapHoldTimeout);
tapHoldTimeout = setTimeout(function () {
if (e && e.touches && e.touches.length > 1) return;
tapHoldFired = true;
e.preventDefault();
$(e.target).trigger('taphold');
}, app.params.tapHoldDelay);
}
if (needsFastClickTimeOut) clearTimeout(needsFastClickTimeOut);
needsFastClick = targetNeedsFastClick(e.target);
if (!needsFastClick) {
trackClick = false;
return true;
}
if (app.device.ios || (app.device.android && 'getSelection' in window)) {
var selection = window.getSelection();
if (selection.rangeCount && selection.focusNode !== document.body && (!selection.isCollapsed || document.activeElement === selection.focusNode)) {
activeSelection = true;
return true;
}
else {
activeSelection = false;
}
}
if (app.device.android) {
if (androidNeedsBlur(e.target)) {
document.activeElement.blur();
}
}
trackClick = true;
targetElement = e.target;
touchStartTime = (new Date()).getTime();
touchStartX = e.targetTouches[0].pageX;
touchStartY = e.targetTouches[0].pageY;
// Detect scroll parent
if (app.device.ios) {
scrollParent = undefined;
$(targetElement).parents().each(function () {
var parent = this;
if (parent.scrollHeight > parent.offsetHeight && !scrollParent) {
scrollParent = parent;
scrollParent.f7ScrollTop = scrollParent.scrollTop;
}
});
}
if ((e.timeStamp - lastClickTime) < app.params.fastClicksDelayBetweenClicks) {
e.preventDefault();
}
if (app.params.activeState) {
activableElement = findActivableElement(targetElement);
// If it's inside a scrollable view, we don't trigger active-state yet,
// because it can be a scroll instead. Based on the link:
// http://labnote.beedesk.com/click-scroll-and-pseudo-active-on-mobile-webk
if (!isInsideScrollableView(activableElement)) {
addActive();
} else {
activeTimeout = setTimeout(addActive, 80);
}
}
if (app.params.material && app.params.materialRipple) {
rippleTouchStart(targetElement, touchStartX, touchStartY);
}
}
function handleTouchMove(e) {
if (!trackClick) return;
var _isMoved = false;
var distance = app.params.fastClicksDistanceThreshold;
if (distance) {
var pageX = e.targetTouches[0].pageX;
var pageY = e.targetTouches[0].pageY;
if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {
_isMoved = true;
}
}
else {
_isMoved = true;
}
if (_isMoved) {
trackClick = false;
targetElement = null;
isMoved = true;
if (app.params.tapHold) {
clearTimeout(tapHoldTimeout);
}
if (app.params.activeState) {
clearTimeout(activeTimeout);
removeActive();
}
if (app.params.material && app.params.materialRipple) {
rippleTouchMove();
}
}
}
function handleTouchEnd(e) {
clearTimeout(activeTimeout);
clearTimeout(tapHoldTimeout);
if (!trackClick) {
if (!activeSelection && needsFastClick) {
if (!(app.device.android && !e.cancelable)) {
e.preventDefault();
}
}
return true;
}
if (document.activeElement === e.target) {
if (app.params.activeState) removeActive();
if (app.params.material && app.params.materialRipple) {
rippleTouchEnd();
}
return true;
}
if (!activeSelection) {
e.preventDefault();
}
if ((e.timeStamp - lastClickTime) < app.params.fastClicksDelayBetweenClicks) {
setTimeout(removeActive, 0);
return true;
}
lastClickTime = e.timeStamp;
trackClick = false;
if (app.device.ios && scrollParent) {
if (scrollParent.scrollTop !== scrollParent.f7ScrollTop) {
return false;
}
}
// Add active-state here because, in a very fast tap, the timeout didn't
// have the chance to execute. Removing active-state in a timeout gives
// the chance to the animation execute.
if (app.params.activeState) {
addActive();
setTimeout(removeActive, 0);
}
// Remove Ripple
if (app.params.material && app.params.materialRipple) {
rippleTouchEnd();
}
// Trigger focus when required
if (targetNeedsFocus(targetElement)) {
if (app.device.ios && app.device.webView) {
if ((event.timeStamp - touchStartTime) > 159) {
targetElement = null;
return false;
}
targetElement.focus();
return false;
}
else {
targetElement.focus();
}
}
// Blur active elements
if (document.activeElement && targetElement !== document.activeElement && document.activeElement !== document.body && targetElement.nodeName.toLowerCase() !== 'label') {
document.activeElement.blur();
}
// Send click
e.preventDefault();
sendClick(e);
return false;
}
function handleTouchCancel(e) {
trackClick = false;
targetElement = null;
// Remove Active State
clearTimeout(activeTimeout);
clearTimeout(tapHoldTimeout);
if (app.params.activeState) {
removeActive();
}
// Remove Ripple
if (app.params.material && app.params.materialRipple) {
rippleTouchEnd();
}
}
function handleClick(e) {
var allowClick = false;
if (trackClick) {
targetElement = null;
trackClick = false;
return true;
}
if (e.target.type === 'submit' && e.detail === 0) {
return true;
}
if (!targetElement) {
if (!isFormElement(e.target)) {
allowClick = true;
}
}
if (!needsFastClick) {
allowClick = true;
}
if (document.activeElement === targetElement) {
allowClick = true;
}
if (e.forwardedTouchEvent) {
allowClick = true;
}
if (!e.cancelable) {
allowClick = true;
}
if (app.params.tapHold && app.params.tapHoldPreventClicks && tapHoldFired) {
allowClick = false;
}
if (!allowClick) {
e.stopImmediatePropagation();
e.stopPropagation();
if (targetElement) {
if (targetNeedsPrevent(targetElement) || isMoved) {
e.preventDefault();
}
}
else {
e.preventDefault();
}
targetElement = null;
}
needsFastClickTimeOut = setTimeout(function () {
needsFastClick = false;
}, (app.device.ios || app.device.androidChrome ? 100 : 400));
if (app.params.tapHold) {
tapHoldTimeout = setTimeout(function () {
tapHoldFired = false;
}, (app.device.ios || app.device.androidChrome ? 100 : 400));
}
return allowClick;
}
if (app.support.touch) {
document.addEventListener('click', handleClick, true);
document.addEventListener('touchstart', handleTouchStart);
document.addEventListener('touchmove', handleTouchMove);
document.addEventListener('touchend', handleTouchEnd);
document.addEventListener('touchcancel', handleTouchCancel);
}
else {
if (app.params.activeState) {
document.addEventListener('mousedown', handleMouseDown);
document.addEventListener('mousemove', handleMouseMove);
document.addEventListener('mouseup', handleMouseUp);
}
}
if (app.params.material && app.params.materialRipple) {
document.addEventListener('contextmenu', function (e) {
if (activableElement) removeActive();
rippleTouchEnd();
});
}
};

View file

@ -1,36 +0,0 @@
/*===============================================================================
************ Ajax submit for forms ************
===============================================================================*/
// Ajax submit on forms
$(document).on('submit change', 'form.ajax-submit, form.ajax-submit-onchange', function (e) {
var form = $(this);
if (e.type === 'change' && !form.hasClass('ajax-submit-onchange')) return;
if (e.type === 'submit') e.preventDefault();
var method = (form.attr('method') || 'GET').toUpperCase();
var contentType = form.prop('enctype') || form.attr('enctype');
var url = form.attr('action');
if (!url) return;
var data;
if (method === 'POST') data = new FormData(form[0]);
else data = $.serializeObject(app.formToJSON(form[0]));
var xhr = $.ajax({
method: method,
url: url,
contentType: contentType,
data: data,
beforeSend: function (xhr) {
form.trigger('beforeSubmit', {data:data, xhr: xhr});
},
error: function (xhr) {
form.trigger('submitError', {data:data, xhr: xhr});
},
success: function (data) {
form.trigger('submitted', {data: data, xhr: xhr});
}
});
});

View file

@ -1,167 +0,0 @@
/*===============================================================================
************ Store and parse forms data ************
===============================================================================*/
app.formsData = {};
app.formStoreData = function (formId, formJSON) {
// Store form data in app.formsData
app.formsData[formId] = formJSON;
// Store form data in local storage also
app.ls['f7form-' + formId] = JSON.stringify(formJSON);
};
app.formDeleteData = function (formId) {
// Delete form data from app.formsData
if (app.formsData[formId]) {
app.formsData[formId] = '';
delete app.formsData[formId];
}
// Delete form data from local storage also
if (app.ls['f7form-' + formId]) {
app.ls['f7form-' + formId] = '';
app.ls.removeItem('f7form-' + formId);
}
};
app.formGetData = function (formId) {
// First of all check in local storage
if (app.ls['f7form-' + formId]) {
return JSON.parse(app.ls['f7form-' + formId]);
}
// Try to get it from formsData obj
else if (app.formsData[formId]) return app.formsData[formId];
};
app.formToData = function (form) {
form = $(form);
if (form.length !== 1) return false;
// Form data
var formData = {};
// Skip input types
var skipTypes = ['submit', 'image', 'button', 'file'];
var skipNames = [];
form.find('input, select, textarea').each(function () {
var input = $(this);
var name = input.attr('name');
var type = input.attr('type');
var tag = this.nodeName.toLowerCase();
if (skipTypes.indexOf(type) >= 0) return;
if (skipNames.indexOf(name) >= 0 || !name) return;
if (tag === 'select' && input.prop('multiple')) {
skipNames.push(name);
formData[name] = [];
form.find('select[name="' + name + '"] option').each(function () {
if (this.selected) formData[name].push(this.value);
});
}
else {
switch (type) {
case 'checkbox' :
skipNames.push(name);
formData[name] = [];
form.find('input[name="' + name + '"]').each(function () {
if (this.checked) formData[name].push(this.value);
});
break;
case 'radio' :
skipNames.push(name);
form.find('input[name="' + name + '"]').each(function () {
if (this.checked) formData[name] = this.value;
});
break;
default :
formData[name] = input.val();
break;
}
}
});
form.trigger('formToJSON formToData', {formData: formData});
return formData;
};
app.formToJSON = app.formToData;
app.formFromData = function (form, formData) {
form = $(form);
if (form.length !== 1) return false;
// Skip input types
var skipTypes = ['submit', 'image', 'button', 'file'];
var skipNames = [];
form.find('input, select, textarea').each(function () {
var input = $(this);
var name = input.attr('name');
var type = input.attr('type');
var tag = this.nodeName.toLowerCase();
if (!formData[name]) return;
if (skipTypes.indexOf(type) >= 0) return;
if (skipNames.indexOf(name) >= 0 || !name) return;
if (tag === 'select' && input.prop('multiple')) {
skipNames.push(name);
form.find('select[name="' + name + '"] option').each(function () {
if (formData[name].indexOf(this.value) >= 0) this.selected = true;
else this.selected = false;
});
}
else {
switch (type) {
case 'checkbox' :
skipNames.push(name);
form.find('input[name="' + name + '"]').each(function () {
if (formData[name].indexOf(this.value) >= 0) this.checked = true;
else this.checked = false;
});
break;
case 'radio' :
skipNames.push(name);
form.find('input[name="' + name + '"]').each(function () {
if (formData[name] === this.value) this.checked = true;
else this.checked = false;
});
break;
default :
input.val(formData[name]);
break;
}
}
if (tag === 'select' && input.parents('.smart-select').length > 0) {
input.trigger('change');
}
});
form.trigger('formFromJSON formFromData', {formData: formData});
};
app.formFromJSON = app.formFromData;
app.initFormsStorage = function (pageContainer) {
pageContainer = $(pageContainer);
var forms = pageContainer.find('form.store-data');
if (forms.length === 0) return;
// Parse forms data and fill form if there is such data
forms.each(function () {
var id = this.getAttribute('id');
if (!id) return;
var formData = app.formGetData(id);
if (formData) app.formFromData(this, formData);
});
// Update forms data on inputs change
function storeForm() {
/*jshint validthis:true */
var form = $(this);
var formId = form[0].id;
if (!formId) return;
var formJSON = app.formToData(form);
if (!formJSON) return;
app.formStoreData(formId, formJSON);
form.trigger('store', {data: formJSON});
}
forms.on('change submit', storeForm);
// Detach Listeners
function pageBeforeRemove() {
forms.off('change submit', storeForm);
pageContainer.off('pageBeforeRemove', pageBeforeRemove);
}
pageContainer.on('pageBeforeRemove', pageBeforeRemove);
};

View file

@ -1,54 +0,0 @@
/*===============================================================================
************ Resizable textarea ************
===============================================================================*/
app.resizeTextarea = function (textarea) {
textarea = $(textarea);
if (!textarea.hasClass('resizable')) {
return;
}
textarea.css({'height': ''});
var height = textarea[0].offsetHeight;
var diff = height - textarea[0].clientHeight;
var scrollHeight = textarea[0].scrollHeight;
if (scrollHeight + diff > height) {
var newAreaHeight = scrollHeight + diff;
textarea.css('height', newAreaHeight + 'px');
}
};
app.resizableTextarea = function (textarea) {
textarea = $(textarea);
if (textarea.length === 0) return;
var textareaTimeout;
function handleTextarea() {
clearTimeout(textareaTimeout);
textareaTimeout = setTimeout(function () {
app.resizeTextarea(textarea);
}, 0);
}
textarea[0].f7DestroyResizableTextarea = function () {
textarea.off('change keydown keypress keyup paste cut', handleTextarea);
};
return textarea.on('change keydown keypress keyup paste cut', handleTextarea);
};
app.destroyResizableTextarea = function (pageContainer) {
pageContainer = $(pageContainer);
if (pageContainer.length > 0 && pageContainer.is('textarea') && pageContainer[0].f7DestroyResizableTextarea) {
pageContainer[0].f7DestroyResizableTextarea();
}
else if (pageContainer.length > 0) {
pageContainer.find('textarea.resiable').each(function () {
var textarea = this;
if (textarea.f7DestroyResizableTextarea) {
textarea.f7DestroyResizableTextarea ();
}
});
}
};
app.initPageResizableTextarea = function (pageContainer) {
pageContainer = $(pageContainer);
var textareas = pageContainer.find('textarea.resizable');
textareas.each(function () {
app.resizableTextarea(this);
});
};

View file

@ -1,52 +0,0 @@
/* ===============================================================================
************ Infinite Scroll ************
=============================================================================== */
function handleInfiniteScroll() {
/*jshint validthis:true */
var inf = $(this);
var scrollTop = inf[0].scrollTop;
var scrollHeight = inf[0].scrollHeight;
var height = inf[0].offsetHeight;
var distance = inf[0].getAttribute('data-distance');
var virtualListContainer = inf.find('.virtual-list');
var virtualList;
var onTop = inf.hasClass('infinite-scroll-top');
if (!distance) distance = 50;
if (typeof distance === 'string' && distance.indexOf('%') >= 0) {
distance = parseInt(distance, 10) / 100 * height;
}
if (distance > height) distance = height;
if (onTop) {
if (scrollTop < distance) {
inf.trigger('infinite');
}
}
else {
if (scrollTop + height >= scrollHeight - distance) {
if (virtualListContainer.length > 0) {
virtualList = virtualListContainer[0].f7VirtualList;
if (virtualList && !virtualList.reachEnd) return;
}
inf.trigger('infinite');
}
}
}
app.attachInfiniteScroll = function (infiniteContent) {
$(infiniteContent).on('scroll', handleInfiniteScroll);
};
app.detachInfiniteScroll = function (infiniteContent) {
$(infiniteContent).off('scroll', handleInfiniteScroll);
};
app.initPageInfiniteScroll = function (pageContainer) {
pageContainer = $(pageContainer);
var infiniteContent = pageContainer.find('.infinite-scroll');
if (infiniteContent.length === 0) return;
app.attachInfiniteScroll(infiniteContent);
function detachEvents() {
app.detachInfiniteScroll(infiniteContent);
pageContainer.off('pageBeforeRemove', detachEvents);
}
pageContainer.on('pageBeforeRemove', detachEvents);
};

View file

@ -1,52 +0,0 @@
/*======================================================
************ App Init ************
======================================================*/
app.init = function () {
// Compile Template7 templates on app load
if (app.initTemplate7Templates) app.initTemplate7Templates();
// Init Plugins
if (app.initPlugins) app.initPlugins();
// Init Device
if (app.getDeviceInfo) app.getDeviceInfo();
// Init Click events
if (app.initFastClicks && app.params.fastClicks) app.initFastClicks();
if (app.initClickEvents) app.initClickEvents();
// Init each page callbacks
$('.page:not(.cached)').each(function () {
app.initPageWithCallback(this);
});
// Init each navbar callbacks
$('.navbar:not(.cached)').each(function () {
app.initNavbarWithCallback(this);
});
// Init resize events
if (app.initResize) app.initResize();
// Init push state
if (app.initPushState && app.params.pushState) app.initPushState();
// Init Live Swipeouts events
if (app.initSwipeout && app.params.swipeout) app.initSwipeout();
// Init Live Sortable events
if (app.initSortable && app.params.sortable) app.initSortable();
// Init Live Swipe Panels
if (app.initSwipePanels && (app.params.swipePanel || app.params.swipePanelOnlyClose)) app.initSwipePanels();
// Init Material Inputs
if (app.params.material && app.initMaterialWatchInputs) app.initMaterialWatchInputs();
// App Init callback
if (app.params.onAppInit) app.params.onAppInit();
// Plugin app init hook
app.pluginHook('appInit');
};
if (app.params.init) app.init();

View file

@ -1,146 +0,0 @@
/*======================================================
************ Image Lazy Loading ************
************ Based on solution by Marc Godard, https://github.com/MarcGodard ************
======================================================*/
app.initImagesLazyLoad = function (pageContainer) {
pageContainer = $(pageContainer);
// Lazy images
var lazyLoadImages;
if (pageContainer.hasClass('lazy')) {
lazyLoadImages = pageContainer;
pageContainer = lazyLoadImages.parents('.page');
}
else {
lazyLoadImages = pageContainer.find('.lazy');
}
if (lazyLoadImages.length === 0) return;
// Scrollable page content
var pageContent;
if (pageContainer.hasClass('page-content')) {
pageContent = pageContainer;
pageContainer = pageContainer.parents('.page');
}
else {
pageContent = pageContainer.find('.page-content');
}
if (pageContent.length === 0) return;
// Placeholder
var placeholderSrc = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEXCwsK592mkAAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==';
if (typeof app.params.imagesLazyLoadPlaceholder === 'string') {
placeholderSrc = app.params.imagesLazyLoadPlaceholder;
}
if (app.params.imagesLazyLoadPlaceholder !== false) lazyLoadImages.each(function(){
if ($(this).attr('data-src')) $(this).attr('src', placeholderSrc);
});
// load image
var imagesSequence = [];
var imageIsLoading = false;
function loadImage(el) {
el = $(el);
var bg = el.attr('data-background');
var src = bg ? bg : el.attr('data-src');
if (!src) return;
function onLoad() {
el.removeClass('lazy').addClass('lazy-loaded');
if (bg) {
el.css('background-image', 'url(' + src + ')');
}
else {
el.attr('src', src);
}
if (app.params.imagesLazyLoadSequential) {
imageIsLoading = false;
if (imagesSequence.length > 0) {
loadImage(imagesSequence.shift());
}
}
}
if (app.params.imagesLazyLoadSequential) {
if (imageIsLoading) {
if (imagesSequence.indexOf(el[0]) < 0) imagesSequence.push(el[0]);
return;
}
}
// Loading flag
imageIsLoading = true;
var image = new Image();
image.onload = onLoad;
image.onerror = onLoad;
image.src =src;
}
function lazyHandler() {
lazyLoadImages = pageContainer.find('.lazy');
lazyLoadImages.each(function(index, el) {
el = $(el);
if (el.parents('.tab:not(.active)').length > 0) {
return;
}
if (isElementInViewport(el[0])) {
loadImage(el);
}
});
}
function isElementInViewport (el) {
var rect = el.getBoundingClientRect();
var threshold = app.params.imagesLazyLoadThreshold || 0;
return (
rect.top >= (0 - threshold) &&
rect.left >= (0 - threshold) &&
rect.top <= (window.innerHeight + threshold) &&
rect.left <= (window.innerWidth + threshold)
);
}
function attachEvents(destroy) {
var method = destroy ? 'off' : 'on';
lazyLoadImages[method]('lazy', lazyHandler);
lazyLoadImages.parents('.tab')[method]('show', lazyHandler);
pageContainer[method]('lazy', lazyHandler);
pageContent[method]('lazy', lazyHandler);
pageContent[method]('scroll', lazyHandler);
$(window)[method]('resize', lazyHandler);
}
function detachEvents() {
attachEvents(true);
}
// Store detach function
pageContainer[0].f7DestroyImagesLazyLoad = detachEvents;
// Attach events
attachEvents();
// Destroy on page remove
if (pageContainer.hasClass('page')) {
pageContainer.once('pageBeforeRemove', detachEvents);
}
// Run loader on page load/init
lazyHandler();
// Run after page animation
pageContainer.once('pageAfterAnimation', lazyHandler);
};
app.destroyImagesLazyLoad = function (pageContainer) {
pageContainer = $(pageContainer);
if (pageContainer.length > 0 && pageContainer[0].f7DestroyImagesLazyLoad) {
pageContainer[0].f7DestroyImagesLazyLoad();
}
};
app.reinitImagesLazyLoad = function (pageContainer) {
pageContainer = $(pageContainer);
if (pageContainer.length > 0) {
pageContainer.trigger('lazy');
}
};

View file

@ -1,66 +0,0 @@
/*======================================================
************ Material Text Inputs ************
======================================================*/
app.initPageMaterialInputs = function (pageContainer) {
pageContainer = $(pageContainer);
var textareas = pageContainer.find('textarea.resizable');
pageContainer.find('.item-input').each(function () {
var itemInput = $(this);
var notInputs = ['checkbox', 'button', 'submit', 'range', 'radio', 'image'];
itemInput.find('input, select, textarea').each(function () {
var input = $(this);
if (notInputs.indexOf(input.attr('type')) < 0) {
itemInput.addClass('item-input-field');
if (input.val().trim() !== '') {
input.parents('.item-input, .input-field').add(input.parents('.item-inner')).addClass('not-empty-state');
}
}
});
if (itemInput.parents('.input-item, .inputs-list').length > 0) return;
itemInput.parents('.list-block').eq(0).addClass('inputs-list');
});
};
/*======================================================
************ Material Focus Inputs ************
======================================================*/
app.initMaterialWatchInputs = function () {
var notInputs = ['checkbox', 'button', 'submit', 'range', 'radio', 'image'];
function addFocusState(e) {
/*jshint validthis:true*/
var i = $(this);
var type = i.attr('type');
if (notInputs.indexOf(type) >= 0) return;
var els = i.add(i.parents('.item-input, .input-field')).add(i.parents('.item-inner').eq(0));
els.addClass('focus-state');
}
function removeFocusState(e) {
/*jshint validthis:true*/
var i = $(this), value = i.val();
var type = i.attr('type');
if (notInputs.indexOf(type) >= 0) return;
var els = i.add(i.parents('.item-input, .input-field')).add(i.parents('.item-inner').eq(0));
els.removeClass('focus-state');
if (value && value.trim() !== '') {
els.addClass('not-empty-state');
}
else {
els.removeClass('not-empty-state');
}
}
function watchChangeState(e) {
/*jshint validthis:true*/
var i = $(this), value = i.val();
var type = i.attr('type');
if (notInputs.indexOf(type) >= 0) return;
var els = i.add(i.parents('.item-input, .input-field')).add(i.parents('.item-inner').eq(0));
if (value && value.trim() !== '') {
els.addClass('not-empty-state');
}
else {
els.removeClass('not-empty-state');
}
}
$(document).on('change', '.item-input input, .item-input select, .item-input textarea, input, textarea, select', watchChangeState, true);
$(document).on('focus', '.item-input input, .item-input select, .item-input textarea, input, textarea, select', addFocusState, true);
$(document).on('blur', '.item-input input, .item-input select, .item-input textarea, input, textarea, select', removeFocusState, true);
};

View file

@ -1,10 +0,0 @@
/*======================================================
************ Material Preloader ************
======================================================*/
app.initPageMaterialPreloader = function (pageContainer) {
$(pageContainer).find('.preloader').each(function () {
if ($(this).children().length === 0) {
$(this).html(app.params.materialPreloaderHtml);
}
});
};

View file

@ -1,40 +0,0 @@
/*======================================================
************ Material Tabbar ************
======================================================*/
app.materialTabbarSetHighlight = function (tabbar, activeLink) {
tabbar = $(tabbar);
activeLink = activeLink || tabbar.find('.tab-link.active');
var tabLinkWidth, highlightTranslate;
if (tabbar.hasClass('tabbar-scrollable')) {
tabLinkWidth = activeLink[0].offsetWidth + 'px';
highlightTranslate = (app.rtl ? - activeLink[0].offsetLeft: activeLink[0].offsetLeft) + 'px';
}
else {
tabLinkWidth = 1 / tabbar.find('.tab-link').length * 100 + '%';
highlightTranslate = (app.rtl ? - activeLink.index(): activeLink.index()) * 100 + '%';
}
tabbar.find('.tab-link-highlight')
.css({width: tabLinkWidth})
.transform('translate3d(' + highlightTranslate + ',0,0)');
};
app.initPageMaterialTabbar = function (pageContainer) {
pageContainer = $(pageContainer);
var tabbar = $(pageContainer).find('.tabbar');
function tabbarSetHighlight() {
app.materialTabbarSetHighlight(tabbar);
}
if (tabbar.length > 0) {
if (tabbar.find('.tab-link-highlight').length === 0) {
tabbar.find('.toolbar-inner').append('<span class="tab-link-highlight"></span>');
}
tabbarSetHighlight();
$(window).on('resize', tabbarSetHighlight);
pageContainer.once('pageBeforeRemove', function () {
$(window).off('resize', tabbarSetHighlight);
});
}
};

View file

@ -1,140 +0,0 @@
/*======================================================
************ Messagebar ************
======================================================*/
var Messagebar = function (container, params) {
var defaults = {
textarea: null,
maxHeight: null,
};
params = params || {};
for (var def in defaults) {
if (typeof params[def] === 'undefined' || params[def] === null) {
params[def] = defaults[def];
}
}
// Instance
var m = this;
// Params
m.params = params;
// Container
m.container = $(container);
if (m.container.length === 0) return;
// Textarea
m.textarea = m.params.textarea ? $(m.params.textarea) : m.container.find('textarea');
// Is In Page
m.pageContainer = m.container.parents('.page').eq(0);
m.pageContent = m.pageContainer.find('.page-content');
// Initial Sizes
m.pageContentPadding = parseInt(m.pageContent.css('padding-bottom'));
m.initialBarHeight = m.container[0].offsetHeight;
m.initialAreaHeight = m.textarea[0].offsetHeight;
// Resize textarea
m.sizeTextarea = function () {
// Reset
m.textarea.css({'height': ''});
var height = m.textarea[0].offsetHeight;
var diff = height - m.textarea[0].clientHeight;
var scrollHeight = m.textarea[0].scrollHeight;
// Update
if (scrollHeight + diff > height) {
var newAreaHeight = scrollHeight + diff;
var newBarHeight = m.initialBarHeight + (newAreaHeight - m.initialAreaHeight);
var maxBarHeight = m.params.maxHeight || m.container.parents('.view')[0].offsetHeight - 88;
if (newBarHeight > maxBarHeight) {
newBarHeight = parseInt(maxBarHeight, 10);
newAreaHeight = newBarHeight - m.initialBarHeight + m.initialAreaHeight;
}
m.textarea.css('height', newAreaHeight + 'px');
m.container.css('height', newBarHeight + 'px');
var onBottom = (m.pageContent[0].scrollTop === m.pageContent[0].scrollHeight - m.pageContent[0].offsetHeight);
if (m.pageContent.length > 0) {
m.pageContent.css('padding-bottom', newBarHeight + 'px');
if (m.pageContent.find('.messages-new-first').length === 0 && onBottom) {
m.pageContent.scrollTop(m.pageContent[0].scrollHeight - m.pageContent[0].offsetHeight);
}
}
}
else {
if (m.pageContent.length > 0) {
m.container.css({'height': '', 'bottom': ''});
m.pageContent.css({'padding-bottom': ''});
}
}
};
// Clear
m.clear = function () {
m.textarea.val('').trigger('change');
};
m.value = function (value) {
if (typeof value === 'undefined') return m.textarea.val();
else m.textarea.val(value).trigger('change');
};
// Handle textarea
m.textareaTimeout = undefined;
m.handleTextarea = function (e) {
clearTimeout(m.textareaTimeout);
m.textareaTimeout = setTimeout(function () {
m.sizeTextarea();
}, 0);
};
//Events
function preventSubmit(e) {
e.preventDefault();
}
m.attachEvents = function (destroy) {
var method = destroy ? 'off' : 'on';
m.container[method]('submit', preventSubmit);
m.textarea[method]('change keydown keypress keyup paste cut', m.handleTextarea);
};
m.detachEvents = function () {
m.attachEvents(true);
};
// Init Destroy
m.init = function () {
m.attachEvents();
};
m.destroy = function () {
m.detachEvents();
m = null;
};
// Init
m.init();
m.container[0].f7Messagebar = m;
return m;
};
app.messagebar = function (container, params) {
return new Messagebar(container, params);
};
app.initPageMessagebar = function (pageContainer) {
pageContainer = $(pageContainer);
var messagebar = pageContainer.hasClass('messagebar') ? pageContainer : pageContainer.find('.messagebar');
if (messagebar.length === 0) return;
if (!messagebar.hasClass('messagebar-init')) return;
var mb = app.messagebar(messagebar, messagebar.dataset());
// Destroy on page remove
function pageBeforeRemove() {
mb.destroy();
pageContainer.off('pageBeforeRemove', pageBeforeRemove);
}
if (pageContainer.hasClass('page')) {
pageContainer.on('pageBeforeRemove', pageBeforeRemove);
}
};

View file

@ -1,233 +0,0 @@
/*======================================================
************ Messages ************
======================================================*/
var Messages = function (container, params) {
var defaults = {
autoLayout: true,
newMessagesFirst: false,
scrollMessages: true,
scrollMessagesOnlyOnEdge: false,
messageTemplate:
'{{#if day}}' +
'<div class="messages-date">{{day}} {{#if time}}, <span>{{time}}</span>{{/if}}</div>' +
'{{/if}}' +
'<div class="message message-{{type}} {{#if hasImage}}message-pic{{/if}} {{#if avatar}}message-with-avatar{{/if}} {{#if position}}message-appear-from-{{position}}{{/if}}">' +
'{{#if name}}<div class="message-name">{{name}}</div>{{/if}}' +
'<div class="message-text">{{text}}{{#if date}}<div class="message-date">{{date}}</div>{{/if}}</div>' +
'{{#if avatar}}<div class="message-avatar" style="background-image:url({{avatar}})"></div>{{/if}}' +
'{{#if label}}<div class="message-label">{{label}}</div>{{/if}}' +
'</div>'
};
params = params || {};
for (var def in defaults) {
if (typeof params[def] === 'undefined' || params[def] === null) {
params[def] = defaults[def];
}
}
// Instance
var m = this;
// Params
m.params = params;
// Container
m.container = $(container);
if (m.container.length === 0) return;
// Autolayout
if (m.params.autoLayout) m.container.addClass('messages-auto-layout');
// New messages first
if (m.params.newMessagesFirst) m.container.addClass('messages-new-first');
// Is In Page
m.pageContainer = m.container.parents('.page').eq(0);
m.pageContent = m.pageContainer.find('.page-content');
// Compiled template
m.template = Template7.compile(m.params.messageTemplate);
// Auto Layout
m.layout = function () {
if (!m.container.hasClass('messages-auto-layout')) m.container.addClass('messages-auto-layout');
m.container.find('.message').each(function () {
var message = $(this);
if (message.find('.message-text img').length > 0) {
var childNodes = message.find('.message-text')[0].childNodes;
var onlyPic = true;
for (var i = 0 ; i < childNodes.length; i++) {
if (childNodes[i].nodeType === 1 && childNodes[i].nodeName.toLowerCase() !== 'img') onlyPic = false;
if (childNodes[i].nodeType === 3 && childNodes[i].textContent.trim() !== '') onlyPic = false;
}
if (onlyPic) message.addClass('message-pic');
else message.removeClass('message-pic');
}
if (message.find('.message-avatar').length > 0) message.addClass('message-with-avatar');
});
m.container.find('.message').each(function () {
var message = $(this);
var isSent = message.hasClass('message-sent');
var next = message.next('.message-' + (isSent ? 'sent' : 'received'));
var prev = message.prev('.message-' + (isSent ? 'sent' : 'received'));
if (next.length === 0) {
message.addClass('message-last message-with-tail');
}
else message.removeClass('message-last message-with-tail');
if (prev.length === 0) {
message.addClass('message-first');
}
else message.removeClass('message-first');
if (prev.length > 0 && prev.find('.message-name').length > 0 && message.find('.message-name').length > 0) {
if (prev.find('.message-name').text() !== message.find('.message-name').text()) {
prev.addClass('message-last message-with-tail');
message.addClass('message-first');
}
}
});
};
// Add Message
m.appendMessage = function (props, animate) {
return m.addMessage(props, 'append', animate);
};
m.prependMessage = function (props, animate) {
return m.addMessage(props, 'prepend', animate);
};
m.addMessage = function (props, method, animate) {
return m.addMessages([props], method, animate);
};
m.addMessages = function (newMessages, method, animate) {
if (typeof animate === 'undefined') {
animate = true;
}
if (typeof method === 'undefined') {
method = m.params.newMessagesFirst ? 'prepend' : 'append';
}
var newMessagesHTML = '', i;
for (i = 0; i < newMessages.length; i++) {
var props = newMessages[i] || {};
props.type = props.type || 'sent';
if (!props.text) continue;
props.hasImage = props.text.indexOf('<img') >= 0;
if (props.onlyImage === false) props.hasImage = false;
if (animate) props.position = method === 'append' ? 'bottom' : 'top';
newMessagesHTML += m.template(props);
}
var scrollHeightBefore = m.pageContent[0].scrollHeight,
heightBefore = m.pageContent[0].offsetHeight,
scrollBefore = m.pageContent[0].scrollTop;
m.container[method](newMessagesHTML);
if (m.params.autoLayout) m.layout();
if (method === 'prepend') {
m.pageContent[0].scrollTop = scrollBefore + (m.pageContent[0].scrollHeight - scrollHeightBefore);
}
if (m.params.scrollMessages && (method === 'append' && !m.params.newMessagesFirst) || (method === 'prepend' && m.params.newMessagesFirst)) {
if (m.params.scrollMessagesOnlyOnEdge) {
var onEdge = false;
if (m.params.newMessagesFirst) {
if (scrollBefore === 0) onEdge = true;
}
else {
if (scrollBefore - (scrollHeightBefore - heightBefore) >= -10) onEdge = true;
}
if (onEdge) m.scrollMessages(animate ? undefined : 0);
}
else m.scrollMessages(animate ? undefined : 0);
}
var messages = m.container.find('.message');
if (newMessages.length === 1) {
return method === 'append' ? messages[messages.length - 1] : messages[0];
}
else {
var messagesToReturn = [];
if (method === 'append') {
for (i = messages.length - newMessages.length; i < messages.length; i++) {
messagesToReturn.push(messages[i]);
}
}
else {
for (i = 0; i < newMessages.length; i++) {
messagesToReturn.push(messages[i]);
}
}
return messagesToReturn;
}
};
m.removeMessage = function (message) {
message = $(message);
if (message.length === 0) {
return false;
}
else {
message.remove();
if (m.params.autoLayout) m.layout();
return true;
}
};
m.removeMessages = function (messages) {
m.removeMessage(messages);
};
m.clean = function () {
m.container.html('');
};
// Scroll
m.scrollMessages = function (duration, scrollTop) {
if (typeof duration === 'undefined') duration = 400;
var currentScroll = m.pageContent[0].scrollTop;
var newScroll;
if (typeof scrollTop !== 'undefined') newScroll = scrollTop;
else {
newScroll = m.params.newMessagesFirst ? 0 : m.pageContent[0].scrollHeight - m.pageContent[0].offsetHeight;
if (newScroll === currentScroll) return;
}
m.pageContent.scrollTop(newScroll, duration);
};
// Init Destroy
m.init = function () {
if (m.params.messages) {
m.addMessages(m.params.messages, undefined, false);
}
else {
if (m.params.autoLayout) m.layout();
m.scrollMessages(0);
}
};
m.destroy = function () {
m = null;
};
// Init
m.init();
m.container[0].f7Messages = m;
return m;
};
app.messages = function (container, params) {
return new Messages (container, params);
};
app.initPageMessages = function (pageContainer) {
pageContainer = $(pageContainer);
var messages = pageContainer.find('.messages');
if (messages.length === 0) return;
if (!messages.hasClass('messages-init')) {
return;
}
var m = app.messages(messages, messages.dataset());
// Destroy on page remove
function pageBeforeRemove() {
m.destroy();
pageContainer.off('pageBeforeRemove', pageBeforeRemove);
}
if (pageContainer.hasClass('page')) {
pageContainer.on('pageBeforeRemove', pageBeforeRemove);
}
};

View file

@ -1,671 +0,0 @@
/*======================================================
************ Modals ************
======================================================*/
var _modalTemplateTempDiv = document.createElement('div');
app.modalStack = [];
app.modalStackClearQueue = function () {
if (app.modalStack.length) {
(app.modalStack.shift())();
}
};
app.modal = function (params) {
params = params || {};
var modalHTML = '';
if (app.params.modalTemplate) {
if (!app._compiledTemplates.modal) app._compiledTemplates.modal = t7.compile(app.params.modalTemplate);
modalHTML = app._compiledTemplates.modal(params);
}
else {
var buttonsHTML = '';
if (params.buttons && params.buttons.length > 0) {
for (var i = 0; i < params.buttons.length; i++) {
buttonsHTML += '<span class="modal-button' + (params.buttons[i].bold ? ' modal-button-bold' : '') + '">' + params.buttons[i].text + '</span>';
}
}
var titleHTML = params.title ? '<div class="modal-title">' + params.title + '</div>' : '';
var textHTML = params.text ? '<div class="modal-text">' + params.text + '</div>' : '';
var afterTextHTML = params.afterText ? params.afterText : '';
var noButtons = !params.buttons || params.buttons.length === 0 ? 'modal-no-buttons' : '';
var verticalButtons = params.verticalButtons ? 'modal-buttons-vertical': '';
var modalButtonsHTML = params.buttons && params.buttons.length > 0 ? '<div class="modal-buttons modal-buttons-' + params.buttons.length + ' ' + verticalButtons + '">' + buttonsHTML + '</div>' : '';
modalHTML = '<div class="modal ' + noButtons + ' ' + (params.cssClass || '') + '"><div class="modal-inner">' + (titleHTML + textHTML + afterTextHTML) + '</div>' + modalButtonsHTML + '</div>';
}
_modalTemplateTempDiv.innerHTML = modalHTML;
var modal = $(_modalTemplateTempDiv).children();
app.root.append(modal[0]);
// Add events on buttons
modal.find('.modal-button').each(function (index, el) {
$(el).on('click', function (e) {
if (params.buttons[index].close !== false) app.closeModal(modal);
if (params.buttons[index].onClick) params.buttons[index].onClick(modal, e);
if (params.onClick) params.onClick(modal, index);
});
});
app.openModal(modal);
return modal[0];
};
app.alert = function (text, title, callbackOk) {
if (typeof title === 'function') {
callbackOk = arguments[1];
title = undefined;
}
return app.modal({
text: text || '',
title: typeof title === 'undefined' ? app.params.modalTitle : title,
buttons: [ {text: app.params.modalButtonOk, bold: true, onClick: callbackOk} ]
});
};
app.confirm = function (text, title, callbackOk, callbackCancel) {
if (typeof title === 'function') {
callbackCancel = arguments[2];
callbackOk = arguments[1];
title = undefined;
}
return app.modal({
text: text || '',
title: typeof title === 'undefined' ? app.params.modalTitle : title,
buttons: [
{text: app.params.modalButtonCancel, onClick: callbackCancel},
{text: app.params.modalButtonOk, bold: true, onClick: callbackOk}
]
});
};
app.prompt = function (text, title, callbackOk, callbackCancel) {
if (typeof title === 'function') {
callbackCancel = arguments[2];
callbackOk = arguments[1];
title = undefined;
}
return app.modal({
text: text || '',
title: typeof title === 'undefined' ? app.params.modalTitle : title,
afterText: '<div class="input-field"><input type="text" class="modal-text-input"></div>',
buttons: [
{
text: app.params.modalButtonCancel
},
{
text: app.params.modalButtonOk,
bold: true
}
],
onClick: function (modal, index) {
if (index === 0 && callbackCancel) callbackCancel($(modal).find('.modal-text-input').val());
if (index === 1 && callbackOk) callbackOk($(modal).find('.modal-text-input').val());
}
});
};
app.modalLogin = function (text, title, callbackOk, callbackCancel) {
if (typeof title === 'function') {
callbackCancel = arguments[2];
callbackOk = arguments[1];
title = undefined;
}
return app.modal({
text: text || '',
title: typeof title === 'undefined' ? app.params.modalTitle : title,
afterText: '<div class="input-field modal-input-double"><input type="text" name="modal-username" placeholder="' + app.params.modalUsernamePlaceholder + '" class="modal-text-input"></div><div class="input-field modal-input-double"><input type="password" name="modal-password" placeholder="' + app.params.modalPasswordPlaceholder + '" class="modal-text-input"></div>',
buttons: [
{
text: app.params.modalButtonCancel
},
{
text: app.params.modalButtonOk,
bold: true
}
],
onClick: function (modal, index) {
var username = $(modal).find('.modal-text-input[name="modal-username"]').val();
var password = $(modal).find('.modal-text-input[name="modal-password"]').val();
if (index === 0 && callbackCancel) callbackCancel(username, password);
if (index === 1 && callbackOk) callbackOk(username, password);
}
});
};
app.modalPassword = function (text, title, callbackOk, callbackCancel) {
if (typeof title === 'function') {
callbackCancel = arguments[2];
callbackOk = arguments[1];
title = undefined;
}
return app.modal({
text: text || '',
title: typeof title === 'undefined' ? app.params.modalTitle : title,
afterText: '<div class="input-field"><input type="password" name="modal-password" placeholder="' + app.params.modalPasswordPlaceholder + '" class="modal-text-input"></div>',
buttons: [
{
text: app.params.modalButtonCancel
},
{
text: app.params.modalButtonOk,
bold: true
}
],
onClick: function (modal, index) {
var password = $(modal).find('.modal-text-input[name="modal-password"]').val();
if (index === 0 && callbackCancel) callbackCancel(password);
if (index === 1 && callbackOk) callbackOk(password);
}
});
};
app.showPreloader = function (title) {
return app.modal({
title: title || app.params.modalPreloaderTitle,
text: '<div class="preloader">' + (app.params.material ? app.params.materialPreloaderHtml : '') + '</div>',
cssClass: 'modal-preloader'
});
};
app.hidePreloader = function () {
app.closeModal('.modal.modal-in');
};
app.showIndicator = function () {
if ($('.preloader-indicator-overlay').length > 0) return;
app.root.append('<div class="preloader-indicator-overlay"></div><div class="preloader-indicator-modal"><span class="preloader preloader-white">' + (app.params.material ? app.params.materialPreloaderHtml : '') + '</span></div>');
};
app.hideIndicator = function () {
$('.preloader-indicator-overlay, .preloader-indicator-modal').remove();
};
// Action Sheet
app.actions = function (target, params) {
var toPopover = false, modal, groupSelector, buttonSelector;
if (arguments.length === 1) {
// Actions
params = target;
}
else {
// Popover
if (app.device.ios) {
if (app.device.ipad) toPopover = true;
}
else {
if ($(window).width() >= 768) toPopover = true;
}
}
params = params || [];
if (params.length > 0 && !$.isArray(params[0])) {
params = [params];
}
var modalHTML;
if (toPopover) {
var actionsToPopoverTemplate = app.params.modalActionsToPopoverTemplate ||
'<div class="popover actions-popover">' +
'<div class="popover-inner">' +
'{{#each this}}' +
'<div class="list-block">' +
'<ul>' +
'{{#each this}}' +
'{{#if label}}' +
'<li class="actions-popover-label {{#if color}}color-{{color}}{{/if}} {{#if bold}}actions-popover-bold{{/if}}">{{text}}</li>' +
'{{else}}' +
'<li><a href="#" class="item-link list-button {{#if color}}color-{{color}}{{/if}} {{#if bg}}bg-{{bg}}{{/if}} {{#if bold}}actions-popover-bold{{/if}} {{#if disabled}}disabled{{/if}}">{{text}}</a></li>' +
'{{/if}}' +
'{{/each}}' +
'</ul>' +
'</div>' +
'{{/each}}' +
'</div>' +
'</div>';
if (!app._compiledTemplates.actionsToPopover) {
app._compiledTemplates.actionsToPopover = t7.compile(actionsToPopoverTemplate);
}
var popoverHTML = app._compiledTemplates.actionsToPopover(params);
modal = $(app.popover(popoverHTML, target, true));
groupSelector = '.list-block ul';
buttonSelector = '.list-button';
}
else {
if (app.params.modalActionsTemplate) {
if (!app._compiledTemplates.actions) app._compiledTemplates.actions = t7.compile(app.params.modalActionsTemplate);
modalHTML = app._compiledTemplates.actions(params);
}
else {
var buttonsHTML = '';
for (var i = 0; i < params.length; i++) {
for (var j = 0; j < params[i].length; j++) {
if (j === 0) buttonsHTML += '<div class="actions-modal-group">';
var button = params[i][j];
var buttonClass = button.label ? 'actions-modal-label' : 'actions-modal-button';
if (button.bold) buttonClass += ' actions-modal-button-bold';
if (button.color) buttonClass += ' color-' + button.color;
if (button.bg) buttonClass += ' bg-' + button.bg;
if (button.disabled) buttonClass += ' disabled';
buttonsHTML += '<div class="' + buttonClass + '">' + button.text + '</div>';
if (j === params[i].length - 1) buttonsHTML += '</div>';
}
}
modalHTML = '<div class="actions-modal">' + buttonsHTML + '</div>';
}
_modalTemplateTempDiv.innerHTML = modalHTML;
modal = $(_modalTemplateTempDiv).children();
app.root.append(modal[0]);
groupSelector = '.actions-modal-group';
buttonSelector = '.actions-modal-button';
}
var groups = modal.find(groupSelector);
groups.each(function (index, el) {
var groupIndex = index;
$(el).children().each(function (index, el) {
var buttonIndex = index;
var buttonParams = params[groupIndex][buttonIndex];
var clickTarget;
if (!toPopover && $(el).is(buttonSelector)) clickTarget = $(el);
if (toPopover && $(el).find(buttonSelector).length > 0) clickTarget = $(el).find(buttonSelector);
if (clickTarget) {
clickTarget.on('click', function (e) {
if (buttonParams.close !== false) app.closeModal(modal);
if (buttonParams.onClick) buttonParams.onClick(modal, e);
});
}
});
});
if (!toPopover) app.openModal(modal);
return modal[0];
};
app.popover = function (modal, target, removeOnClose) {
if (typeof removeOnClose === 'undefined') removeOnClose = true;
if (typeof modal === 'string' && modal.indexOf('<') >= 0) {
var _modal = document.createElement('div');
_modal.innerHTML = modal.trim();
if (_modal.childNodes.length > 0) {
modal = _modal.childNodes[0];
if (removeOnClose) modal.classList.add('remove-on-close');
app.root.append(modal);
}
else return false; //nothing found
}
modal = $(modal);
target = $(target);
if (modal.length === 0 || target.length === 0) return false;
if (modal.parents('body').length === 0) {
if (removeOnClose) modal.addClass('remove-on-close');
app.root.append(modal[0]);
}
if (modal.find('.popover-angle').length === 0 && !app.params.material) {
modal.append('<div class="popover-angle"></div>');
}
modal.show();
var material = app.params.material;
function sizePopover() {
modal.css({left: '', top: ''});
var modalWidth = modal.width();
var modalHeight = modal.height(); // 13 - height of angle
var modalAngle, modalAngleSize = 0, modalAngleLeft, modalAngleTop;
if (!material) {
modalAngle = modal.find('.popover-angle');
modalAngleSize = modalAngle.width() / 2;
modalAngle.removeClass('on-left on-right on-top on-bottom').css({left: '', top: ''});
}
else {
modal.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom').css({left: '', top: ''});
}
var targetWidth = target.outerWidth();
var targetHeight = target.outerHeight();
var targetOffset = target.offset();
var targetParentPage = target.parents('.page');
if (targetParentPage.length > 0) {
targetOffset.top = targetOffset.top - targetParentPage[0].scrollTop;
}
var windowHeight = $(window).height();
var windowWidth = $(window).width();
var modalTop = 0;
var modalLeft = 0;
var diff = 0;
// Top Position
var modalPosition = material ? 'bottom' : 'top';
if (material) {
if (modalHeight < windowHeight - targetOffset.top - targetHeight) {
// On bottom
modalPosition = 'bottom';
modalTop = targetOffset.top;
}
else if (modalHeight < targetOffset.top) {
// On top
modalTop = targetOffset.top - modalHeight + targetHeight;
modalPosition = 'top';
}
else {
// On middle
modalPosition = 'bottom';
modalTop = targetOffset.top;
}
if (modalTop <= 0) {
modalTop = 8;
}
else if (modalTop + modalHeight >= windowHeight) {
modalTop = windowHeight - modalHeight - 8;
}
// Horizontal Position
modalLeft = targetOffset.left;
if (modalLeft + modalWidth >= windowWidth - 8) {
modalLeft = targetOffset.left + targetWidth - modalWidth - 8;
}
if (modalLeft < 8) {
modalLeft = 8;
}
if (modalPosition === 'top') {
modal.addClass('popover-on-top');
}
if (modalPosition === 'bottom') {
modal.addClass('popover-on-bottom');
}
if (target.hasClass('floating-button-to-popover') && !modal.hasClass('modal-in')) {
modal.addClass('popover-floating-button');
var diffX = (modalLeft + modalWidth / 2) - (targetOffset.left + targetWidth / 2),
diffY = (modalTop + modalHeight / 2) - (targetOffset.top + targetHeight / 2);
target
.addClass('floating-button-to-popover-in')
.transform('translate3d(' + diffX + 'px, ' + diffY + 'px,0)')
.transitionEnd(function (e) {
if (!target.hasClass('floating-button-to-popover-in')) return;
target
.addClass('floating-button-to-popover-scale')
.transform('translate3d(' + diffX + 'px, ' + diffY + 'px,0) scale(' + (modalWidth/targetWidth) + ', ' + (modalHeight/targetHeight) + ')');
});
modal.once('close', function () {
target
.removeClass('floating-button-to-popover-in floating-button-to-popover-scale')
.addClass('floating-button-to-popover-out')
.transform('')
.transitionEnd(function (e) {
target.removeClass('floating-button-to-popover-out');
});
});
modal.once('closed', function () {
modal.removeClass('popover-floating-button');
});
}
}
else {
if ((modalHeight + modalAngleSize) < targetOffset.top) {
// On top
modalTop = targetOffset.top - modalHeight - modalAngleSize;
}
else if ((modalHeight + modalAngleSize) < windowHeight - targetOffset.top - targetHeight) {
// On bottom
modalPosition = 'bottom';
modalTop = targetOffset.top + targetHeight + modalAngleSize;
}
else {
// On middle
modalPosition = 'middle';
modalTop = targetHeight / 2 + targetOffset.top - modalHeight / 2;
diff = modalTop;
if (modalTop <= 0) {
modalTop = 5;
}
else if (modalTop + modalHeight >= windowHeight) {
modalTop = windowHeight - modalHeight - 5;
}
diff = diff - modalTop;
}
// Horizontal Position
if (modalPosition === 'top' || modalPosition === 'bottom') {
modalLeft = targetWidth / 2 + targetOffset.left - modalWidth / 2;
diff = modalLeft;
if (modalLeft < 5) modalLeft = 5;
if (modalLeft + modalWidth > windowWidth) modalLeft = windowWidth - modalWidth - 5;
if (modalPosition === 'top') {
modalAngle.addClass('on-bottom');
}
if (modalPosition === 'bottom') {
modalAngle.addClass('on-top');
}
diff = diff - modalLeft;
modalAngleLeft = (modalWidth / 2 - modalAngleSize + diff);
modalAngleLeft = Math.max(Math.min(modalAngleLeft, modalWidth - modalAngleSize * 2 - 13), 13);
modalAngle.css({left: modalAngleLeft + 'px'});
}
else if (modalPosition === 'middle') {
modalLeft = targetOffset.left - modalWidth - modalAngleSize;
modalAngle.addClass('on-right');
if (modalLeft < 5 || (modalLeft + modalWidth > windowWidth)) {
if (modalLeft < 5) modalLeft = targetOffset.left + targetWidth + modalAngleSize;
if (modalLeft + modalWidth > windowWidth) modalLeft = windowWidth - modalWidth - 5;
modalAngle.removeClass('on-right').addClass('on-left');
}
modalAngleTop = (modalHeight / 2 - modalAngleSize + diff);
modalAngleTop = Math.max(Math.min(modalAngleTop, modalHeight - modalAngleSize * 2 - 13), 13);
modalAngle.css({top: modalAngleTop + 'px'});
}
}
// Apply Styles
modal.css({top: modalTop + 'px', left: modalLeft + 'px'});
}
sizePopover();
$(window).on('resize', sizePopover);
modal.on('close', function () {
$(window).off('resize', sizePopover);
});
app.openModal(modal);
return modal[0];
};
app.popup = function (modal, removeOnClose) {
if (typeof removeOnClose === 'undefined') removeOnClose = true;
if (typeof modal === 'string' && modal.indexOf('<') >= 0) {
var _modal = document.createElement('div');
_modal.innerHTML = modal.trim();
if (_modal.childNodes.length > 0) {
modal = _modal.childNodes[0];
if (removeOnClose) modal.classList.add('remove-on-close');
app.root.append(modal);
}
else return false; //nothing found
}
modal = $(modal);
if (modal.length === 0) return false;
if (modal.parents('body').length === 0) {
if (removeOnClose) modal.addClass('remove-on-close');
app.root.append(modal[0]);
}
modal.show();
app.openModal(modal);
return modal[0];
};
app.pickerModal = function (modal, removeOnClose) {
if (typeof removeOnClose === 'undefined') removeOnClose = true;
if (typeof modal === 'string' && modal.indexOf('<') >= 0) {
modal = $(modal);
if (modal.length > 0) {
if (removeOnClose) modal.addClass('remove-on-close');
app.root.append(modal[0]);
}
else return false; //nothing found
}
modal = $(modal);
if (modal.length === 0) return false;
if (modal.parents('body').length === 0) {
if (removeOnClose) modal.addClass('remove-on-close');
app.root.append(modal[0]);
}
if ($('.picker-modal.modal-in:not(.modal-out)').length > 0 && !modal.hasClass('modal-in')) {
app.closeModal('.picker-modal.modal-in:not(.modal-out)');
}
modal.show();
app.openModal(modal);
return modal[0];
};
app.loginScreen = function (modal) {
if (!modal) modal = '.login-screen';
modal = $(modal);
if (modal.length === 0) return false;
if ($('.login-screen.modal-in:not(.modal-out)').length > 0 && !modal.hasClass('modal-in')) {
app.closeModal('.login-screen.modal-in:not(.modal-out)');
}
modal.show();
app.openModal(modal);
return modal[0];
};
app.openModal = function (modal) {
modal = $(modal);
var isModal = modal.hasClass('modal');
if ($('.modal.modal-in:not(.modal-out)').length && app.params.modalStack && isModal) {
app.modalStack.push(function () {
app.openModal(modal);
});
return;
}
// do nothing if this modal already shown
if (true === modal.data('f7-modal-shown')) {
return;
}
modal.data('f7-modal-shown', true);
modal.once('close', function() {
modal.removeData('f7-modal-shown');
});
var isPopover = modal.hasClass('popover');
var isPopup = modal.hasClass('popup');
var isLoginScreen = modal.hasClass('login-screen');
var isPickerModal = modal.hasClass('picker-modal');
if (isModal) {
modal.show();
modal.css({
marginTop: - Math.round(modal.outerHeight() / 2) + 'px'
});
}
var overlay;
if (!isLoginScreen && !isPickerModal) {
if ($('.modal-overlay').length === 0 && !isPopup) {
app.root.append('<div class="modal-overlay"></div>');
}
if ($('.popup-overlay').length === 0 && isPopup) {
app.root.append('<div class="popup-overlay"></div>');
}
overlay = isPopup ? $('.popup-overlay') : $('.modal-overlay');
}
if (app.params.material && isPickerModal) {
if (modal.hasClass('picker-calendar')) {
if ($('.picker-modal-overlay').length === 0 && !isPopup) {
app.root.append('<div class="picker-modal-overlay"></div>');
}
overlay = $('.picker-modal-overlay');
}
}
//Make sure that styles are applied, trigger relayout;
var clientLeft = modal[0].clientLeft;
// Trugger open event
modal.trigger('open');
// Picker modal body class
if (isPickerModal) {
$('body').addClass('with-picker-modal');
}
// Init Pages and Navbars in modal
if (modal.find('.' + app.params.viewClass).length > 0) {
modal.find('.page').each(function () {
app.initPageWithCallback(this);
});
modal.find('.navbar').each(function () {
app.initNavbarWithCallback(this);
});
}
// Classes for transition in
if (!isLoginScreen && !isPickerModal) overlay.addClass('modal-overlay-visible');
if (app.params.material && isPickerModal && overlay) overlay.addClass('modal-overlay-visible');
modal.removeClass('modal-out').addClass('modal-in').transitionEnd(function (e) {
if (modal.hasClass('modal-out')) modal.trigger('closed');
else modal.trigger('opened');
});
return true;
};
app.closeModal = function (modal) {
modal = $(modal || '.modal-in');
if (typeof modal !== 'undefined' && modal.length === 0) {
return;
}
var isModal = modal.hasClass('modal');
var isPopover = modal.hasClass('popover');
var isPopup = modal.hasClass('popup');
var isLoginScreen = modal.hasClass('login-screen');
var isPickerModal = modal.hasClass('picker-modal');
var removeOnClose = modal.hasClass('remove-on-close');
var overlay;
if (isPopup) overlay = $('.popup-overlay');
else {
if (isPickerModal && app.params.material) overlay = $('.picker-modal-overlay');
else if (!isPickerModal) overlay = $('.modal-overlay');
}
if (isPopup){
if (modal.length === $('.popup.modal-in').length) {
overlay.removeClass('modal-overlay-visible');
}
}
else if (overlay && overlay.length > 0) {
overlay.removeClass('modal-overlay-visible');
}
modal.trigger('close');
// Picker modal body class
if (isPickerModal) {
$('body').removeClass('with-picker-modal');
$('body').addClass('picker-modal-closing');
}
if (!(isPopover && !app.params.material)) {
modal.removeClass('modal-in').addClass('modal-out').transitionEnd(function (e) {
if (modal.hasClass('modal-out')) modal.trigger('closed');
else {
modal.trigger('opened');
if (isPopover) return;
}
if (isPickerModal) {
$('body').removeClass('picker-modal-closing');
}
if (isPopup || isLoginScreen || isPickerModal || isPopover) {
modal.removeClass('modal-out').hide();
if (removeOnClose && modal.length > 0) {
modal.remove();
}
}
else {
modal.remove();
}
});
if (isModal && app.params.modalStack) {
app.modalStackClearQueue();
}
}
else {
modal.removeClass('modal-in modal-out').trigger('closed').hide();
if (removeOnClose) {
modal.remove();
}
}
return true;
};

View file

@ -1,220 +0,0 @@
/*======================================================
************ Navbars && Toolbars ************
======================================================*/
// On Navbar Init Callback
app.navbarInitCallback = function (view, pageContainer, navbarContainer, navbarInnerContainer) {
if (!navbarContainer && navbarInnerContainer) navbarContainer = $(navbarInnerContainer).parent('.navbar')[0];
if (!navbarInnerContainer || navbarInnerContainer.f7NavbarInitialized && view && !view.params.domCache) return;
var navbarData = {
container: navbarContainer,
innerContainer: navbarInnerContainer
};
var pageData = pageContainer && pageContainer.f7PageData;
var eventData = {
page: pageData,
navbar: navbarData
};
if (navbarInnerContainer.f7NavbarInitialized && ((view && view.params.domCache) || (!view && $(navbarContainer).parents('.popup, .popover, .login-screen, .modal, .actions-modal, .picker-modal').length > 0))) {
// Reinit Navbar
app.reinitNavbar(navbarContainer, navbarInnerContainer);
// Plugin hook
app.pluginHook('navbarReinit', eventData);
// Event
$(navbarInnerContainer).trigger('navbarReinit', eventData);
return;
}
navbarInnerContainer.f7NavbarInitialized = true;
// Before Init
app.pluginHook('navbarBeforeInit', navbarData, pageData);
$(navbarInnerContainer).trigger('navbarBeforeInit', eventData);
// Initialize Navbar
app.initNavbar(navbarContainer, navbarInnerContainer);
// On init
app.pluginHook('navbarInit', navbarData, pageData);
$(navbarInnerContainer).trigger('navbarInit', eventData);
};
// Navbar Remove Callback
app.navbarRemoveCallback = function (view, pageContainer, navbarContainer, navbarInnerContainer) {
if (!navbarContainer && navbarInnerContainer) navbarContainer = $(navbarInnerContainer).parent('.navbar')[0];
var navbarData = {
container: navbarContainer,
innerContainer: navbarInnerContainer
};
var pageData;
if (pageContainer) {
pageData = pageContainer.f7PageData;
}
var eventData = {
page: pageData,
navbar: navbarData
};
app.pluginHook('navbarBeforeRemove', navbarData, pageData);
$(navbarInnerContainer).trigger('navbarBeforeRemove', eventData);
navbarData = null;
pageData = null;
};
app.initNavbar = function (navbarContainer, navbarInnerContainer) {
// Init Subnavbar Searchbar
if (app.initSearchbar) app.initSearchbar(navbarInnerContainer);
};
app.reinitNavbar = function (navbarContainer, navbarInnerContainer) {
// Re init navbar methods
};
app.initNavbarWithCallback = function (navbarContainer) {
navbarContainer = $(navbarContainer);
var viewContainer = navbarContainer.parents('.' + app.params.viewClass);
var view;
if (viewContainer.length === 0) return;
if (navbarContainer.parents('.navbar-through').length === 0 && viewContainer.find('.navbar-through').length === 0) return;
view = viewContainer[0].f7View || undefined;
navbarContainer.find('.navbar-inner').each(function () {
var navbarInnerContainer = this;
var pageContainer;
if ($(navbarInnerContainer).attr('data-page')) {
// For dom cache
pageContainer = viewContainer.find('.page[data-page="' + $(navbarInnerContainer).attr('data-page') + '"]')[0];
}
if (!pageContainer) {
var pages = viewContainer.find('.page');
if (pages.length === 1) {
pageContainer = pages[0];
}
else {
viewContainer.find('.page').each(function () {
if (this.f7PageData && this.f7PageData.navbarInnerContainer === navbarInnerContainer) {
pageContainer = this;
}
});
}
}
app.navbarInitCallback(view, pageContainer, navbarContainer[0], navbarInnerContainer);
});
};
// Size Navbars
app.sizeNavbars = function (viewContainer) {
if (app.params.material) return;
var navbarInner = viewContainer ? $(viewContainer).find('.navbar .navbar-inner:not(.cached)') : $('.navbar .navbar-inner:not(.cached)');
navbarInner.each(function () {
var n = $(this);
if (n.hasClass('cached')) return;
var left = app.rtl ? n.find('.right') : n.find('.left'),
right = app.rtl ? n.find('.left') : n.find('.right'),
center = n.find('.center'),
subnavbar = n.find('.subnavbar'),
noLeft = left.length === 0,
noRight = right.length === 0,
leftWidth = noLeft ? 0 : left.outerWidth(true),
rightWidth = noRight ? 0 : right.outerWidth(true),
centerWidth = center.outerWidth(true),
navbarStyles = n.styles(),
navbarWidth = n[0].offsetWidth - parseInt(navbarStyles.paddingLeft, 10) - parseInt(navbarStyles.paddingRight, 10),
onLeft = n.hasClass('navbar-on-left'),
currLeft, diff;
if (noRight) {
currLeft = navbarWidth - centerWidth;
}
if (noLeft) {
currLeft = 0;
}
if (!noLeft && !noRight) {
currLeft = (navbarWidth - rightWidth - centerWidth + leftWidth) / 2;
}
var requiredLeft = (navbarWidth - centerWidth) / 2;
if (navbarWidth - leftWidth - rightWidth > centerWidth) {
if (requiredLeft < leftWidth) {
requiredLeft = leftWidth;
}
if (requiredLeft + centerWidth > navbarWidth - rightWidth) {
requiredLeft = navbarWidth - rightWidth - centerWidth;
}
diff = requiredLeft - currLeft;
}
else {
diff = 0;
}
// RTL inverter
var inverter = app.rtl ? -1 : 1;
if (center.hasClass('sliding')) {
center[0].f7NavbarLeftOffset = -(currLeft + diff) * inverter;
center[0].f7NavbarRightOffset = (navbarWidth - currLeft - diff - centerWidth) * inverter;
if (onLeft) {
if (app.params.animateNavBackIcon) {
var activeNavbarBackLink = n.parent().find('.navbar-on-center').find('.left.sliding .back .icon ~ span');
if (activeNavbarBackLink.length > 0) {
center[0].f7NavbarLeftOffset += activeNavbarBackLink[0].offsetLeft;
}
}
center.transform('translate3d(' + center[0].f7NavbarLeftOffset + 'px, 0, 0)');
}
}
if (!noLeft && left.hasClass('sliding')) {
if (app.rtl) {
left[0].f7NavbarLeftOffset = -(navbarWidth - left[0].offsetWidth) / 2 * inverter;
left[0].f7NavbarRightOffset = leftWidth * inverter;
}
else {
left[0].f7NavbarLeftOffset = -leftWidth;
left[0].f7NavbarRightOffset = (navbarWidth - left[0].offsetWidth) / 2;
if (app.params.animateNavBackIcon && left.find('.back .icon').length > 0) {
left[0].f7NavbarRightOffset -= left.find('.back .icon')[0].offsetWidth;
}
}
if (onLeft) left.transform('translate3d(' + left[0].f7NavbarLeftOffset + 'px, 0, 0)');
}
if (!noRight && right.hasClass('sliding')) {
if (app.rtl) {
right[0].f7NavbarLeftOffset = -rightWidth * inverter;
right[0].f7NavbarRightOffset = (navbarWidth - right[0].offsetWidth) / 2 * inverter;
}
else {
right[0].f7NavbarLeftOffset = -(navbarWidth - right[0].offsetWidth) / 2;
right[0].f7NavbarRightOffset = rightWidth;
}
if (onLeft) right.transform('translate3d(' + right[0].f7NavbarLeftOffset + 'px, 0, 0)');
}
if (subnavbar.length && subnavbar.hasClass('sliding')) {
subnavbar[0].f7NavbarLeftOffset = app.rtl ? subnavbar[0].offsetWidth : -subnavbar[0].offsetWidth;
subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;
}
// Center left
var centerLeft = diff;
if (app.rtl && noLeft && noRight && center.length > 0) centerLeft = -centerLeft;
center.css({left: centerLeft + 'px'});
});
};
// Hide/Show Navbars/Toolbars
app.hideNavbar = function (navbarContainer) {
$(navbarContainer).addClass('navbar-hidden');
return true;
};
app.showNavbar = function (navbarContainer) {
var navbar = $(navbarContainer);
navbar.addClass('navbar-hiding').removeClass('navbar-hidden').transitionEnd(function () {
navbar.removeClass('navbar-hiding');
});
return true;
};
app.hideToolbar = function (toolbarContainer) {
$(toolbarContainer).addClass('toolbar-hidden');
return true;
};
app.showToolbar = function (toolbarContainer) {
var toolbar = $(toolbarContainer);
toolbar.addClass('toolbar-hiding').removeClass('toolbar-hidden').transitionEnd(function () {
toolbar.removeClass('toolbar-hiding');
});
};

View file

@ -1,163 +0,0 @@
/*======================================================
************ Notifications ************
======================================================*/
var _tempNotificationElement;
app.addNotification = function (params) {
if (!params) return;
if (typeof params.media === 'undefined') params.media = app.params.notificationMedia;
if (typeof params.title === 'undefined') params.title = app.params.notificationTitle;
if (typeof params.subtitle === 'undefined') params.subtitle = app.params.notificationSubtitle;
if (typeof params.closeIcon === 'undefined') params.closeIcon = app.params.notificationCloseIcon;
if (typeof params.hold === 'undefined') params.hold = app.params.notificationHold;
if (typeof params.closeOnClick === 'undefined') params.closeOnClick = app.params.notificationCloseOnClick;
if (typeof params.button === 'undefined') params.button = app.params.notificationCloseButtonText && {
text: app.params.notificationCloseButtonText,
close: true
};
if (!_tempNotificationElement) _tempNotificationElement = document.createElement('div');
params.material = app.params.material;
var container = $('.notifications');
if (container.length === 0) {
app.root.append('<div class="notifications list-block' + (params.material ? '' : ' media-list') + '"><ul></ul></div>');
container = $('.notifications');
}
var list = container.children('ul');
var notificationTemplate = app.params.notificationTemplate ||
'{{#if custom}}' +
'<li>{{custom}}</li>' +
'{{else}}' +
'<li class="notification-item notification-hidden">' +
'<div class="item-content">' +
'{{#if material}}' +
'<div class="item-inner">' +
'<div class="item-title">{{js "this.message || this.title || this.subtitle"}}</div>' +
'{{#if ../button}}{{#button}}' +
'<div class="item-after">' +
'<a href="#" class="button {{#if color}}color-{{color}}{{/if}} {{#js_compare "this.close !== false"}}close-notification{{/js_compare}}">{{text}}</a>' +
'</div>' +
'{{/button}}{{/if}}' +
'</div>' +
'{{else}}' +
'{{#if media}}' +
'<div class="item-media">{{media}}</div>' +
'{{/if}}' +
'<div class="item-inner">' +
'<div class="item-title-row">' +
'{{#if title}}' +
'<div class="item-title">{{title}}</div>' +
'{{/if}}' +
'{{#if closeIcon}}' +
'<div class="item-after"><a href="#" class="close-notification"><span></span></a></div>' +
'{{/if}}' +
'</div>' +
'{{#if subtitle}}' +
'<div class="item-subtitle">{{subtitle}}</div>' +
'{{/if}}' +
'{{#if message}}' +
'<div class="item-text">{{message}}</div>' +
'</div>' +
'{{/if}}' +
'{{/if}}' +
'</div>' +
'</li>' +
'{{/if}}';
if (!app._compiledTemplates.notification) {
app._compiledTemplates.notification = t7.compile(notificationTemplate);
}
_tempNotificationElement.innerHTML = app._compiledTemplates.notification(params);
var item = $(_tempNotificationElement).children();
item.on('click', function (e) {
var close = false;
var target = $(e.target);
if (params.material && target.hasClass('button')) {
if (params.button && params.button.onClick) params.button.onClick.call(target[0], e, item[0]);
}
if (target.is('.close-notification') || $(e.target).parents('.close-notification').length > 0) {
close = true;
}
else {
if (params.onClick) params.onClick(e, item[0]);
if (params.closeOnClick) close = true;
}
if (close) app.closeNotification(item[0]);
});
if (params.onClose) {
item.data('f7NotificationOnClose', function () {
params.onClose(item[0]);
});
}
if (params.additionalClass) {
item.addClass(params.additionalClass);
}
if (params.hold) {
setTimeout(function () {
if (item.length > 0) app.closeNotification(item[0]);
}, params.hold);
}
if (!app.params.material) {
app.closeNotification(list.children('li.notification-item:last-child'));
}
list.append(item[0]);
container.show();
var itemHeight = item.outerHeight(), clientLeft;
if (params.material) {
container.transform('translate3d(0, '+itemHeight+'px, 0)');
container.transition(0);
clientLeft = item[0].clientLeft;
container.transform('translate3d(0, 0, 0)');
container.transition('');
}
else {
item.transform('translate3d(0,' + (-itemHeight) + 'px,0)');
item.transition(0);
clientLeft = item[0].clientLeft;
item.transition('');
item.transform('translate3d(0,0px,0)');
}
container.transform('translate3d(0, 0,0)');
item.removeClass('notification-hidden');
return item[0];
};
app.closeNotification = function (item) {
item = $(item);
if (item.length === 0) return;
if (item.hasClass('notification-item-removing')) return;
var container = $('.notifications');
var itemHeight = item.outerHeight();
item.css('height', itemHeight + 'px').transition(0).addClass('notification-item-removing');
var clientLeft = item[0].clientLeft;
item.css({
height: '0px',
marginBottom: '0px'
}).transition('');
if (item.data('f7NotificationOnClose')) item.data('f7NotificationOnClose')();
if (container.find('.notification-item:not(.notification-item-removing)').length === 0) {
container.transform('');
}
item.addClass('notification-hidden').transitionEnd(function () {
item.remove();
if (container.find('.notification-item').length === 0) {
container.hide();
}
});
};

View file

@ -1,348 +0,0 @@
/*======================================================
************ Pages ************
======================================================*/
// Page Callbacks API
app.pageCallbacks = {};
app.onPage = function (callbackName, pageName, callback) {
if (pageName && pageName.split(' ').length > 1) {
var pageNames = pageName.split(' ');
var returnCallbacks = [];
for (var i = 0; i < pageNames.length; i++) {
returnCallbacks.push(app.onPage(callbackName, pageNames[i], callback));
}
returnCallbacks.remove = function () {
for (var i = 0; i < returnCallbacks.length; i++) {
returnCallbacks[i].remove();
}
};
returnCallbacks.trigger = function () {
for (var i = 0; i < returnCallbacks.length; i++) {
returnCallbacks[i].trigger();
}
};
return returnCallbacks;
}
var callbacks = app.pageCallbacks[callbackName][pageName];
if (!callbacks) {
callbacks = app.pageCallbacks[callbackName][pageName] = [];
}
app.pageCallbacks[callbackName][pageName].push(callback);
return {
remove: function () {
var removeIndex;
for (var i = 0; i < callbacks.length; i++) {
if (callbacks[i].toString() === callback.toString()) {
removeIndex = i;
}
}
if (typeof removeIndex !== 'undefined') callbacks.splice(removeIndex, 1);
},
trigger: callback
};
};
//Create callbacks methods dynamically
function createPageCallback(callbackName) {
var capitalized = callbackName.replace(/^./, function (match) {
return match.toUpperCase();
});
app['onPage' + capitalized] = function (pageName, callback) {
return app.onPage(callbackName, pageName, callback);
};
}
var pageCallbacksNames = ('beforeInit init reinit beforeAnimation afterAnimation back afterBack beforeRemove').split(' ');
for (var i = 0; i < pageCallbacksNames.length; i++) {
app.pageCallbacks[pageCallbacksNames[i]] = {};
createPageCallback(pageCallbacksNames[i]);
}
app.triggerPageCallbacks = function (callbackName, pageName, pageData) {
var allPagesCallbacks = app.pageCallbacks[callbackName]['*'];
if (allPagesCallbacks) {
for (var j = 0; j < allPagesCallbacks.length; j++) {
allPagesCallbacks[j](pageData);
}
}
var callbacks = app.pageCallbacks[callbackName][pageName];
if (!callbacks || callbacks.length === 0) return;
for (var i = 0; i < callbacks.length; i++) {
callbacks[i](pageData);
}
};
// On Page Init Callback
app.pageInitCallback = function (view, params) {
var pageContainer = params.pageContainer;
if (!pageContainer) return;
if (pageContainer.f7PageInitialized && view && !view.params.domCache) return;
var pageQuery = params.query;
if (!pageQuery) {
if (params.url && params.url.indexOf('?') > 0) {
pageQuery = $.parseUrlQuery(params.url || '');
}
else if (pageContainer.f7PageData && pageContainer.f7PageData.query) {
pageQuery = pageContainer.f7PageData.query;
}
else {
pageQuery = {};
}
}
// Page Data
var pageData = {
container: pageContainer,
url: params.url,
query: pageQuery,
name: $(pageContainer).attr('data-page'),
view: view,
from: params.position,
context: params.context,
navbarInnerContainer: params.navbarInnerContainer,
fromPage: params.fromPage
};
if (params.fromPage && !params.fromPage.navbarInnerContainer && params.oldNavbarInnerContainer) {
params.fromPage.navbarInnerContainer = params.oldNavbarInnerContainer;
}
if (pageContainer.f7PageInitialized && ((view && view.params.domCache) || (!view && $(pageContainer).parents('.popup, .popover, .login-screen, .modal, .actions-modal, .picker-modal').length > 0))) {
// Reinit Page
app.reinitPage(pageContainer);
// Callbacks
app.pluginHook('pageReinit', pageData);
if (app.params.onPageReinit) app.params.onPageReinit(app, pageData);
app.triggerPageCallbacks('reinit', pageData.name, pageData);
$(pageData.container).trigger('pageReinit', {page: pageData});
return;
}
pageContainer.f7PageInitialized = true;
// Store pagedata in page
pageContainer.f7PageData = pageData;
// Update View's activePage
if (view && !params.preloadOnly && !params.reloadPrevious) {
// Add data-page on view
$(view.container).attr('data-page', pageData.name);
// Update View active page data
view.activePage = pageData;
}
// Before Init Callbacks
app.pluginHook('pageBeforeInit', pageData);
if (app.params.onPageBeforeInit) app.params.onPageBeforeInit(app, pageData);
app.triggerPageCallbacks('beforeInit', pageData.name, pageData);
$(pageData.container).trigger('pageBeforeInit', {page: pageData});
// Init page
app.initPage(pageContainer);
// Init Callback
app.pluginHook('pageInit', pageData);
if (app.params.onPageInit) app.params.onPageInit(app, pageData);
app.triggerPageCallbacks('init', pageData.name, pageData);
$(pageData.container).trigger('pageInit', {page: pageData});
};
app.pageRemoveCallback = function (view, pageContainer, position) {
var pageContext;
if (!pageContainer) return;
if (pageContainer.f7PageData) pageContext = pageContainer.f7PageData.context;
// Page Data
var pageData = {
container: pageContainer,
name: $(pageContainer).attr('data-page'),
view: view,
url: pageContainer.f7PageData && pageContainer.f7PageData.url,
query: pageContainer.f7PageData && pageContainer.f7PageData.query,
navbarInnerContainer: pageContainer.f7PageData && pageContainer.f7PageData.navbarInnerContainer,
from: position,
context: pageContext
};
// Before Init Callback
app.pluginHook('pageBeforeRemove', pageData);
if (app.params.onPageBeforeRemove) app.params.onPageBeforeRemove(app, pageData);
app.triggerPageCallbacks('beforeRemove', pageData.name, pageData);
$(pageData.container).trigger('pageBeforeRemove', {page: pageData});
pageData = null;
};
app.pageBackCallback = function (callback, view, params) {
// Page Data
var pageContainer = params.pageContainer;
var pageContext;
if (!pageContainer) return;
if (pageContainer.f7PageData) pageContext = pageContainer.f7PageData.context;
var pageData = {
container: pageContainer,
name: $(pageContainer).attr('data-page'),
url: pageContainer.f7PageData && pageContainer.f7PageData.url,
query: pageContainer.f7PageData && pageContainer.f7PageData.query,
view: view,
from: params.position,
context: pageContext,
navbarInnerContainer: pageContainer.f7PageData && pageContainer.f7PageData.navbarInnerContainer,
swipeBack: params.swipeBack
};
if (callback === 'after') {
app.pluginHook('pageAfterBack', pageData);
if (app.params.onPageAfterBack) app.params.onPageAfterBack(app, pageData);
app.triggerPageCallbacks('afterBack', pageData.name, pageData);
$(pageContainer).trigger('pageAfterBack', {page: pageData});
}
if (callback === 'before') {
app.pluginHook('pageBack', pageData);
if (app.params.onPageBack) app.params.onPageBack(app, pageData);
app.triggerPageCallbacks('back', pageData.name, pageData);
$(pageData.container).trigger('pageBack', {page: pageData});
}
};
app.pageAnimCallback = function (callback, view, params) {
var pageContainer = params.pageContainer;
var pageContext;
if (!pageContainer) return;
if (pageContainer.f7PageData) pageContext = pageContainer.f7PageData.context;
var pageQuery = params.query;
if (!pageQuery) {
if (params.url && params.url.indexOf('?') > 0) {
pageQuery = $.parseUrlQuery(params.url || '');
}
else if (pageContainer.f7PageData && pageContainer.f7PageData.query) {
pageQuery = pageContainer.f7PageData.query;
}
else {
pageQuery = {};
}
}
// Page Data
var pageData = {
container: pageContainer,
url: params.url,
query: pageQuery,
name: $(pageContainer).attr('data-page'),
view: view,
from: params.position,
context: pageContext,
swipeBack: params.swipeBack,
navbarInnerContainer: pageContainer.f7PageData && pageContainer.f7PageData.navbarInnerContainer,
fromPage: params.fromPage
};
var oldPage = params.oldPage,
newPage = params.newPage;
// Update page date
pageContainer.f7PageData = pageData;
if (callback === 'after') {
app.pluginHook('pageAfterAnimation', pageData);
if (app.params.onPageAfterAnimation) app.params.onPageAfterAnimation(app, pageData);
app.triggerPageCallbacks('afterAnimation', pageData.name, pageData);
$(pageData.container).trigger('pageAfterAnimation', {page: pageData});
}
if (callback === 'before') {
// Add data-page on view
$(view.container).attr('data-page', pageData.name);
// Update View's activePage
if (view) view.activePage = pageData;
// Hide/show navbar dynamically
if (newPage.hasClass('no-navbar') && !oldPage.hasClass('no-navbar')) {
view.hideNavbar();
}
if (!newPage.hasClass('no-navbar') && (oldPage.hasClass('no-navbar') || oldPage.hasClass('no-navbar-by-scroll'))) {
view.showNavbar();
}
// Hide/show navbar toolbar
if (newPage.hasClass('no-toolbar') && !oldPage.hasClass('no-toolbar')) {
view.hideToolbar();
}
if (!newPage.hasClass('no-toolbar') && (oldPage.hasClass('no-toolbar') || oldPage.hasClass('no-toolbar-by-scroll'))) {
view.showToolbar();
}
// Hide/show tabbar
var tabBar;
if (newPage.hasClass('no-tabbar') && !oldPage.hasClass('no-tabbar')) {
tabBar = $(view.container).find('.tabbar');
if (tabBar.length === 0) tabBar = $(view.container).parents('.' + app.params.viewsClass).find('.tabbar');
app.hideToolbar(tabBar);
}
if (!newPage.hasClass('no-tabbar') && (oldPage.hasClass('no-tabbar') || oldPage.hasClass('no-tabbar-by-scroll'))) {
tabBar = $(view.container).find('.tabbar');
if (tabBar.length === 0) tabBar = $(view.container).parents('.' + app.params.viewsClass).find('.tabbar');
app.showToolbar(tabBar);
}
oldPage.removeClass('no-navbar-by-scroll no-toolbar-by-scroll');
// Callbacks
app.pluginHook('pageBeforeAnimation', pageData);
if (app.params.onPageBeforeAnimation) app.params.onPageBeforeAnimation(app, pageData);
app.triggerPageCallbacks('beforeAnimation', pageData.name, pageData);
$(pageData.container).trigger('pageBeforeAnimation', {page: pageData});
}
};
// Init Page Events and Manipulations
app.initPage = function (pageContainer) {
pageContainer = $(pageContainer);
if (pageContainer.length === 0) return;
// Size navbars on page load
if (app.sizeNavbars) app.sizeNavbars(pageContainer.parents('.' + app.params.viewClass)[0]);
// Init messages
if (app.initPageMessages) app.initPageMessages(pageContainer);
// Init forms storage
if (app.initFormsStorage) app.initFormsStorage(pageContainer);
// Init smart select
if (app.initSmartSelects) app.initSmartSelects(pageContainer);
// Init slider
if (app.initPageSwiper) app.initPageSwiper(pageContainer);
// Init pull to refres
if (app.initPullToRefresh) app.initPullToRefresh(pageContainer);
// Init infinite scroll
if (app.initPageInfiniteScroll) app.initPageInfiniteScroll(pageContainer);
// Init searchbar
if (app.initSearchbar) app.initSearchbar(pageContainer);
// Init message bar
if (app.initPageMessagebar) app.initPageMessagebar(pageContainer);
// Init scroll toolbars
if (app.initPageScrollToolbars) app.initPageScrollToolbars(pageContainer);
// Init lazy images
if (app.initImagesLazyLoad) app.initImagesLazyLoad(pageContainer);
// Init progress bars
if (app.initPageProgressbar) app.initPageProgressbar(pageContainer);
// Init resizeable textareas
if (app.initPageResizableTextarea) app.initPageResizableTextarea(pageContainer);
// Init Material Preloader
if (app.params.material && app.initPageMaterialPreloader) app.initPageMaterialPreloader(pageContainer);
// Init Material Inputs
if (app.params.material && app.initPageMaterialInputs) app.initPageMaterialInputs(pageContainer);
// Init Material Tabbar
if (app.params.material && app.initPageMaterialTabbar) app.initPageMaterialTabbar(pageContainer);
};
app.reinitPage = function (pageContainer) {
pageContainer = $(pageContainer);
if (pageContainer.length === 0) return;
// Size navbars on page reinit
if (app.sizeNavbars) app.sizeNavbars(pageContainer.parents('.' + app.params.viewClass)[0]);
// Reinit slider
if (app.reinitPageSwiper) app.reinitPageSwiper(pageContainer);
// Reinit lazy load
if (app.reinitLazyLoad) app.reinitLazyLoad(pageContainer);
};
app.initPageWithCallback = function (pageContainer) {
pageContainer = $(pageContainer);
var viewContainer = pageContainer.parents('.' + app.params.viewClass);
if (viewContainer.length === 0) return;
var view = viewContainer[0].f7View || undefined;
var url = view && view.url ? view.url : undefined;
if (viewContainer && pageContainer.attr('data-page')) {
viewContainer.attr('data-page', pageContainer.attr('data-page'));
}
app.pageInitCallback(view, {pageContainer: pageContainer[0], url: url, position: 'center'});
};

View file

@ -1,328 +0,0 @@
/*======================================================
************ Panels ************
======================================================*/
app.allowPanelOpen = true;
app.openPanel = function (panelPosition) {
if (!app.allowPanelOpen) return false;
var panel = $('.panel-' + panelPosition);
if (panel.length === 0 || panel.hasClass('active')) return false;
app.closePanel(); // Close if some panel is opened
app.allowPanelOpen = false;
var effect = panel.hasClass('panel-reveal') ? 'reveal' : 'cover';
panel.css({display: 'block'}).addClass('active');
panel.trigger('open');
if (app.params.material) {
$('.panel-overlay').show();
}
if (panel.find('.' + app.params.viewClass).length > 0) {
if (app.sizeNavbars) app.sizeNavbars(panel.find('.' + app.params.viewClass)[0]);
}
// Trigger reLayout
var clientLeft = panel[0].clientLeft;
// Transition End;
var transitionEndTarget = effect === 'reveal' ? $('.' + app.params.viewsClass) : panel;
var openedTriggered = false;
function panelTransitionEnd() {
transitionEndTarget.transitionEnd(function (e) {
if ($(e.target).is(transitionEndTarget)) {
if (panel.hasClass('active')) {
panel.trigger('opened');
}
else {
panel.trigger('closed');
}
if (app.params.material) $('.panel-overlay').css({display: ''});
app.allowPanelOpen = true;
}
else panelTransitionEnd();
});
}
panelTransitionEnd();
$('body').addClass('with-panel-' + panelPosition + '-' + effect);
return true;
};
app.closePanel = function () {
var activePanel = $('.panel.active');
if (activePanel.length === 0) return false;
var effect = activePanel.hasClass('panel-reveal') ? 'reveal' : 'cover';
var panelPosition = activePanel.hasClass('panel-left') ? 'left' : 'right';
activePanel.removeClass('active');
var transitionEndTarget = effect === 'reveal' ? $('.' + app.params.viewsClass) : activePanel;
activePanel.trigger('close');
app.allowPanelOpen = false;
transitionEndTarget.transitionEnd(function () {
if (activePanel.hasClass('active')) return;
activePanel.css({display: ''});
activePanel.trigger('closed');
$('body').removeClass('panel-closing');
app.allowPanelOpen = true;
});
$('body').addClass('panel-closing').removeClass('with-panel-' + panelPosition + '-' + effect);
};
/*======================================================
************ Swipe panels ************
======================================================*/
app.initSwipePanels = function () {
var panel, side;
if (app.params.swipePanel) {
panel = $('.panel.panel-' + app.params.swipePanel);
side = app.params.swipePanel;
if (panel.length === 0 && side !== 'both') return;
}
else {
if (app.params.swipePanelOnlyClose) {
if ($('.panel').length === 0) return;
}
else return;
}
var panelOverlay = $('.panel-overlay');
var isTouched, isMoved, isScrolling, touchesStart = {}, touchStartTime, touchesDiff, translate, overlayOpacity, opened, panelWidth, effect, direction;
var views = $('.' + app.params.viewsClass);
function handleTouchStart(e) {
if (!app.allowPanelOpen || (!app.params.swipePanel && !app.params.swipePanelOnlyClose) || isTouched) return;
if ($('.modal-in, .photo-browser-in').length > 0) return;
if (!(app.params.swipePanelCloseOpposite || app.params.swipePanelOnlyClose)) {
if ($('.panel.active').length > 0 && !panel.hasClass('active')) return;
}
touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
if (app.params.swipePanelCloseOpposite || app.params.swipePanelOnlyClose) {
if ($('.panel.active').length > 0) {
side = $('.panel.active').hasClass('panel-left') ? 'left' : 'right';
}
else {
if (app.params.swipePanelOnlyClose) return;
side = app.params.swipePanel;
}
if (!side) return;
}
panel = $('.panel.panel-' + side);
opened = panel.hasClass('active');
if (app.params.swipePanelActiveArea && !opened) {
if (side === 'left') {
if (touchesStart.x > app.params.swipePanelActiveArea) return;
}
if (side === 'right') {
if (touchesStart.x < window.innerWidth - app.params.swipePanelActiveArea) return;
}
}
isMoved = false;
isTouched = true;
isScrolling = undefined;
touchStartTime = (new Date()).getTime();
direction = undefined;
}
function handleTouchMove(e) {
if (!isTouched) return;
if (e.f7PreventPanelSwipe) return;
var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
if (typeof isScrolling === 'undefined') {
isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
}
if (isScrolling) {
isTouched = false;
return;
}
if (!direction) {
if (pageX > touchesStart.x) {
direction = 'to-right';
}
else {
direction = 'to-left';
}
if(side === 'both'){
if ($('.panel.active').length > 0) {
side = $('.panel.active').hasClass('panel-left') ? 'left' : 'right';
}
else {
side = direction === 'to-right' ? 'left' : 'right';
}
panel = $('.panel.panel-' + side);
}
if (
side === 'left' &&
(
direction === 'to-left' && !panel.hasClass('active')
) ||
side === 'right' &&
(
direction === 'to-right' && !panel.hasClass('active')
)
)
{
isTouched = false;
return;
}
}
if (app.params.swipePanelNoFollow) {
var timeDiff = (new Date()).getTime() - touchStartTime;
if (timeDiff < 300) {
if (direction === 'to-left') {
if (side === 'right') app.openPanel(side);
if (side === 'left' && panel.hasClass('active')) app.closePanel();
}
if (direction === 'to-right') {
if (side === 'left') app.openPanel(side);
if (side === 'right' && panel.hasClass('active')) app.closePanel();
}
}
isTouched = false;
isMoved = false;
return;
}
if (!isMoved) {
effect = panel.hasClass('panel-cover') ? 'cover' : 'reveal';
if (!opened) {
panel.show();
panelOverlay.show();
}
panelWidth = panel[0].offsetWidth;
panel.transition(0);
if (panel.find('.' + app.params.viewClass).length > 0) {
if (app.sizeNavbars) app.sizeNavbars(panel.find('.' + app.params.viewClass)[0]);
}
}
isMoved = true;
e.preventDefault();
var threshold = opened ? 0 : -app.params.swipePanelThreshold;
if (side === 'right') threshold = -threshold;
touchesDiff = pageX - touchesStart.x + threshold;
if (side === 'right') {
translate = touchesDiff - (opened ? panelWidth : 0);
if (translate > 0) translate = 0;
if (translate < -panelWidth) {
translate = -panelWidth;
}
}
else {
translate = touchesDiff + (opened ? panelWidth : 0);
if (translate < 0) translate = 0;
if (translate > panelWidth) {
translate = panelWidth;
}
}
if (effect === 'reveal') {
views.transform('translate3d(' + translate + 'px,0,0)').transition(0);
panelOverlay.transform('translate3d(' + translate + 'px,0,0)').transition(0);
app.pluginHook('swipePanelSetTransform', views[0], panel[0], Math.abs(translate / panelWidth));
}
else {
panel.transform('translate3d(' + translate + 'px,0,0)').transition(0);
if (app.params.material) {
panelOverlay.transition(0);
overlayOpacity = Math.abs(translate/panelWidth);
panelOverlay.css({opacity: overlayOpacity});
}
app.pluginHook('swipePanelSetTransform', views[0], panel[0], Math.abs(translate / panelWidth));
}
}
function handleTouchEnd(e) {
if (!isTouched || !isMoved) {
isTouched = false;
isMoved = false;
return;
}
isTouched = false;
isMoved = false;
var timeDiff = (new Date()).getTime() - touchStartTime;
var action;
var edge = (translate === 0 || Math.abs(translate) === panelWidth);
if (!opened) {
if (translate === 0) {
action = 'reset';
}
else if (
timeDiff < 300 && Math.abs(translate) > 0 ||
timeDiff >= 300 && (Math.abs(translate) >= panelWidth / 2)
) {
action = 'swap';
}
else {
action = 'reset';
}
}
else {
if (translate === -panelWidth) {
action = 'reset';
}
else if (
timeDiff < 300 && Math.abs(translate) >= 0 ||
timeDiff >= 300 && (Math.abs(translate) <= panelWidth / 2)
) {
if (side === 'left' && translate === panelWidth) action = 'reset';
else action = 'swap';
}
else {
action = 'reset';
}
}
if (action === 'swap') {
app.allowPanelOpen = true;
if (opened) {
app.closePanel();
if (edge) {
panel.css({display: ''});
$('body').removeClass('panel-closing');
}
}
else {
app.openPanel(side);
}
if (edge) app.allowPanelOpen = true;
}
if (action === 'reset') {
if (opened) {
app.allowPanelOpen = true;
app.openPanel(side);
}
else {
app.closePanel();
if (edge) {
app.allowPanelOpen = true;
panel.css({display: ''});
}
else {
var target = effect === 'reveal' ? views : panel;
panel.trigger('close');
$('body').addClass('panel-closing');
target.transitionEnd(function () {
panel.trigger('closed');
panel.css({display: ''});
$('body').removeClass('panel-closing');
app.allowPanelOpen = true;
});
}
}
}
if (effect === 'reveal') {
views.transition('');
views.transform('');
}
panel.transition('').transform('');
panelOverlay.css({display: ''}).transform('').transition('').css('opacity', '');
}
var passiveListener = app.touchEvents.start === 'touchstart' && app.support.passiveListener ? {passive: true, capture: false} : false;
$(document).on(app.touchEvents.start, handleTouchStart, passiveListener);
$(document).on(app.touchEvents.move, handleTouchMove);
$(document).on(app.touchEvents.end, handleTouchEnd, passiveListener);
};

View file

@ -1,428 +0,0 @@
/*======================================================
************ Photo Browser ************
======================================================*/
var PhotoBrowser = function (params) {
var pb = this, i;
var defaults = {
photos : [],
initialSlide: 0,
spaceBetween: 20,
speed: 300,
zoom: true,
zoomMax: 3,
zoomMin: 1,
exposition: true,
expositionHideCaptions: false,
type: 'standalone',
navbar: true,
toolbar: true,
theme: 'light',
swipeToClose: true,
backLinkText: 'Close',
ofText: 'of',
loop: false,
lazyLoading: false,
lazyLoadingInPrevNext: false,
lazyLoadingOnTransitionStart: false,
material: app.params.material,
materialPreloaderSvg: app.params.materialPreloaderSvg,
materialPreloaderHtml: app.params.materialPreloaderHtml,
/*
Callbacks:
onLazyImageLoad(pb, slide, img)
onLazyImageReady(pb, slide, img)
onOpen(pb)
onClose(pb)
onTransitionStart(swiper)
onTransitionEnd(swiper)
onSlideChangeStart(swiper)
onSlideChangeEnd(swiper)
onTap(swiper, e)
onClick(swiper, e)
onDoubleTap(swiper, e)
onSwipeToClose(pb)
*/
};
params = params || {};
if (!params.backLinkText && app.params.material) defaults.backLinkText = '';
for (var def in defaults) {
if (typeof params[def] === 'undefined') {
params[def] = defaults[def];
}
}
if (params.maxZoom) {
params.zoomMax = params.maxZoom;
}
if (params.minZoom) {
params.zoomMin = params.minZoom;
}
pb.params = params;
pb.params.iconsColorClass = pb.params.iconsColor ? 'color-' + pb.params.iconsColor : (pb.params.theme === 'dark' ? 'color-white' : '');
pb.params.preloaderColorClass = pb.params.theme === 'dark' ? 'preloader-white' : '';
// Templates
var photoTemplate = pb.params.photoTemplate ||
'<div class="photo-browser-slide swiper-slide">' +
'<span class="swiper-zoom-container">' +
'<img src="{{js "this.url || this"}}">' +
'</span>' +
'</div>';
var photoLazyTemplate = pb.params.lazyPhotoTemplate ||
'<div class="photo-browser-slide photo-browser-slide-lazy swiper-slide">' +
'<div class="preloader {{@root.preloaderColorClass}}">{{#if @root.material}}{{@root.materialPreloaderHtml}}{{/if}}</div>' +
'<span class="swiper-zoom-container">' +
'<img data-src="{{js "this.url || this"}}" class="swiper-lazy">' +
'</span>' +
'</div>';
var objectTemplate = pb.params.objectTemplate ||
'<div class="photo-browser-slide photo-browser-object-slide swiper-slide">{{js "this.html || this"}}</div>';
var captionTemplate = pb.params.captionTemplate ||
'<div class="photo-browser-caption" data-caption-index="{{@index}}">' +
'{{caption}}' +
'</div>';
var navbarTemplate = pb.params.navbarTemplate ||
'<div class="navbar">' +
'<div class="navbar-inner">' +
'<div class="left sliding">' +
'<a href="#" class="link ' + (params.type === 'popup' ? 'close-popup' : 'photo-browser-close-link')+ ' {{#unless backLinkText}}icon-only{{/unless}} {{js "this.type === \'page\' ? \'back\' : \'\'"}}">' +
'<i class="icon icon-back {{iconsColorClass}}"></i>' +
'{{#if backLinkText}}<span>{{backLinkText}}</span>{{/if}}' +
'</a>' +
'</div>' +
'<div class="center sliding">' +
'<span class="photo-browser-current"></span> ' +
'<span class="photo-browser-of">{{ofText}}</span> ' +
'<span class="photo-browser-total"></span>' +
'</div>' +
'<div class="right"></div>' +
'</div>' +
'</div>';
var toolbarTemplate = pb.params.toolbarTemplate ||
'<div class="toolbar tabbar">' +
'<div class="toolbar-inner">' +
'<a href="#" class="link photo-browser-prev">' +
'<i class="icon icon-prev {{iconsColorClass}}"></i>' +
'</a>' +
'<a href="#" class="link photo-browser-next">' +
'<i class="icon icon-next {{iconsColorClass}}"></i>' +
'</a>' +
'</div>' +
'</div>';
var htmlTemplate = t7.compile('<div class="photo-browser photo-browser-{{theme}}">' +
'<div class="view navbar-fixed toolbar-fixed">' +
'{{#unless material}}{{#if navbar}}' +
navbarTemplate +
'{{/if}}{{/unless}}' +
'<div class="page no-toolbar {{#unless navbar}}no-navbar{{/unless}} toolbar-fixed navbar-fixed" data-page="photo-browser-slides">' +
'{{#if material}}{{#if navbar}}' +
navbarTemplate +
'{{/if}}{{/if}}' +
'{{#if toolbar}}' +
toolbarTemplate +
'{{/if}}' +
'<div class="photo-browser-captions photo-browser-captions-{{js "this.captionsTheme || this.theme"}}">' +
'{{#each photos}}{{#if caption}}' +
captionTemplate +
'{{/if}}{{/each}}' +
'</div>' +
'<div class="photo-browser-swiper-container swiper-container">' +
'<div class="photo-browser-swiper-wrapper swiper-wrapper">' +
'{{#each photos}}' +
'{{#js_compare "this.html || ((typeof this === \'string\' || this instanceof String) && (this.indexOf(\'<\') >= 0 || this.indexOf(\'>\') >= 0))"}}' +
objectTemplate +
'{{else}}' +
'{{#if @root.lazyLoading}}' +
photoLazyTemplate +
'{{else}}' +
photoTemplate +
'{{/if}}' +
'{{/js_compare}}' +
'{{/each}}' +
'</div>' +
'</div>' +
'</div>' +
'</div>' +
'</div>')(pb.params);
pb.activeIndex = pb.params.initialSlide;
pb.openIndex = pb.activeIndex;
pb.opened = false;
pb.open = function (index) {
if (typeof index === 'undefined') index = pb.activeIndex;
index = parseInt(index, 10);
if (pb.opened && pb.swiper) {
pb.swiper.slideTo(index);
return;
}
pb.opened = true;
pb.openIndex = index;
if (pb.params.type === 'standalone') {
app.root.append(htmlTemplate);
}
if (pb.params.type === 'popup') {
pb.popup = app.popup('<div class="popup photo-browser-popup">' + htmlTemplate + '</div>');
$(pb.popup).on('closed', pb.onPopupClose);
}
if (pb.params.type === 'page') {
$(document).on('pageBeforeInit', pb.onPageBeforeInit);
$(document).on('pageBeforeRemove', pb.onPageBeforeRemove);
if (!pb.params.view) pb.params.view = app.mainView;
pb.params.view.loadContent(htmlTemplate);
return;
}
pb.layout(pb.openIndex);
if (pb.params.onOpen) {
pb.params.onOpen(pb);
}
};
pb.close = function () {
pb.opened = false;
if (!pb.swiperContainer || pb.swiperContainer.length === 0) {
return;
}
if (pb.params.onClose) {
pb.params.onClose(pb);
}
// Detach events
pb.attachEvents(true);
// Delete from DOM
if (pb.params.type === 'standalone') {
pb.container.removeClass('photo-browser-in').addClass('photo-browser-out').animationEnd(function () {
pb.container.remove();
});
}
// Destroy slider
pb.swiper.destroy();
// Delete references
pb.swiper = pb.swiperContainer = pb.swiperWrapper = pb.slides = undefined; //gestureSlide = gestureImg = gestureImgWrap = undefined;
};
pb.onPopupClose = function (e) {
pb.close();
$(pb.popup).off('pageBeforeInit', pb.onPopupClose);
};
pb.onPageBeforeInit = function (e) {
if (e.detail.page.name === 'photo-browser-slides') {
pb.layout(pb.openIndex);
}
$(document).off('pageBeforeInit', pb.onPageBeforeInit);
};
pb.onPageBeforeRemove = function (e) {
if (e.detail.page.name === 'photo-browser-slides') {
pb.close();
}
$(document).off('pageBeforeRemove', pb.onPageBeforeRemove);
};
pb.onSliderTransitionStart = function (swiper) {
pb.activeIndex = swiper.activeIndex;
var current = swiper.activeIndex + 1;
var total = swiper.slides.length;
if (pb.params.loop) {
total = total - 2;
current = current - swiper.loopedSlides;
if (current < 1) current = total + current;
if (current > total) current = current - total;
}
pb.container.find('.photo-browser-current').text(current);
pb.container.find('.photo-browser-total').text(total);
$('.photo-browser-prev, .photo-browser-next').removeClass('photo-browser-link-inactive');
if (swiper.isBeginning && !pb.params.loop) {
$('.photo-browser-prev').addClass('photo-browser-link-inactive');
}
if (swiper.isEnd && !pb.params.loop) {
$('.photo-browser-next').addClass('photo-browser-link-inactive');
}
// Update captions
if (pb.captions.length > 0) {
pb.captionsContainer.find('.photo-browser-caption-active').removeClass('photo-browser-caption-active');
var captionIndex = pb.params.loop ? swiper.slides.eq(swiper.activeIndex).attr('data-swiper-slide-index') : pb.activeIndex;
pb.captionsContainer.find('[data-caption-index="' + captionIndex + '"]').addClass('photo-browser-caption-active');
}
// Stop Video
var previousSlideVideo = swiper.slides.eq(swiper.previousIndex).find('video');
if (previousSlideVideo.length > 0) {
if ('pause' in previousSlideVideo[0]) previousSlideVideo[0].pause();
}
// Callback
if (pb.params.onTransitionStart) pb.params.onTransitionStart(swiper);
};
pb.onSliderTransitionEnd = function (swiper) {
if (pb.params.onTransitionEnd) pb.params.onTransitionEnd(swiper);
};
pb.layout = function (index) {
if (pb.params.type === 'page') {
pb.container = $('.photo-browser-swiper-container').parents('.view');
}
else {
pb.container = $('.photo-browser');
}
if (pb.params.type === 'standalone') {
pb.container.addClass('photo-browser-in');
app.sizeNavbars(pb.container);
}
pb.swiperContainer = pb.container.find('.photo-browser-swiper-container');
pb.swiperWrapper = pb.container.find('.photo-browser-swiper-wrapper');
pb.slides = pb.container.find('.photo-browser-slide');
pb.captionsContainer = pb.container.find('.photo-browser-captions');
pb.captions = pb.container.find('.photo-browser-caption');
var sliderSettings = {
nextButton: pb.params.nextButton || '.photo-browser-next',
prevButton: pb.params.prevButton || '.photo-browser-prev',
indexButton: pb.params.indexButton,
initialSlide: index,
spaceBetween: pb.params.spaceBetween,
speed: pb.params.speed,
loop: pb.params.loop,
lazyLoading: pb.params.lazyLoading,
lazyLoadingInPrevNext: pb.params.lazyLoadingInPrevNext,
lazyLoadingOnTransitionStart: pb.params.lazyLoadingOnTransitionStart,
preloadImages: pb.params.lazyLoading ? false : true,
zoom: pb.params.zoom,
zoomMax: pb.params.zoomMax,
zoomMin: pb.params.zoomMin,
onTap: function (swiper, e) {
if (pb.params.onTap) pb.params.onTap(swiper, e);
},
onClick: function (swiper, e) {
if (pb.params.exposition) pb.toggleExposition();
if (pb.params.onClick) pb.params.onClick(swiper, e);
},
onDoubleTap: function (swiper, e) {
// pb.toggleZoom(e);
if (pb.params.onDoubleTap) pb.params.onDoubleTap(swiper, e);
},
onTransitionStart: function (swiper) {
pb.onSliderTransitionStart(swiper);
},
onTransitionEnd: function (swiper) {
pb.onSliderTransitionEnd(swiper);
},
onSlideChangeStart: pb.params.onSlideChangeStart,
onSlideChangeEnd: pb.params.onSlideChangeEnd,
onLazyImageLoad: function (swiper, slide, img) {
if (pb.params.onLazyImageLoad) pb.params.onLazyImageLoad(pb, slide, img);
},
onLazyImageReady: function (swiper, slide, img) {
$(slide).removeClass('photo-browser-slide-lazy');
if (pb.params.onLazyImageReady) pb.params.onLazyImageReady(pb, slide, img);
}
};
if (pb.params.swipeToClose && pb.params.type !== 'page') {
sliderSettings.onTouchStart = pb.swipeCloseTouchStart;
sliderSettings.onTouchMoveOpposite = pb.swipeCloseTouchMove;
sliderSettings.onTouchEnd = pb.swipeCloseTouchEnd;
}
pb.swiper = app.swiper(pb.swiperContainer, sliderSettings);
if (index === 0) {
pb.onSliderTransitionStart(pb.swiper);
}
pb.attachEvents();
};
pb.attachEvents = function (detach) {
var action = detach ? 'off' : 'on';
pb.container.find('.photo-browser-close-link')[action]('click', pb.close);
};
// Expose
pb.exposed = false;
pb.toggleExposition = function () {
if (pb.container) pb.container.toggleClass('photo-browser-exposed');
if (pb.params.expositionHideCaptions) pb.captionsContainer.toggleClass('photo-browser-captions-exposed');
pb.exposed = !pb.exposed;
};
pb.enableExposition = function () {
if (pb.container) pb.container.addClass('photo-browser-exposed');
if (pb.params.expositionHideCaptions) pb.captionsContainer.addClass('photo-browser-captions-exposed');
pb.exposed = true;
};
pb.disableExposition = function () {
if (pb.container) pb.container.removeClass('photo-browser-exposed');
if (pb.params.expositionHideCaptions) pb.captionsContainer.removeClass('photo-browser-captions-exposed');
pb.exposed = false;
};
// Swipe Up To Close
var swipeToCloseIsTouched = false;
var allowSwipeToClose = true;
var swipeToCloseDiff, swipeToCloseStart, swipeToCloseCurrent, swipeToCloseStarted = false, swipeToCloseActiveSlide, swipeToCloseTimeStart;
pb.swipeCloseTouchStart = function (swiper, e) {
if (!allowSwipeToClose) return;
swipeToCloseIsTouched = true;
};
pb.swipeCloseTouchMove = function (swiper, e) {
if (!swipeToCloseIsTouched) return;
if (!swipeToCloseStarted) {
swipeToCloseStarted = true;
swipeToCloseStart = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
swipeToCloseActiveSlide = pb.swiper.slides.eq(pb.swiper.activeIndex);
swipeToCloseTimeStart = (new Date()).getTime();
}
e.preventDefault();
swipeToCloseCurrent = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
swipeToCloseDiff = swipeToCloseStart - swipeToCloseCurrent;
var opacity = 1 - Math.abs(swipeToCloseDiff) / 300;
swipeToCloseActiveSlide.transform('translate3d(0,' + (-swipeToCloseDiff) + 'px,0)');
pb.swiper.container.css('opacity', opacity).transition(0);
};
pb.swipeCloseTouchEnd = function (swiper, e) {
swipeToCloseIsTouched = false;
if (!swipeToCloseStarted) {
swipeToCloseStarted = false;
return;
}
swipeToCloseStarted = false;
allowSwipeToClose = false;
var diff = Math.abs(swipeToCloseDiff);
var timeDiff = (new Date()).getTime() - swipeToCloseTimeStart;
if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > 100)) {
setTimeout(function () {
if (pb.params.type === 'standalone') {
pb.close();
}
if (pb.params.type === 'popup') {
app.closeModal(pb.popup);
}
if (pb.params.onSwipeToClose) {
pb.params.onSwipeToClose(pb);
}
allowSwipeToClose = true;
}, 0);
return;
}
if (diff !== 0) {
swipeToCloseActiveSlide.addClass('transitioning').transitionEnd(function () {
allowSwipeToClose = true;
swipeToCloseActiveSlide.removeClass('transitioning');
});
}
else {
allowSwipeToClose = true;
}
pb.swiper.container.css('opacity', '').transition('');
swipeToCloseActiveSlide.transform('');
};
return pb;
};
app.photoBrowser = function (params) {
return new PhotoBrowser(params);
};

View file

@ -1,607 +0,0 @@
/*======================================================
************ Picker ************
======================================================*/
var Picker = function (params) {
var p = this;
var defaults = {
updateValuesOnMomentum: false,
updateValuesOnTouchmove: true,
rotateEffect: false,
momentumRatio: 7,
freeMode: false,
// Common settings
closeByOutsideClick: true,
scrollToInput: true,
inputReadOnly: true,
convertToPopover: true,
onlyInPopover: false,
toolbar: true,
toolbarCloseText: 'Done',
toolbarTemplate:
'<div class="toolbar">' +
'<div class="toolbar-inner">' +
'<div class="left"></div>' +
'<div class="right">' +
'<a href="#" class="link close-picker">{{closeText}}</a>' +
'</div>' +
'</div>' +
'</div>'
};
params = params || {};
for (var def in defaults) {
if (typeof params[def] === 'undefined') {
params[def] = defaults[def];
}
}
p.params = params;
p.cols = [];
p.initialized = false;
// Inline flag
p.inline = p.params.container ? true : false;
// 3D Transforms origin bug, only on safari
var originBug = app.device.ios || (navigator.userAgent.toLowerCase().indexOf('safari') >= 0 && navigator.userAgent.toLowerCase().indexOf('chrome') < 0) && !app.device.android;
// Should be converted to popover
function isPopover() {
var toPopover = false;
if (!p.params.convertToPopover && !p.params.onlyInPopover) return toPopover;
if (!p.inline && p.params.input) {
if (p.params.onlyInPopover) toPopover = true;
else {
if (app.device.ios) {
toPopover = app.device.ipad ? true : false;
}
else {
if ($(window).width() >= 768) toPopover = true;
}
}
}
return toPopover;
}
function inPopover() {
if (p.opened && p.container && p.container.length > 0 && p.container.parents('.popover').length > 0) return true;
else return false;
}
// Value
p.setValue = function (arrValues, transition) {
var valueIndex = 0;
if (p.cols.length === 0) {
p.value = arrValues;
p.updateValue(arrValues);
return;
}
for (var i = 0; i < p.cols.length; i++) {
if (p.cols[i] && !p.cols[i].divider) {
p.cols[i].setValue(arrValues[valueIndex], transition);
valueIndex++;
}
}
};
p.updateValue = function (forceValues) {
var newValue = forceValues || [];
var newDisplayValue = [];
for (var i = 0; i < p.cols.length; i++) {
if (!p.cols[i].divider) {
newValue.push(p.cols[i].value);
newDisplayValue.push(p.cols[i].displayValue);
}
}
if (newValue.indexOf(undefined) >= 0) {
return;
}
p.value = newValue;
p.displayValue = newDisplayValue;
if (p.params.onChange) {
p.params.onChange(p, p.value, p.displayValue);
}
if (p.input && p.input.length > 0) {
$(p.input).val(p.params.formatValue ? p.params.formatValue(p, p.value, p.displayValue) : p.value.join(' '));
$(p.input).trigger('change');
}
};
// Columns Handlers
p.initPickerCol = function (colElement, updateItems) {
var colContainer = $(colElement);
var colIndex = colContainer.index();
var col = p.cols[colIndex];
if (col.divider) return;
col.container = colContainer;
col.wrapper = col.container.find('.picker-items-col-wrapper');
col.items = col.wrapper.find('.picker-item');
var i, j;
var wrapperHeight, itemHeight, itemsHeight, minTranslate, maxTranslate;
col.replaceValues = function (values, displayValues) {
col.destroyEvents();
col.values = values;
col.displayValues = displayValues;
var newItemsHTML = p.columnHTML(col, true);
col.wrapper.html(newItemsHTML);
col.items = col.wrapper.find('.picker-item');
col.calcSize();
col.setValue(col.values[0], 0, true);
col.initEvents();
};
col.calcSize = function () {
if (p.params.rotateEffect) {
col.container.removeClass('picker-items-col-absolute');
if (!col.width) col.container.css({width:''});
}
var colWidth, colHeight;
colWidth = 0;
colHeight = col.container[0].offsetHeight;
wrapperHeight = col.wrapper[0].offsetHeight;
itemHeight = col.items[0].offsetHeight;
itemsHeight = itemHeight * col.items.length;
minTranslate = colHeight / 2 - itemsHeight + itemHeight / 2;
maxTranslate = colHeight / 2 - itemHeight / 2;
if (col.width) {
colWidth = col.width;
if (parseInt(colWidth, 10) === colWidth) colWidth = colWidth + 'px';
col.container.css({width: colWidth});
}
if (p.params.rotateEffect) {
if (!col.width) {
col.items.each(function () {
var item = $(this);
item.css({width:'auto'});
colWidth = Math.max(colWidth, item[0].offsetWidth);
item.css({width:''});
});
col.container.css({width: (colWidth + 2) + 'px'});
}
col.container.addClass('picker-items-col-absolute');
}
};
col.calcSize();
col.wrapper.transform('translate3d(0,' + maxTranslate + 'px,0)').transition(0);
var activeIndex = 0;
var animationFrameId;
// Set Value Function
col.setValue = function (newValue, transition, valueCallbacks) {
if (typeof transition === 'undefined') transition = '';
var newActiveIndex = col.wrapper.find('.picker-item[data-picker-value="' + newValue + '"]').index();
if(typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {
return;
}
var newTranslate = -newActiveIndex * itemHeight + maxTranslate;
// Update wrapper
col.wrapper.transition(transition);
col.wrapper.transform('translate3d(0,' + (newTranslate) + 'px,0)');
// Watch items
if (p.params.updateValuesOnMomentum && col.activeIndex && col.activeIndex !== newActiveIndex ) {
$.cancelAnimationFrame(animationFrameId);
col.wrapper.transitionEnd(function(){
$.cancelAnimationFrame(animationFrameId);
});
updateDuringScroll();
}
// Update items
col.updateItems(newActiveIndex, newTranslate, transition, valueCallbacks);
};
col.updateItems = function (activeIndex, translate, transition, valueCallbacks) {
if (typeof translate === 'undefined') {
translate = $.getTranslate(col.wrapper[0], 'y');
}
if(typeof activeIndex === 'undefined') activeIndex = -Math.round((translate - maxTranslate)/itemHeight);
if (activeIndex < 0) activeIndex = 0;
if (activeIndex >= col.items.length) activeIndex = col.items.length - 1;
var previousActiveIndex = col.activeIndex;
col.activeIndex = activeIndex;
col.wrapper.find('.picker-selected').removeClass('picker-selected');
col.items.transition(transition);
var selectedItem = col.items.eq(activeIndex).addClass('picker-selected').transform('');
// Set 3D rotate effect
if (p.params.rotateEffect) {
var percentage = (translate - (Math.floor((translate - maxTranslate)/itemHeight) * itemHeight + maxTranslate)) / itemHeight;
col.items.each(function () {
var item = $(this);
var itemOffsetTop = item.index() * itemHeight;
var translateOffset = maxTranslate - translate;
var itemOffset = itemOffsetTop - translateOffset;
var percentage = itemOffset / itemHeight;
var itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;
var angle = (-18*percentage);
if (angle > 180) angle = 180;
if (angle < -180) angle = -180;
// Far class
if (Math.abs(percentage) > itemsFit) item.addClass('picker-item-far');
else item.removeClass('picker-item-far');
// Set transform
item.transform('translate3d(0, ' + (-translate + maxTranslate) + 'px, ' + (originBug ? -110 : 0) + 'px) rotateX(' + angle + 'deg)');
});
}
if (valueCallbacks || typeof valueCallbacks === 'undefined') {
// Update values
col.value = selectedItem.attr('data-picker-value');
col.displayValue = col.displayValues ? col.displayValues[activeIndex] : col.value;
// On change callback
if (previousActiveIndex !== activeIndex) {
if (col.onChange) {
col.onChange(p, col.value, col.displayValue);
}
p.updateValue();
}
}
};
function updateDuringScroll() {
animationFrameId = $.requestAnimationFrame(function () {
col.updateItems(undefined, undefined, 0);
updateDuringScroll();
});
}
// Update items on init
if (updateItems) col.updateItems(0, maxTranslate, 0);
var allowItemClick = true;
var isTouched, isMoved, touchStartY, touchCurrentY, touchStartTime, touchEndTime, startTranslate, returnTo, currentTranslate, prevTranslate, velocityTranslate, velocityTime;
function handleTouchStart (e) {
if (isMoved || isTouched) return;
e.preventDefault();
isTouched = true;
touchStartY = touchCurrentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
touchStartTime = (new Date()).getTime();
allowItemClick = true;
startTranslate = currentTranslate = $.getTranslate(col.wrapper[0], 'y');
}
function handleTouchMove (e) {
if (!isTouched) return;
e.preventDefault();
allowItemClick = false;
touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
if (!isMoved) {
// First move
$.cancelAnimationFrame(animationFrameId);
isMoved = true;
startTranslate = currentTranslate = $.getTranslate(col.wrapper[0], 'y');
col.wrapper.transition(0);
}
var diff = touchCurrentY - touchStartY;
currentTranslate = startTranslate + diff;
returnTo = undefined;
// Normalize translate
if (currentTranslate < minTranslate) {
currentTranslate = minTranslate - Math.pow(minTranslate - currentTranslate, 0.8);
returnTo = 'min';
}
if (currentTranslate > maxTranslate) {
currentTranslate = maxTranslate + Math.pow(currentTranslate - maxTranslate, 0.8);
returnTo = 'max';
}
// Transform wrapper
col.wrapper.transform('translate3d(0,' + currentTranslate + 'px,0)');
// Update items
col.updateItems(undefined, currentTranslate, 0, p.params.updateValuesOnTouchmove);
// Calc velocity
velocityTranslate = currentTranslate - prevTranslate || currentTranslate;
velocityTime = (new Date()).getTime();
prevTranslate = currentTranslate;
}
function handleTouchEnd (e) {
if (!isTouched || !isMoved) {
isTouched = isMoved = false;
return;
}
isTouched = isMoved = false;
col.wrapper.transition('');
if (returnTo) {
if (returnTo === 'min') {
col.wrapper.transform('translate3d(0,' + minTranslate + 'px,0)');
}
else col.wrapper.transform('translate3d(0,' + maxTranslate + 'px,0)');
}
touchEndTime = new Date().getTime();
var velocity, newTranslate;
if (touchEndTime - touchStartTime > 300) {
newTranslate = currentTranslate;
}
else {
velocity = Math.abs(velocityTranslate / (touchEndTime - velocityTime));
newTranslate = currentTranslate + velocityTranslate * p.params.momentumRatio;
}
newTranslate = Math.max(Math.min(newTranslate, maxTranslate), minTranslate);
// Active Index
var activeIndex = -Math.floor((newTranslate - maxTranslate)/itemHeight);
// Normalize translate
if (!p.params.freeMode) newTranslate = -activeIndex * itemHeight + maxTranslate;
// Transform wrapper
col.wrapper.transform('translate3d(0,' + (parseInt(newTranslate,10)) + 'px,0)');
// Update items
col.updateItems(activeIndex, newTranslate, '', true);
// Watch items
if (p.params.updateValuesOnMomentum) {
updateDuringScroll();
col.wrapper.transitionEnd(function(){
$.cancelAnimationFrame(animationFrameId);
});
}
// Allow click
setTimeout(function () {
allowItemClick = true;
}, 100);
}
function handleClick(e) {
if (!allowItemClick) return;
$.cancelAnimationFrame(animationFrameId);
/*jshint validthis:true */
var value = $(this).attr('data-picker-value');
col.setValue(value);
}
col.initEvents = function (detach) {
var method = detach ? 'off' : 'on';
col.container[method](app.touchEvents.start, handleTouchStart);
col.container[method](app.touchEvents.move, handleTouchMove);
col.container[method](app.touchEvents.end, handleTouchEnd);
col.items[method]('click', handleClick);
};
col.destroyEvents = function () {
col.initEvents(true);
};
col.container[0].f7DestroyPickerCol = function () {
col.destroyEvents();
};
col.initEvents();
};
p.destroyPickerCol = function (colContainer) {
colContainer = $(colContainer);
if ('f7DestroyPickerCol' in colContainer[0]) colContainer[0].f7DestroyPickerCol();
};
// Resize cols
function resizeCols() {
if (!p.opened) return;
for (var i = 0; i < p.cols.length; i++) {
if (!p.cols[i].divider) {
p.cols[i].calcSize();
p.cols[i].setValue(p.cols[i].value, 0, false);
}
}
}
$(window).on('resize', resizeCols);
// HTML Layout
p.columnHTML = function (col, onlyItems) {
var columnItemsHTML = '';
var columnHTML = '';
if (col.divider) {
columnHTML += '<div class="picker-items-col picker-items-col-divider ' + (col.textAlign ? 'picker-items-col-' + col.textAlign : '') + ' ' + (col.cssClass || '') + '">' + col.content + '</div>';
}
else {
for (var j = 0; j < col.values.length; j++) {
columnItemsHTML += '<div class="picker-item" data-picker-value="' + col.values[j] + '">' + (col.displayValues ? col.displayValues[j] : col.values[j]) + '</div>';
}
columnHTML += '<div class="picker-items-col ' + (col.textAlign ? 'picker-items-col-' + col.textAlign : '') + ' ' + (col.cssClass || '') + '"><div class="picker-items-col-wrapper">' + columnItemsHTML + '</div></div>';
}
return onlyItems ? columnItemsHTML : columnHTML;
};
p.layout = function () {
var pickerHTML = '';
var pickerClass = '';
var i;
p.cols = [];
var colsHTML = '';
for (i = 0; i < p.params.cols.length; i++) {
var col = p.params.cols[i];
colsHTML += p.columnHTML(p.params.cols[i]);
p.cols.push(col);
}
pickerClass = 'picker-modal picker-columns ' + (p.params.cssClass || '') + (p.params.rotateEffect ? ' picker-3d' : '');
pickerHTML =
'<div class="' + (pickerClass) + '">' +
(p.params.toolbar ? p.params.toolbarTemplate.replace(/{{closeText}}/g, p.params.toolbarCloseText) : '') +
'<div class="picker-modal-inner picker-items">' +
colsHTML +
'<div class="picker-center-highlight"></div>' +
'</div>' +
'</div>';
p.pickerHTML = pickerHTML;
};
// Input Events
function openOnInput(e) {
e.preventDefault();
if (p.opened) return;
p.open();
if (p.params.scrollToInput && !isPopover()) {
var pageContent = p.input.parents('.page-content');
if (pageContent.length === 0) return;
var paddingTop = parseInt(pageContent.css('padding-top'), 10),
paddingBottom = parseInt(pageContent.css('padding-bottom'), 10),
pageHeight = pageContent[0].offsetHeight - paddingTop - p.container.height(),
pageScrollHeight = pageContent[0].scrollHeight - paddingTop - p.container.height(),
newPaddingBottom;
var inputTop = p.input.offset().top - paddingTop + p.input[0].offsetHeight;
if (inputTop > pageHeight) {
var scrollTop = pageContent.scrollTop() + inputTop - pageHeight;
if (scrollTop + pageHeight > pageScrollHeight) {
newPaddingBottom = scrollTop + pageHeight - pageScrollHeight + paddingBottom;
if (pageHeight === pageScrollHeight) {
newPaddingBottom = p.container.height();
}
pageContent.css({'padding-bottom': (newPaddingBottom) + 'px'});
}
pageContent.scrollTop(scrollTop, 300);
}
}
}
function closeOnHTMLClick(e) {
if (inPopover()) return;
if (p.input && p.input.length > 0) {
if (e.target !== p.input[0] && $(e.target).parents('.picker-modal').length === 0) p.close();
}
else {
if ($(e.target).parents('.picker-modal').length === 0) p.close();
}
}
if (p.params.input) {
p.input = $(p.params.input);
if (p.input.length > 0) {
if (p.params.inputReadOnly) p.input.prop('readOnly', true);
if (!p.inline) {
p.input.on('click', openOnInput);
}
if (p.params.inputReadOnly) {
p.input.on('focus mousedown', function (e) {
e.preventDefault();
});
}
}
}
if (!p.inline && p.params.closeByOutsideClick) $('html').on('click', closeOnHTMLClick);
// Open
function onPickerClose() {
p.opened = false;
if (p.input && p.input.length > 0) {
p.input.parents('.page-content').css({'padding-bottom': ''});
if (app.params.material) p.input.trigger('blur');
}
if (p.params.onClose) p.params.onClose(p);
// Destroy events
p.container.find('.picker-items-col').each(function () {
p.destroyPickerCol(this);
});
}
p.opened = false;
p.open = function () {
var toPopover = isPopover();
if (!p.opened) {
// Layout
p.layout();
// Append
if (toPopover) {
p.pickerHTML = '<div class="popover popover-picker-columns"><div class="popover-inner">' + p.pickerHTML + '</div></div>';
p.popover = app.popover(p.pickerHTML, p.params.input, true);
p.container = $(p.popover).find('.picker-modal');
$(p.popover).on('close', function () {
onPickerClose();
});
}
else if (p.inline) {
p.container = $(p.pickerHTML);
p.container.addClass('picker-modal-inline');
$(p.params.container).append(p.container);
}
else {
p.container = $(app.pickerModal(p.pickerHTML));
$(p.container)
.on('close', function () {
onPickerClose();
});
}
// Store picker instance
p.container[0].f7Picker = p;
// Init Events
p.container.find('.picker-items-col').each(function () {
var updateItems = true;
if ((!p.initialized && p.params.value) || (p.initialized && p.value)) updateItems = false;
p.initPickerCol(this, updateItems);
});
// Set value
if (!p.initialized) {
if (p.value) p.setValue(p.value, 0);
else if (p.params.value) {
p.setValue(p.params.value, 0);
}
}
else {
if (p.value) p.setValue(p.value, 0);
}
// Material Focus
if (p.input && p.input.length > 0 && app.params.material) {
p.input.trigger('focus');
}
}
// Set flag
p.opened = true;
p.initialized = true;
if (p.params.onOpen) p.params.onOpen(p);
};
// Close
p.close = function () {
if (!p.opened || p.inline) return;
if (inPopover()) {
app.closeModal(p.popover);
return;
}
else {
app.closeModal(p.container);
return;
}
};
// Destroy
p.destroy = function () {
p.close();
if (p.params.input && p.input.length > 0) {
p.input.off('click focus', openOnInput);
}
$('html').off('click', closeOnHTMLClick);
$(window).off('resize', resizeCols);
};
if (p.inline) {
p.open();
}
else {
if (!p.initialized && p.params.value) p.setValue(p.params.value);
}
return p;
};
app.picker = function (params) {
return new Picker(params);
};

View file

@ -1,40 +0,0 @@
/*=======================================
************ Plugins API ************
=======================================*/
var _plugins = [];
app.initPlugins = function () {
// Initialize plugins
for (var plugin in app.plugins) {
var p = app.plugins[plugin](app, app.params[plugin]);
if (p) _plugins.push(p);
}
};
// Plugin Hooks
app.pluginHook = function (hook) {
for (var i = 0; i < _plugins.length; i++) {
if (_plugins[i].hooks && hook in _plugins[i].hooks) {
_plugins[i].hooks[hook](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
}
}
};
// Prevented by plugin
app.pluginPrevent = function (action) {
var prevent = false;
for (var i = 0; i < _plugins.length; i++) {
if (_plugins[i].prevents && action in _plugins[i].prevents) {
if (_plugins[i].prevents[action](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])) prevent = true;
}
}
return prevent;
};
// Preprocess content by plugin
app.pluginProcess = function (process, data) {
var processed = data;
for (var i = 0; i < _plugins.length; i++) {
if (_plugins[i].preprocess && process in _plugins[i].preprocess) {
processed = _plugins[i].preprocess[process](data, arguments[2], arguments[3], arguments[4], arguments[5], arguments[6]);
}
}
return processed;
};

View file

@ -1,78 +0,0 @@
/*===============================================================================
************ Progress Bar ************
===============================================================================*/
app.setProgressbar = function (container, progress, speed) {
container = $(container || app.root);
if (container.length === 0) return;
if (progress) progress = Math.min(Math.max(progress, 0), 100);
var progressbar;
if (container.hasClass('progressbar')) progressbar = container;
else {
progressbar = container.children('.progressbar');
}
if (progressbar.length === 0 || progressbar.hasClass('progressbar-infinite')) return;
var clientLeft = progressbar[0].clientLeft;
progressbar.children('span').transform('translate3d(' + (-100 + progress) + '%,0,0)');
if (typeof speed !== 'undefined') {
progressbar.children('span').transition(speed);
}
else {
progressbar.children('span').transition('');
}
return progressbar[0];
};
app.showProgressbar = function (container, progress, color) {
if (typeof container === 'number') {
container = app.root;
progress = arguments[0];
color = arguments[1];
}
if (progress && typeof progress === 'string' && parseFloat(progress) !== progress * 1) {
color = progress;
progress = undefined;
}
container = $(container || app.root);
if (container.length === 0) return;
var progressbar;
if (container.hasClass('progressbar')) progressbar = container;
else {
progressbar = container.children('.progressbar:not(.progressbar-out), .progressbar-infinite:not(.progressbar-out)');
if (progressbar.length === 0) {
// Create one
if (typeof progress !== 'undefined') {
// Determined
progressbar = $('<span class="progressbar progressbar-in' + (color ? ' color-' + color : '') + '"><span></span></span>');
}
else {
// Infinite
progressbar = $('<span class="progressbar-infinite progressbar-in' + (color ? ' color-' + color : '') + '"></span>');
}
container.append(progressbar);
}
}
if (progress) app.setProgressbar(container, progress);
return progressbar[0];
};
app.hideProgressbar = function (container) {
container = $(container || app.root);
if (container.length === 0) return;
var progressbar;
if (container.hasClass('progressbar')) progressbar = container;
else {
progressbar = container.children('.progressbar, .progressbar-infinite');
}
if (progressbar.length === 0 || !progressbar.hasClass('progressbar-in') || progressbar.hasClass('progressbar-out')) return;
progressbar.removeClass('progressbar-in').addClass('progressbar-out').animationEnd(function () {
progressbar.remove();
progressbar = null;
});
return;
};
app.initPageProgressbar = function (pageContainer) {
pageContainer = $(pageContainer);
pageContainer.find('.progressbar').each(function () {
var p = $(this);
if (p.children('span').length === 0) p.append('<span></span>');
if (p.attr('data-progress')) app.setProgressbar(p, p.attr('data-progress'));
});
};

View file

@ -1,104 +0,0 @@
/*===========================
Device/OS Detection
===========================*/
Framework7.prototype.device = (function () {
var device = {};
var ua = navigator.userAgent;
var $ = Dom7;
var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
var iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/);
device.ios = device.android = device.iphone = device.ipad = device.androidChrome = false;
// Android
if (android) {
device.os = 'android';
device.osVersion = android[2];
device.android = true;
device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
}
if (ipad || iphone || ipod) {
device.os = 'ios';
device.ios = true;
}
// iOS
if (iphone && !ipod) {
device.osVersion = iphone[2].replace(/_/g, '.');
device.iphone = true;
}
if (ipad) {
device.osVersion = ipad[2].replace(/_/g, '.');
device.ipad = true;
}
if (ipod) {
device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
device.iphone = true;
}
// iOS 8+ changed UA
if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
if (device.osVersion.split('.')[0] === '10') {
device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
}
}
// Webview
device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);
// Minimal UI
if (device.os && device.os === 'ios') {
var osVersionArr = device.osVersion.split('.');
device.minimalUi = !device.webView &&
(ipod || iphone) &&
(osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7) &&
$('meta[name="viewport"]').length > 0 && $('meta[name="viewport"]').attr('content').indexOf('minimal-ui') >= 0;
}
// Check for status bar and fullscreen app mode
var windowWidth = $(window).width();
var windowHeight = $(window).height();
device.statusBar = false;
if (device.webView && (windowWidth * windowHeight === screen.width * screen.height)) {
device.statusBar = true;
}
else {
device.statusBar = false;
}
// Classes
var classNames = [];
// Pixel Ratio
device.pixelRatio = window.devicePixelRatio || 1;
classNames.push('pixel-ratio-' + Math.floor(device.pixelRatio));
if (device.pixelRatio >= 2) {
classNames.push('retina');
}
// OS classes
if (device.os) {
classNames.push(device.os, device.os + '-' + device.osVersion.split('.')[0], device.os + '-' + device.osVersion.replace(/\./g, '-'));
if (device.os === 'ios') {
var major = parseInt(device.osVersion.split('.')[0], 10);
for (var i = major - 1; i >= 6; i--) {
classNames.push('ios-gt-' + i);
}
}
}
// Status bar classes
if (device.statusBar) {
classNames.push('with-statusbar-overlay');
}
else {
$('html').removeClass('with-statusbar-overlay');
}
// Add html classes
if (classNames.length > 0) $('html').addClass(classNames.join(' '));
// Export object
return device;
})();

View file

@ -1,4 +0,0 @@
/*===========================
Plugins prototype
===========================*/
Framework7.prototype.plugins = {};

View file

@ -1,23 +0,0 @@
/*===========================
Features Support Detection
===========================*/
Framework7.prototype.support = (function () {
var support = {
touch: !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch),
passiveListener: (function () {
var supportsPassive = false;
try {
var opts = Object.defineProperty({}, 'passive', {
get: function() {
supportsPassive = true;
}
});
window.addEventListener('testPassiveListener', null, opts);
} catch (e) {}
return supportsPassive;
})()
};
// Export object
return support;
})();

View file

@ -1,222 +0,0 @@
/*======================================================
************ Pull To Refresh ************
======================================================*/
app.initPullToRefresh = function (pageContainer) {
var eventsTarget = $(pageContainer);
if (!eventsTarget.hasClass('pull-to-refresh-content')) {
eventsTarget = eventsTarget.find('.pull-to-refresh-content');
}
if (!eventsTarget || eventsTarget.length === 0) return;
var touchId, isTouched, isMoved, touchesStart = {}, isScrolling, touchesDiff, touchStartTime, container, refresh = false, useTranslate = false, startTranslate = 0, translate, scrollTop, wasScrolled, layer, triggerDistance, dynamicTriggerDistance, pullStarted;
var page = eventsTarget.hasClass('page') ? eventsTarget : eventsTarget.parents('.page');
var hasNavbar = false;
if (page.find('.navbar').length > 0 || page.parents('.navbar-fixed, .navbar-through').length > 0 || page.hasClass('navbar-fixed') || page.hasClass('navbar-through')) hasNavbar = true;
if (page.hasClass('no-navbar')) hasNavbar = false;
if (!hasNavbar) eventsTarget.addClass('pull-to-refresh-no-navbar');
container = eventsTarget;
// Define trigger distance
if (container.attr('data-ptr-distance')) {
dynamicTriggerDistance = true;
}
else {
triggerDistance = 44;
}
function handleTouchStart(e) {
if (isTouched) {
if (app.device.os === 'android') {
if ('targetTouches' in e && e.targetTouches.length > 1) return;
}
else return;
}
/*jshint validthis:true */
container = $(this);
if (container.hasClass('refreshing')) {
return;
}
isMoved = false;
pullStarted = false;
isTouched = true;
isScrolling = undefined;
wasScrolled = undefined;
if (e.type === 'touchstart') touchId = e.targetTouches[0].identifier;
touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
touchStartTime = (new Date()).getTime();
}
function handleTouchMove(e) {
if (!isTouched) return;
var pageX, pageY, touch;
if (e.type === 'touchmove') {
if (touchId && e.touches) {
for (var i = 0; i < e.touches.length; i++) {
if (e.touches[i].identifier === touchId) {
touch = e.touches[i];
}
}
}
if (!touch) touch = e.targetTouches[0];
pageX = touch.pageX;
pageY = touch.pageY;
}
else {
pageX = e.pageX;
pageY = e.pageY;
}
if (!pageX || !pageY) return;
if (typeof isScrolling === 'undefined') {
isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
}
if (!isScrolling) {
isTouched = false;
return;
}
scrollTop = container[0].scrollTop;
if (typeof wasScrolled === 'undefined' && scrollTop !== 0) wasScrolled = true;
if (!isMoved) {
/*jshint validthis:true */
container.removeClass('transitioning');
if (scrollTop > container[0].offsetHeight) {
isTouched = false;
return;
}
if (dynamicTriggerDistance) {
triggerDistance = container.attr('data-ptr-distance');
if (triggerDistance.indexOf('%') >= 0) triggerDistance = container[0].offsetHeight * parseInt(triggerDistance, 10) / 100;
}
startTranslate = container.hasClass('refreshing') ? triggerDistance : 0;
if (container[0].scrollHeight === container[0].offsetHeight || app.device.os !== 'ios') {
useTranslate = true;
}
else {
useTranslate = false;
}
}
isMoved = true;
touchesDiff = pageY - touchesStart.y;
if (touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0) {
// iOS 8 fix
if (app.device.os === 'ios' && parseInt(app.device.osVersion.split('.')[0], 10) > 7 && scrollTop === 0 && !wasScrolled) useTranslate = true;
if (useTranslate) {
e.preventDefault();
translate = (Math.pow(touchesDiff, 0.85) + startTranslate);
container.transform('translate3d(0,' + translate + 'px,0)');
}
if ((useTranslate && Math.pow(touchesDiff, 0.85) > triggerDistance) || (!useTranslate && touchesDiff >= triggerDistance * 2)) {
refresh = true;
container.addClass('pull-up').removeClass('pull-down');
}
else {
refresh = false;
container.removeClass('pull-up').addClass('pull-down');
}
if (!pullStarted) {
container.trigger('pullstart');
pullStarted = true;
}
container.trigger('pullmove', {
event: e,
scrollTop: scrollTop,
translate: translate,
touchesDiff: touchesDiff
});
}
else {
pullStarted = false;
container.removeClass('pull-up pull-down');
refresh = false;
return;
}
}
function handleTouchEnd(e) {
if (e.type === 'touchend' && e.changedTouches && e.changedTouches.length > 0 && touchId) {
if (e.changedTouches[0].identifier !== touchId) return;
}
if (!isTouched || !isMoved) {
isTouched = false;
isMoved = false;
return;
}
if (translate) {
container.addClass('transitioning');
translate = 0;
}
container.transform('');
if (refresh) {
container.addClass('refreshing');
container.trigger('refresh', {
done: function () {
app.pullToRefreshDone(container);
}
});
}
else {
container.removeClass('pull-down');
}
isTouched = false;
isMoved = false;
if (pullStarted) container.trigger('pullend');
}
// Attach Events
var passiveListener = app.touchEvents.start === 'touchstart' && app.support.passiveListener ? {passive: true, capture: false} : false;
eventsTarget.on(app.touchEvents.start, handleTouchStart, passiveListener);
eventsTarget.on(app.touchEvents.move, handleTouchMove);
eventsTarget.on(app.touchEvents.end, handleTouchEnd, passiveListener);
// Detach Events on page remove
if (page.length === 0) return;
function destroyPullToRefresh() {
eventsTarget.off(app.touchEvents.start, handleTouchStart);
eventsTarget.off(app.touchEvents.move, handleTouchMove);
eventsTarget.off(app.touchEvents.end, handleTouchEnd);
}
eventsTarget[0].f7DestroyPullToRefresh = destroyPullToRefresh;
function detachEvents() {
destroyPullToRefresh();
page.off('pageBeforeRemove', detachEvents);
}
page.on('pageBeforeRemove', detachEvents);
};
app.pullToRefreshDone = function (container) {
container = $(container);
if (container.length === 0) container = $('.pull-to-refresh-content.refreshing');
container.removeClass('refreshing').addClass('transitioning');
container.transitionEnd(function () {
container.removeClass('transitioning pull-up pull-down');
container.trigger('refreshdone');
});
};
app.pullToRefreshTrigger = function (container) {
container = $(container);
if (container.length === 0) container = $('.pull-to-refresh-content');
if (container.hasClass('refreshing')) return;
container.addClass('transitioning refreshing');
container.trigger('refresh', {
done: function () {
app.pullToRefreshDone(container);
}
});
};
app.destroyPullToRefresh = function (pageContainer) {
pageContainer = $(pageContainer);
var pullToRefreshContent = pageContainer.hasClass('pull-to-refresh-content') ? pageContainer : pageContainer.find('.pull-to-refresh-content');
if (pullToRefreshContent.length === 0) return;
if (pullToRefreshContent[0].f7DestroyPullToRefresh) pullToRefreshContent[0].f7DestroyPullToRefresh();
};

View file

@ -1,112 +0,0 @@
/*======================================================
************ Handle Browser's History ************
======================================================*/
app.pushStateQueue = [];
app.pushStateClearQueue = function () {
if (app.pushStateQueue.length === 0) return;
var queue = app.pushStateQueue.pop();
var animatePages;
if (app.params.pushStateNoAnimation === true) animatePages = false;
if (queue.action === 'back') {
app.router.back(queue.view, {animatePages: animatePages});
}
if (queue.action === 'loadPage') {
app.router.load(queue.view, {url: queue.stateUrl, animatePages: animatePages, pushState: false});
}
if (queue.action === 'loadContent') {
app.router.load(queue.view, {content: queue.stateContent, animatePages: animatePages, pushState: false});
}
if (queue.action === 'loadPageName') {
app.router.load(queue.view, {pageName: queue.statePageName, url: queue.stateUrl, animatePages: animatePages, pushState: false});
}
};
app.initPushState = function () {
var blockPopstate = true;
$(window).on('load', function () {
setTimeout(function () {
blockPopstate = false;
}, 0);
});
if (document.readyState && document.readyState === 'complete') {
blockPopstate = false;
}
function handlePopState(e) {
if (blockPopstate) return;
var mainView = app.mainView;
if (!mainView) return;
var state = e.state;
if (!state) {
state = {
viewIndex: app.views.indexOf(mainView),
url : mainView.history[0]
};
}
if (state.viewIndex < 0) return;
var view = app.views[state.viewIndex];
var stateUrl = state && state.url || undefined;
var stateContent = state && state.content || undefined;
var statePageName = state && state.pageName || undefined;
var animatePages;
if (app.params.pushStateNoAnimation === true) animatePages = false;
if (stateUrl !== view.url) {
if (view.history.indexOf(stateUrl) >= 0) {
// Go Back
if (view.allowPageChange) {
app.router.back(view, {url:undefined, animatePages: animatePages, pushState: false, preloadOnly:false});
}
else {
app.pushStateQueue.push({
action: 'back',
view: view
});
}
}
else if (stateContent) {
// Load Page
if (view.allowPageChange) {
app.router.load(view, {content:stateContent, animatePages: animatePages, pushState: false});
}
else {
app.pushStateQueue.unshift({
action: 'loadContent',
stateContent: stateContent,
view: view
});
}
}
else if (statePageName) {
// Load Page by page name with Dom Cache
if (view.allowPageChange) {
app.router.load(view, {pageName:statePageName, url: stateUrl, animatePages: animatePages, pushState: false});
}
else {
app.pushStateQueue.unshift({
action: 'loadPageName',
statePageName: statePageName,
view: view
});
}
}
else {
// Load Page
if (view.allowPageChange) {
app.router.load(view, {url:stateUrl, animatePages: animatePages, pushState: false});
}
else {
app.pushStateQueue.unshift({
action: 'loadPage',
stateUrl: stateUrl,
view: view
});
}
}
}
}
$(window).on('popstate', handlePopState);
};

View file

@ -1,27 +0,0 @@
/*======================================================
************ App Resize Actions ************
======================================================*/
// Prevent iPad horizontal body scrolling when soft keyboard is opened
function _fixIpadBodyScrolLeft() {
if (app.device.ipad) {
document.body.scrollLeft = 0;
setTimeout(function () {
document.body.scrollLeft = 0;
}, 0);
}
}
app.initResize = function () {
$(window).on('resize', app.resize);
$(window).on('orientationchange', app.orientationchange);
};
app.resize = function () {
if (app.sizeNavbars) app.sizeNavbars();
_fixIpadBodyScrolLeft();
};
app.orientationchange = function () {
if (app.device && app.device.minimalUi) {
if (window.orientation === 90 || window.orientation === -90) document.body.scrollTop = 0;
}
_fixIpadBodyScrolLeft();
};

File diff suppressed because it is too large Load diff

View file

@ -1,117 +0,0 @@
/*=============================================================
************ Hide/show Toolbar/Navbar on scroll ************
=============================================================*/
app.initPageScrollToolbars = function (pageContainer) {
pageContainer = $(pageContainer);
var scrollContent = pageContainer.find('.page-content');
if (scrollContent.length === 0) return;
var hideNavbar = (app.params.hideNavbarOnPageScroll || scrollContent.hasClass('hide-navbar-on-scroll') || scrollContent.hasClass('hide-bars-on-scroll')) && !(scrollContent.hasClass('keep-navbar-on-scroll') || scrollContent.hasClass('keep-bars-on-scroll'));
var hideToolbar = (app.params.hideToolbarOnPageScroll || scrollContent.hasClass('hide-toolbar-on-scroll') || scrollContent.hasClass('hide-bars-on-scroll')) && !(scrollContent.hasClass('keep-toolbar-on-scroll') || scrollContent.hasClass('keep-bars-on-scroll'));
var hideTabbar = (app.params.hideTabbarOnPageScroll || scrollContent.hasClass('hide-tabbar-on-scroll')) && !(scrollContent.hasClass('keep-tabbar-on-scroll'));
if (!(hideNavbar || hideToolbar || hideTabbar)) return;
var viewContainer = scrollContent.parents('.' + app.params.viewClass);
if (viewContainer.length === 0) return;
var navbar = viewContainer.find('.navbar'),
toolbar = viewContainer.find('.toolbar'),
tabbar;
if (hideTabbar) {
tabbar = viewContainer.find('.tabbar');
if (tabbar.length === 0) tabbar = viewContainer.parents('.' + app.params.viewsClass).find('.tabbar');
}
var hasNavbar = navbar.length > 0,
hasToolbar = toolbar.length > 0,
hasTabbar = tabbar && tabbar.length > 0;
var previousScroll, currentScroll;
previousScroll = currentScroll = scrollContent[0].scrollTop;
var scrollHeight, offsetHeight, reachEnd, action, navbarHidden, toolbarHidden, tabbarHidden;
var toolbarHeight = (hasToolbar && hideToolbar) ? toolbar[0].offsetHeight : 0;
var tabbarHeight = (hasTabbar && hideTabbar) ? tabbar[0].offsetHeight : 0;
var bottomBarHeight = tabbarHeight || toolbarHeight;
function handleScroll(e) {
if (pageContainer.hasClass('page-on-left')) return;
currentScroll = scrollContent[0].scrollTop;
scrollHeight = scrollContent[0].scrollHeight;
offsetHeight = scrollContent[0].offsetHeight;
reachEnd = currentScroll + offsetHeight >= scrollHeight - bottomBarHeight;
navbarHidden = navbar.hasClass('navbar-hidden');
toolbarHidden = toolbar.hasClass('toolbar-hidden');
tabbarHidden = tabbar && tabbar.hasClass('toolbar-hidden');
if (reachEnd) {
if (app.params.showBarsOnPageScrollEnd) {
action = 'show';
}
}
else if (previousScroll > currentScroll) {
if (app.params.showBarsOnPageScrollTop || currentScroll <= 44) {
action = 'show';
}
else {
action = 'hide';
}
}
else {
if (currentScroll > 44) {
action = 'hide';
}
else {
action = 'show';
}
}
if (action === 'show') {
if (hasNavbar && hideNavbar && navbarHidden) {
app.showNavbar(navbar);
pageContainer.removeClass('no-navbar-by-scroll');
navbarHidden = false;
}
if (hasToolbar && hideToolbar && toolbarHidden) {
app.showToolbar(toolbar);
pageContainer.removeClass('no-toolbar-by-scroll');
toolbarHidden = false;
}
if (hasTabbar && hideTabbar && tabbarHidden) {
app.showToolbar(tabbar);
pageContainer.removeClass('no-tabbar-by-scroll');
tabbarHidden = false;
}
}
else {
if (hasNavbar && hideNavbar && !navbarHidden) {
app.hideNavbar(navbar);
pageContainer.addClass('no-navbar-by-scroll');
navbarHidden = true;
}
if (hasToolbar && hideToolbar && !toolbarHidden) {
app.hideToolbar(toolbar);
pageContainer.addClass('no-toolbar-by-scroll');
toolbarHidden = true;
}
if (hasTabbar && hideTabbar && !tabbarHidden) {
app.hideToolbar(tabbar);
pageContainer.addClass('no-tabbar-by-scroll');
tabbarHidden = true;
}
}
previousScroll = currentScroll;
}
scrollContent.on('scroll', handleScroll);
scrollContent[0].f7ScrollToolbarsHandler = handleScroll;
};
app.destroyScrollToolbars = function (pageContainer) {
pageContainer = $(pageContainer);
var scrollContent = pageContainer.find('.page-content');
if (scrollContent.length === 0) return;
var handler = scrollContent[0].f7ScrollToolbarsHandler;
if (!handler) return;
scrollContent.off('scroll', scrollContent[0].f7ScrollToolbarsHandler);
};

View file

@ -1,345 +0,0 @@
/*======================================================
************ Searchbar ************
======================================================*/
var Searchbar = function (container, params) {
var defaults = {
input: null,
clearButton: null,
cancelButton: null,
searchList: null,
searchIn: '.item-title',
searchBy: '',
found: null,
notFound: null,
overlay: null,
ignore: '.searchbar-ignore',
customSearch: false,
removeDiacritics: false,
hideDividers: true,
hideGroups: true,
/* Callbacks
onSearch
onEnable
onDisable
onClear
*/
};
params = params || {};
for (var def in defaults) {
if (typeof params[def] === 'undefined' || params[def] === null) {
params[def] = defaults[def];
}
}
// Instance
var s = this;
// Material
s.material = app.params.material;
// Params
s.params = params;
// Container
container = $(container);
s.container = container;
// Active
s.active = false;
// Input
s.input = s.params.input ? $(s.params.input) : s.container.find('input[type="search"]');
s.clearButton = s.params.clearButton ? $(s.params.clearButton) : s.container.find('.searchbar-clear');
s.cancelButton = s.params.cancelButton ? $(s.params.cancelButton) : s.container.find('.searchbar-cancel');
// Search List
s.searchList = $(s.params.searchList);
// Is Virtual List
s.isVirtualList = s.searchList.hasClass('virtual-list');
// Is In Page
s.pageContainer = s.container.parents('.page').eq(0);
// Overlay
if (!s.params.overlay) {
s.overlay = s.pageContainer.length > 0 ? s.pageContainer.find('.searchbar-overlay') : $('.searchbar-overlay');
}
else {
s.overlay = $(s.params.overlay);
}
// Found and not found
if (!s.params.found) {
s.found = s.pageContainer.length > 0 ? s.pageContainer.find('.searchbar-found') : $('.searchbar-found');
}
else {
s.found = $(s.params.found);
}
if (!s.params.notFound) {
s.notFound = s.pageContainer.length > 0 ? s.pageContainer.find('.searchbar-not-found') : $('.searchbar-not-found');
}
else {
s.notFound = $(s.params.notFound);
}
// Set Cancel button
var cancelMarginProp = app.rtl ? 'margin-left' : 'margin-right';
var cancelButtonHasMargin = false;
s.setCancelButtonMargin = function () {
s.cancelButton.transition(0).show();
s.cancelButton.css(cancelMarginProp, -s.cancelButton[0].offsetWidth + 'px');
var clientLeft = s.cancelButton[0].clientLeft;
s.cancelButton.transition('');
cancelButtonHasMargin = true;
};
// Trigger
s.triggerEvent = function (eventName, callbackName, eventData) {
s.container.trigger(eventName, eventData);
if (s.searchList.length > 0) s.searchList.trigger(eventName, eventData);
if (callbackName && s.params[callbackName]) s.params[callbackName](s, eventData);
};
// Enable/disalbe
s.enable = function (e) {
function _enable() {
if ((s.searchList.length || s.params.customSearch) && !s.container.hasClass('searchbar-active') && !s.query) s.overlay.addClass('searchbar-overlay-active');
s.container.addClass('searchbar-active');
if (s.cancelButton.length > 0 && !s.material) {
if (!cancelButtonHasMargin) {
s.setCancelButtonMargin();
}
s.cancelButton.css(cancelMarginProp, '0px');
}
s.triggerEvent('enableSearch', 'onEnable');
s.active = true;
}
if (app.device.ios && !app.params.material && e && e.type === 'focus') {
setTimeout(function () {
_enable();
}, 400);
}
else {
_enable();
}
};
s.disable = function () {
s.input.val('').trigger('change');
s.container.removeClass('searchbar-active searchbar-not-empty');
if (s.cancelButton.length > 0 && !s.material) s.cancelButton.css(cancelMarginProp, -s.cancelButton[0].offsetWidth + 'px');
if (s.searchList.length || s.params.customSearch) s.overlay.removeClass('searchbar-overlay-active');
s.active = false;
function _disable() {
s.input.blur();
}
if (app.device.ios) {
setTimeout(function () {
_disable();
}, 400);
}
else {
_disable();
}
s.triggerEvent('disableSearch', 'onDisable');
};
// Clear
s.clear = function (e) {
if (!s.query && e && $(e.target).hasClass('searchbar-clear')) {
s.disable();
return;
}
s.input.val('').trigger('change').focus();
s.triggerEvent('clearSearch', 'onClear');
};
// Search
s.handleInput = function () {
setTimeout(function () {
var value = s.input.val().trim();
if ((s.searchList.length > 0 || s.params.customSearch) && (s.params.searchIn || s.isVirtualList)) s.search(value, true);
}, 0);
};
var previousQuery = '';
var virtualList;
s.search = function (query, internal) {
if (query.trim() === previousQuery) return;
previousQuery = query.trim();
if (!internal) {
if (!s.active) {
s.enable();
}
s.input.val(query);
}
s.query = s.value = query;
// Add active/inactive classes on overlay
if (query.length === 0) {
s.container.removeClass('searchbar-not-empty');
if (s.searchList.length && s.container.hasClass('searchbar-active')) s.overlay.addClass('searchbar-overlay-active');
}
else {
s.container.addClass('searchbar-not-empty');
if (s.searchList.length && s.container.hasClass('searchbar-active')) s.overlay.removeClass('searchbar-overlay-active');
}
if (s.params.customSearch) {
s.triggerEvent('search', 'onSearch', {query: query});
return;
}
var foundItems = [], _vlQuery;
if (s.isVirtualList) {
virtualList = s.searchList[0].f7VirtualList;
if (query.trim() === '') {
virtualList.resetFilter();
s.notFound.hide();
s.found.show();
return;
}
_vlQuery = s.params.removeDiacritics ? $.removeDiacritics(query) : query;
if (virtualList.params.searchAll) {
foundItems = virtualList.params.searchAll(_vlQuery, virtualList.items) || [];
}
else if (virtualList.params.searchByItem) {
for (var i = 0; i < virtualList.items.length; i++) {
if(virtualList.params.searchByItem(_vlQuery, i, virtualList.params.items[i])) {
foundItems.push(i);
}
}
}
}
else {
var values;
if (s.params.removeDiacritics) values = $.removeDiacritics(query.trim().toLowerCase()).split(' ');
else {
values = query.trim().toLowerCase().split(' ');
}
s.searchList.find('li').removeClass('hidden-by-searchbar').each(function (index, el) {
el = $(el);
var compareWithText = [];
el.find(s.params.searchIn).each(function () {
var itemText = $(this).text().trim().toLowerCase();
if (s.params.removeDiacritics) itemText = $.removeDiacritics(itemText);
compareWithText.push(itemText);
});
compareWithText = compareWithText.join(' ');
var wordsMatch = 0;
for (var i = 0; i < values.length; i++) {
if (compareWithText.indexOf(values[i]) >= 0) wordsMatch++;
}
if (wordsMatch !== values.length && !(s.params.ignore && el.is(s.params.ignore))) {
el.addClass('hidden-by-searchbar');
}
else {
foundItems.push(el[0]);
}
});
if (s.params.hideDividers) {
s.searchList.find('.item-divider, .list-group-title').each(function () {
var title = $(this);
var nextElements = title.nextAll('li');
var hide = true;
for (var i = 0; i < nextElements.length; i++) {
var nextEl = $(nextElements[i]);
if (nextEl.hasClass('list-group-title') || nextEl.hasClass('item-divider')) break;
if (!nextEl.hasClass('hidden-by-searchbar')) {
hide = false;
}
}
var ignore = s.params.ignore && title.is(s.params.ignore);
if (hide && !ignore) title.addClass('hidden-by-searchbar');
else title.removeClass('hidden-by-searchbar');
});
}
if (s.params.hideGroups) {
s.searchList.find('.list-group').each(function () {
var group = $(this);
var ignore = s.params.ignore && group.is(s.params.ignore);
var notHidden = group.find('li:not(.hidden-by-searchbar)');
if (notHidden.length === 0 && !ignore) {
group.addClass('hidden-by-searchbar');
}
else {
group.removeClass('hidden-by-searchbar');
}
});
}
}
s.triggerEvent('search', 'onSearch', {query: query, foundItems: foundItems});
if (foundItems.length === 0) {
s.notFound.show();
s.found.hide();
}
else {
s.notFound.hide();
s.found.show();
}
if (s.isVirtualList) {
virtualList.filterItems(foundItems);
}
};
// Events
function preventSubmit(e) {
e.preventDefault();
}
s.attachEvents = function (destroy) {
var method = destroy ? 'off' : 'on';
s.container[method]('submit', preventSubmit);
if (!s.material) s.cancelButton[method]('click', s.disable);
s.overlay[method]('click', s.disable);
s.input[method]('focus', s.enable);
s.input[method]('change keydown keypress keyup', s.handleInput);
s.clearButton[method]('click', s.clear);
};
s.detachEvents = function() {
s.attachEvents(true);
};
// Init Destroy
s.init = function () {
s.attachEvents();
};
s.destroy = function () {
if (!s) return;
s.detachEvents();
s = null;
};
// Init
s.init();
s.container[0].f7Searchbar = s;
return s;
};
app.searchbar = function (container, params) {
return new Searchbar(container, params);
};
app.initSearchbar = function (container) {
container = $(container);
var searchbar = container.hasClass('searchbar') ? container : container.find('.searchbar');
if (searchbar.length === 0) return;
if (!searchbar.hasClass('searchbar-init')) return;
var sb = app.searchbar(searchbar, searchbar.dataset());
function onBeforeRemove() {
if (sb) sb.destroy();
}
if (container.hasClass('page')) {
container.once('pageBeforeRemove', onBeforeRemove);
}
else if (container.hasClass('navbar-inner')) {
container.once('navbarBeforeRemove', onBeforeRemove);
}
};

View file

@ -1,519 +0,0 @@
/*===============================================================================
************ Smart Select ************
===============================================================================*/
app.initSmartSelects = function (pageContainer) {
pageContainer = $(pageContainer);
var selects;
if (pageContainer.is('.smart-select')) {
selects = pageContainer;
}
else {
selects = pageContainer.find('.smart-select');
}
if (selects.length === 0) return;
selects.each(function () {
var smartSelect = $(this);
var $select = smartSelect.find('select');
if ($select.length === 0) return;
var select = $select[0];
if (select.length === 0) return;
var valueText = [];
for (var i = 0; i < select.length; i++) {
if (select[i].selected) valueText.push(select[i].textContent.trim());
}
var itemAfter = smartSelect.find('.item-after');
if (itemAfter.length === 0) {
smartSelect.find('.item-inner').append('<div class="item-after">' + valueText.join(', ') + '</div>');
}
else {
var selectedText = itemAfter.text();
if (itemAfter.hasClass('smart-select-value')) {
for (i = 0; i < select.length; i++) {
select[i].selected = select[i].textContent.trim() === selectedText.trim();
}
} else {
itemAfter.text(valueText.join(', '));
}
}
$select.on('change', function () {
var valueText = [];
for (var i = 0; i < select.length; i++) {
if (select[i].selected) valueText.push(select[i].textContent.trim());
}
smartSelect.find('.item-after').text(valueText.join(', '));
});
});
};
app.smartSelectAddOption = function (select, option, index) {
select = $(select);
var smartSelect = select.parents('.smart-select');
if (typeof index === 'undefined') {
select.append(option);
}
else {
$(option).insertBefore(select.find('option').eq(index));
}
app.initSmartSelects(smartSelect);
var selectName = smartSelect.find('select').attr('name');
var opened = $('.page.smart-select-page[data-select-name="' + selectName + '"]').length > 0;
if (opened) {
app.smartSelectOpen(smartSelect, true);
}
};
app.smartSelectOpen = function (smartSelect, reLayout) {
smartSelect = $(smartSelect);
if (smartSelect.length === 0) return;
// Find related view
var view = smartSelect.parents('.' + app.params.viewClass);
if (view.length === 0) return;
view = view[0].f7View;
// Parameters
var openIn = smartSelect.attr('data-open-in') || app.params.smartSelectOpenIn;
if (openIn === 'popup') {
if ($('.popup.smart-select-popup').length > 0) return;
}
else if (openIn === 'picker') {
if ($('.picker-modal.modal-in').length > 0 && !reLayout){
if (smartSelect[0].f7SmartSelectPicker !== $('.picker-modal.modal-in:not(.modal-out)')[0]) app.closeModal($('.picker-modal.modal-in:not(.modal-out)'));
else return;
}
}
else {
if (!view) return;
}
var smartSelectData = smartSelect.dataset();
var pageTitle = smartSelectData.pageTitle || smartSelect.find('.item-title').text();
var backText = smartSelectData.backText || app.params.smartSelectBackText;
var closeText;
if (openIn === 'picker') {
closeText = smartSelectData.pickerCloseText || smartSelectData.backText || app.params.smartSelectPickerCloseText ;
}
else {
closeText = smartSelectData.popupCloseText || smartSelectData.backText || app.params.smartSelectPopupCloseText ;
}
var backOnSelect = smartSelectData.backOnSelect !== undefined ? smartSelectData.backOnSelect : app.params.smartSelectBackOnSelect;
var formTheme = smartSelectData.formTheme || app.params.smartSelectFormTheme;
var navbarTheme = smartSelectData.navbarTheme || app.params.smartSelectNavbarTheme;
var toolbarTheme = smartSelectData.toolbarTheme || app.params.smartSelectToolbarTheme;
var virtualList = smartSelectData.virtualList;
var virtualListHeight = smartSelectData.virtualListHeight;
var material = app.params.material;
var pickerHeight = smartSelectData.pickerHeight || app.params.smartSelectPickerHeight;
// Collect all options/values
var select = smartSelect.find('select')[0];
var $select = $(select);
var $selectData = $select.dataset();
if (select.disabled || smartSelect.hasClass('disabled') || $select.hasClass('disabled')) {
return;
}
var values = [];
var id = (new Date()).getTime();
var inputType = select.multiple ? 'checkbox' : 'radio';
var inputName = inputType + '-' + id;
var maxLength = $select.attr('maxlength');
var selectName = select.name;
var option, optionHasMedia, optionImage, optionIcon, optionGroup, optionGroupLabel, optionPreviousGroup, optionIsLabel, previousGroup, optionColor, optionClassName, optionData;
for (var i = 0; i < select.length; i++) {
option = $(select[i]);
optionData = option.dataset();
optionImage = optionData.optionImage || $selectData.optionImage || smartSelectData.optionImage;
optionIcon = optionData.optionIcon || $selectData.optionIcon || smartSelectData.optionIcon;
optionHasMedia = optionImage || optionIcon || inputType === 'checkbox';
if (material) optionHasMedia = optionImage || optionIcon;
optionColor = optionData.optionColor;
optionClassName = optionData.optionClass;
if (option[0].disabled) optionClassName += ' disabled';
optionGroup = option.parent('optgroup')[0];
optionGroupLabel = optionGroup && optionGroup.label;
optionIsLabel = false;
if (optionGroup) {
if (optionGroup !== previousGroup) {
optionIsLabel = true;
previousGroup = optionGroup;
values.push({
groupLabel: optionGroupLabel,
isLabel: optionIsLabel
});
}
}
values.push({
value: option[0].value,
text: option[0].textContent.trim(),
selected: option[0].selected,
group: optionGroup,
groupLabel: optionGroupLabel,
image: optionImage,
icon: optionIcon,
color: optionColor,
className: optionClassName,
disabled: option[0].disabled,
inputType: inputType,
id: id,
hasMedia: optionHasMedia,
checkbox: inputType === 'checkbox',
inputName: inputName,
material: app.params.material
});
}
// Item template/HTML
if (!app._compiledTemplates.smartSelectItem) {
app._compiledTemplates.smartSelectItem = t7.compile(app.params.smartSelectItemTemplate ||
'{{#if isLabel}}' +
'<li class="item-divider">{{groupLabel}}</li>' +
'{{else}}' +
'<li{{#if className}} class="{{className}}"{{/if}}>' +
'<label class="label-{{inputType}} item-content">' +
'<input type="{{inputType}}" name="{{inputName}}" value="{{value}}" {{#if selected}}checked{{/if}}>' +
'{{#if material}}' +
'{{#if hasMedia}}' +
'<div class="item-media">' +
'{{#if icon}}<i class="icon {{icon}}"></i>{{/if}}' +
'{{#if image}}<img src="{{image}}">{{/if}}' +
'</div>' +
'<div class="item-inner">' +
'<div class="item-title{{#if color}} color-{{color}}{{/if}}">{{text}}</div>' +
'</div>' +
'<div class="item-after">' +
'<i class="icon icon-form-{{inputType}}"></i>' +
'</div>' +
'{{else}}' +
'<div class="item-media">' +
'<i class="icon icon-form-{{inputType}}"></i>' +
'</div>' +
'<div class="item-inner">' +
'<div class="item-title{{#if color}} color-{{color}}{{/if}}">{{text}}</div>' +
'</div>' +
'{{/if}}' +
'{{else}}' +
'{{#if hasMedia}}' +
'<div class="item-media">' +
'{{#if checkbox}}<i class="icon icon-form-checkbox"></i>{{/if}}' +
'{{#if icon}}<i class="icon {{icon}}"></i>{{/if}}' +
'{{#if image}}<img src="{{image}}">{{/if}}' +
'</div>' +
'{{/if}}' +
'<div class="item-inner">' +
'<div class="item-title{{#if color}} color-{{color}}{{/if}}">{{text}}</div>' +
'</div>' +
'{{/if}}' +
'</label>' +
'</li>' +
'{{/if}}'
);
}
var smartSelectItemTemplate = app._compiledTemplates.smartSelectItem;
var inputsHTML = '';
if (!virtualList) {
for (var j = 0; j < values.length; j++) {
inputsHTML += smartSelectItemTemplate(values[j]);
}
}
// Toolbar / Navbar
var toolbarHTML = '', navbarHTML;
var noNavbar = '', noToolbar = '', noTabbar = '', navbarLayout;
if (openIn === 'picker') {
if (!app._compiledTemplates.smartSelectToolbar) {
app._compiledTemplates.smartSelectToolbar = t7.compile(app.params.smartSelectToolbarTemplate ||
'<div class="toolbar {{#if toolbarTheme}}theme-{{toolbarTheme}}{{/if}}">' +
'<div class="toolbar-inner">' +
'<div class="left"></div>' +
'<div class="right"><a href="#" class="link close-picker"><span>{{closeText}}</span></a></div>' +
'</div>' +
'</div>'
);
}
toolbarHTML = app._compiledTemplates.smartSelectToolbar({
pageTitle: pageTitle,
closeText: closeText,
openIn: openIn,
toolbarTheme: toolbarTheme,
inPicker: openIn === 'picker'
});
}
else {
// Navbar HTML
if (!app._compiledTemplates.smartSelectNavbar) {
app._compiledTemplates.smartSelectNavbar = t7.compile(app.params.smartSelectNavbarTemplate ||
'<div class="navbar {{#if navbarTheme}}theme-{{navbarTheme}}{{/if}}">' +
'<div class="navbar-inner">' +
'{{leftTemplate}}' +
'<div class="center sliding">{{pageTitle}}</div>' +
'</div>' +
'</div>'
);
}
navbarHTML = app._compiledTemplates.smartSelectNavbar({
pageTitle: pageTitle,
backText: backText,
closeText: closeText,
openIn: openIn,
navbarTheme: navbarTheme,
inPopup: openIn === 'popup',
inPage: openIn === 'page',
leftTemplate: openIn === 'popup' ?
(app.params.smartSelectPopupCloseTemplate || (material ? '<div class="left"><a href="#" class="link close-popup icon-only"><i class="icon icon-back"></i></a></div>' : '<div class="left"><a href="#" class="link close-popup"><i class="icon icon-back"></i><span>{{closeText}}</span></a></div>')).replace(/{{closeText}}/g, closeText) :
(app.params.smartSelectBackTemplate || (material ? '<div class="left"><a href="#" class="back link icon-only"><i class="icon icon-back"></i></a></div>' : '<div class="left sliding"><a href="#" class="back link"><i class="icon icon-back"></i><span>{{backText}}</span></a></div>')).replace(/{{backText}}/g, backText)
});
// Determine navbar layout type - static/fixed/through
if (openIn === 'page') {
navbarLayout = 'static';
if (smartSelect.parents('.navbar-through').length > 0) navbarLayout = 'through';
if (smartSelect.parents('.navbar-fixed').length > 0) navbarLayout = 'fixed';
noToolbar = smartSelect.parents('.page').hasClass('no-toolbar') ? 'no-toolbar' : '';
noNavbar = smartSelect.parents('.page').hasClass('no-navbar') ? 'no-navbar' : 'navbar-' + navbarLayout;
noTabbar = smartSelect.parents('.page').hasClass('no-tabbar') ? 'no-tabbar' : '';
}
else {
navbarLayout = 'fixed';
}
}
// Page Layout
var pageName = 'smart-select-' + inputName;
var useSearchbar = typeof smartSelect.data('searchbar') === 'undefined' ? app.params.smartSelectSearchbar : (smartSelect.data('searchbar') === 'true' ? true : false);
var searchbarPlaceholder, searchbarCancel;
if (useSearchbar) {
searchbarPlaceholder = smartSelect.data('searchbar-placeholder') || 'Search';
searchbarCancel = smartSelect.data('searchbar-cancel') || 'Cancel';
}
var searchbarHTML = '<form class="searchbar searchbar-init" data-search-list=".smart-select-list-' + id + '" data-search-in=".item-title">' +
'<div class="searchbar-input">' +
'<input type="search" placeholder="' + searchbarPlaceholder + '">' +
'<a href="#" class="searchbar-clear"></a>' +
'</div>' +
(material ? '' : '<a href="#" class="searchbar-cancel">' + searchbarCancel + '</a>') +
'</form>' +
'<div class="searchbar-overlay"></div>';
var pageHTML =
(openIn !== 'picker' && navbarLayout === 'through' ? navbarHTML : '') +
'<div class="pages">' +
' <div data-page="' + pageName + '" data-select-name="' + selectName + '" class="page smart-select-page ' + noNavbar + ' ' + noToolbar + ' ' + noTabbar + '">' +
(openIn !== 'picker' && navbarLayout === 'fixed' ? navbarHTML : '') +
(useSearchbar ? searchbarHTML : '') +
' <div class="page-content">' +
(openIn !== 'picker' && navbarLayout === 'static' ? navbarHTML : '') +
' <div class="list-block ' + (virtualList ? 'virtual-list' : '') + ' smart-select-list-' + id + ' ' + (formTheme ? 'theme-' + formTheme : '') + '">' +
' <ul>' +
(virtualList ? '' : inputsHTML) +
' </ul>' +
' </div>' +
' </div>' +
' </div>' +
'</div>';
// Define popup and picker
var popup, picker;
// Scroll SS Picker To Input
function scrollToInput() {
var pageContent = smartSelect.parents('.page-content');
if (pageContent.length === 0) return;
var paddingTop = parseInt(pageContent.css('padding-top'), 10),
paddingBottom = parseInt(pageContent.css('padding-bottom'), 10),
pageHeight = pageContent[0].offsetHeight - paddingTop - picker.height(),
pageScrollHeight = pageContent[0].scrollHeight - paddingTop - picker.height(),
newPaddingBottom;
var inputTop = smartSelect.offset().top - paddingTop + smartSelect[0].offsetHeight;
if (inputTop > pageHeight) {
var scrollTop = pageContent.scrollTop() + inputTop - pageHeight;
if (scrollTop + pageHeight > pageScrollHeight) {
newPaddingBottom = scrollTop + pageHeight - pageScrollHeight + paddingBottom;
if (pageHeight === pageScrollHeight) {
newPaddingBottom = picker.height();
}
pageContent.css({'padding-bottom': (newPaddingBottom) + 'px'});
}
pageContent.scrollTop(scrollTop, 300);
}
}
// Close SS Picker on HTML Click
function closeOnHTMLClick(e) {
var close = true;
if (e.target === smartSelect[0] || $(e.target).parents(smartSelect[0]).length > 0) {
close = false;
}
if ($(e.target).parents('.picker-modal').length > 0) {
close = false;
}
if (close) {
app.closeModal('.smart-select-picker.modal-in');
}
}
// Check max length
function checkMaxLength(container) {
if (select.selectedOptions.length >= maxLength) {
container.find('input[type="checkbox"]').each(function () {
if (!this.checked) {
$(this).parents('li').addClass('disabled');
}
else {
$(this).parents('li').removeClass('disabled');
}
});
}
else {
container.find('.disabled').removeClass('disabled');
}
}
// Event Listeners on new page
function handleInputs(container) {
container = $(container);
if (virtualList) {
var virtualListInstance = app.virtualList(container.find('.virtual-list'), {
items: values,
template: smartSelectItemTemplate,
height: virtualListHeight || undefined,
searchByItem: function (query, index, item) {
if (item.text.toLowerCase().indexOf(query.trim().toLowerCase()) >=0 ) return true;
return false;
}
});
container.once(openIn === 'popup' || openIn === 'picker' ? 'closed': 'pageBeforeRemove', function () {
if (virtualListInstance && virtualListInstance.destroy) virtualListInstance.destroy();
});
}
if (maxLength) {
checkMaxLength(container);
}
if (backOnSelect) {
container.find('input[type="radio"][name="' + inputName + '"]:checked').parents('label').once('click', function () {
if (openIn === 'popup') app.closeModal(popup);
else if (openIn === 'picker') app.closeModal(picker);
else view.router.back();
});
}
container.on('change', 'input[name="' + inputName + '"]', function () {
var input = this;
var value = input.value;
var optionText = [];
if (input.type === 'checkbox') {
var values = [];
for (var i = 0; i < select.options.length; i++) {
var option = select.options[i];
if (option.value === value) {
option.selected = input.checked;
}
if (option.selected) {
optionText.push(option.textContent.trim());
}
}
if (maxLength) {
checkMaxLength(container);
}
}
else {
optionText = [smartSelect.find('option[value="' + value + '"]').text()];
select.value = value;
}
$select.trigger('change');
smartSelect.find('.item-after').text(optionText.join(', '));
if (backOnSelect && inputType === 'radio') {
if (openIn === 'popup') app.closeModal(popup);
else if (openIn === 'picker') app.closeModal(picker);
else view.router.back();
}
});
}
function pageInit(e) {
var page = e.detail.page;
if (page.name === pageName) {
handleInputs(page.container);
}
}
if (openIn === 'popup') {
if (reLayout) {
popup = $('.popup.smart-select-popup .view');
popup.html(pageHTML);
}
else {
popup = app.popup(
'<div class="popup smart-select-popup smart-select-popup-' + inputName + '">' +
'<div class="view navbar-fixed">' +
pageHTML +
'</div>' +
'</div>'
);
popup = $(popup);
}
app.initPage(popup.find('.page'));
handleInputs(popup);
}
else if (openIn === 'picker') {
if (reLayout) {
picker = $('.picker-modal.smart-select-picker .view');
picker.html(pageHTML);
}
else {
picker = app.pickerModal(
'<div class="picker-modal smart-select-picker smart-select-picker-' + inputName + '"' + (pickerHeight ? ' style="height:' + pickerHeight + '"' : '') + '>' +
toolbarHTML +
'<div class="picker-modal-inner">' +
'<div class="view">' +
pageHTML +
'</div>' +
'</div>' +
'</div>'
);
picker = $(picker);
// Scroll To Input
scrollToInput();
// Close On Click
$('html').on('click', closeOnHTMLClick);
// On Close
picker.once('close', function () {
// Reset linked picker
smartSelect[0].f7SmartSelectPicker = undefined;
// Detach html click
$('html').off('click', closeOnHTMLClick);
// Restore page padding bottom
smartSelect.parents('.page-content').css({paddingBottom: ''});
});
// Link Picker
smartSelect[0].f7SmartSelectPicker = picker[0];
}
// Init Page
app.initPage(picker.find('.page'));
// Attach events
handleInputs(picker);
}
else {
$(document).once('pageInit', '.smart-select-page', pageInit);
view.router.load({
content: pageHTML,
reload: reLayout ? true : undefined
});
}
};

View file

@ -1,129 +0,0 @@
/*===============================================================================
************ Sortable ************
===============================================================================*/
app.sortableToggle = function (sortableContainer) {
sortableContainer = $(sortableContainer);
if (sortableContainer.length === 0) sortableContainer = $('.list-block.sortable');
sortableContainer.toggleClass('sortable-opened');
if (sortableContainer.hasClass('sortable-opened')) {
sortableContainer.trigger('open');
}
else {
sortableContainer.trigger('close');
}
return sortableContainer;
};
app.sortableOpen = function (sortableContainer) {
sortableContainer = $(sortableContainer);
if (sortableContainer.length === 0) sortableContainer = $('.list-block.sortable');
sortableContainer.addClass('sortable-opened');
sortableContainer.trigger('open');
return sortableContainer;
};
app.sortableClose = function (sortableContainer) {
sortableContainer = $(sortableContainer);
if (sortableContainer.length === 0) sortableContainer = $('.list-block.sortable');
sortableContainer.removeClass('sortable-opened');
sortableContainer.trigger('close');
return sortableContainer;
};
app.initSortable = function () {
var isTouched, isMoved, touchStartY, touchesDiff, sortingEl, sortingElHeight, sortingItems, minTop, maxTop, insertAfter, insertBefore, sortableContainer, startIndex;
function handleTouchStart(e) {
isMoved = false;
isTouched = true;
touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
/*jshint validthis:true */
sortingEl = $(this).parent();
startIndex = sortingEl.index();
sortingItems = sortingEl.parent().find('li');
sortableContainer = sortingEl.parents('.sortable');
e.preventDefault();
app.allowPanelOpen = app.allowSwipeout = false;
}
function handleTouchMove(e) {
if (!isTouched || !sortingEl) return;
var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
if (!isMoved) {
sortingEl.addClass('sorting');
sortableContainer.addClass('sortable-sorting');
minTop = sortingEl[0].offsetTop;
maxTop = sortingEl.parent().height() - sortingEl[0].offsetTop - sortingEl.height();
sortingElHeight = sortingEl[0].offsetHeight;
}
isMoved = true;
e.preventDefault();
e.f7PreventPanelSwipe = true;
touchesDiff = pageY - touchStartY;
var translate = touchesDiff;
if (translate < -minTop) translate = -minTop;
if (translate > maxTop) translate = maxTop;
sortingEl.transform('translate3d(0,' + translate + 'px,0)');
insertBefore = insertAfter = undefined;
sortingItems.each(function () {
var currentEl = $(this);
if (currentEl[0] === sortingEl[0]) return;
var currentElOffset = currentEl[0].offsetTop;
var currentElHeight = currentEl.height();
var sortingElOffset = sortingEl[0].offsetTop + translate;
if ((sortingElOffset >= currentElOffset - currentElHeight / 2) && sortingEl.index() < currentEl.index()) {
currentEl.transform('translate3d(0, '+(-sortingElHeight)+'px,0)');
insertAfter = currentEl;
insertBefore = undefined;
}
else if ((sortingElOffset <= currentElOffset + currentElHeight / 2) && sortingEl.index() > currentEl.index()) {
currentEl.transform('translate3d(0, '+(sortingElHeight)+'px,0)');
insertAfter = undefined;
if (!insertBefore) insertBefore = currentEl;
}
else {
$(this).transform('translate3d(0, 0%,0)');
}
});
}
function handleTouchEnd(e) {
app.allowPanelOpen = app.allowSwipeout = true;
if (!isTouched || !isMoved) {
isTouched = false;
isMoved = false;
return;
}
e.preventDefault();
sortingItems.transform('');
sortingEl.removeClass('sorting');
sortableContainer.removeClass('sortable-sorting');
var virtualList, oldIndex, newIndex;
if (insertAfter) {
sortingEl.insertAfter(insertAfter);
sortingEl.trigger('sort', {startIndex: startIndex, newIndex: sortingEl.index()});
}
if (insertBefore) {
sortingEl.insertBefore(insertBefore);
sortingEl.trigger('sort', {startIndex: startIndex, newIndex: sortingEl.index()});
}
if ((insertAfter || insertBefore) && sortableContainer.hasClass('virtual-list')) {
virtualList = sortableContainer[0].f7VirtualList;
oldIndex = sortingEl[0].f7VirtualListIndex;
newIndex = insertBefore ? insertBefore[0].f7VirtualListIndex : insertAfter[0].f7VirtualListIndex;
if (virtualList) virtualList.moveItem(oldIndex, newIndex);
}
insertAfter = insertBefore = undefined;
isTouched = false;
isMoved = false;
}
$(document).on(app.touchEvents.start, '.list-block.sortable .sortable-handler', handleTouchStart);
if (app.support.touch) {
$(document).on(app.touchEvents.move, '.list-block.sortable .sortable-handler', handleTouchMove);
$(document).on(app.touchEvents.end, '.list-block.sortable .sortable-handler', handleTouchEnd);
}
else {
$(document).on(app.touchEvents.move, handleTouchMove);
$(document).on(app.touchEvents.end, handleTouchEnd);
}
};

View file

@ -1,405 +0,0 @@
/*===============================================================================
************ Swipeout Actions (Swipe to delete) ************
===============================================================================*/
app.swipeoutOpenedEl = undefined;
app.allowSwipeout = true;
app.initSwipeout = function (swipeoutEl) {
var isTouched, isMoved, isScrolling, touchesStart = {}, touchStartTime, touchesDiff, swipeOutEl, swipeOutContent, actionsRight, actionsLeft, actionsLeftWidth, actionsRightWidth, translate, opened, openedActions, buttonsLeft, buttonsRight, direction, overswipeLeftButton, overswipeRightButton, overswipeLeft, overswipeRight, noFoldLeft, noFoldRight;
$(document).on(app.touchEvents.start, function (e) {
if (app.swipeoutOpenedEl) {
var target = $(e.target);
if (!(
app.swipeoutOpenedEl.is(target[0]) ||
target.parents('.swipeout').is(app.swipeoutOpenedEl) ||
target.hasClass('modal-in') ||
target.hasClass('modal-overlay') ||
target.hasClass('actions-modal') ||
target.parents('.actions-modal.modal-in, .modal.modal-in').length > 0
)) {
app.swipeoutClose(app.swipeoutOpenedEl);
}
}
});
function handleTouchStart(e) {
if (!app.allowSwipeout) return;
isMoved = false;
isTouched = true;
isScrolling = undefined;
touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
touchStartTime = (new Date()).getTime();
}
function handleTouchMove(e) {
if (!isTouched) return;
var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
if (typeof isScrolling === 'undefined') {
isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
}
if (isScrolling) {
isTouched = false;
return;
}
if (!isMoved) {
if ($('.list-block.sortable-opened').length > 0) return;
/*jshint validthis:true */
swipeOutEl = $(this);
swipeOutContent = swipeOutEl.find('.swipeout-content');
actionsRight = swipeOutEl.find('.swipeout-actions-right');
actionsLeft = swipeOutEl.find('.swipeout-actions-left');
actionsLeftWidth = actionsRightWidth = buttonsLeft = buttonsRight = overswipeRightButton = overswipeLeftButton = null;
noFoldLeft = actionsLeft.hasClass('swipeout-actions-no-fold') || app.params.swipeoutActionsNoFold;
noFoldRight = actionsRight.hasClass('swipeout-actions-no-fold') || app.params.swipeoutActionsNoFold;
if (actionsLeft.length > 0) {
actionsLeftWidth = actionsLeft.outerWidth();
buttonsLeft = actionsLeft.children('a');
overswipeLeftButton = actionsLeft.find('.swipeout-overswipe');
}
if (actionsRight.length > 0) {
actionsRightWidth = actionsRight.outerWidth();
buttonsRight = actionsRight.children('a');
overswipeRightButton = actionsRight.find('.swipeout-overswipe');
}
opened = swipeOutEl.hasClass('swipeout-opened');
if (opened) {
openedActions = swipeOutEl.find('.swipeout-actions-left.swipeout-actions-opened').length > 0 ? 'left' : 'right';
}
swipeOutEl.removeClass('transitioning');
if (!app.params.swipeoutNoFollow) {
swipeOutEl.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');
swipeOutEl.removeClass('swipeout-opened');
}
}
isMoved = true;
e.preventDefault();
touchesDiff = pageX - touchesStart.x;
translate = touchesDiff;
if (opened) {
if (openedActions === 'right') translate = translate - actionsRightWidth;
else translate = translate + actionsLeftWidth;
}
if (translate > 0 && actionsLeft.length === 0 || translate < 0 && actionsRight.length === 0) {
if (!opened) {
isTouched = isMoved = false;
swipeOutContent.transform('');
if (buttonsRight && buttonsRight.length > 0) {
buttonsRight.transform('');
}
if (buttonsLeft && buttonsLeft.length > 0) {
buttonsLeft.transform('');
}
return;
}
translate = 0;
}
if (translate < 0) direction = 'to-left';
else if (translate > 0) direction = 'to-right';
else {
if (direction) direction = direction;
else direction = 'to-left';
}
var i, buttonOffset, progress;
e.f7PreventPanelSwipe = true;
if (app.params.swipeoutNoFollow) {
if (opened) {
if (openedActions === 'right' && touchesDiff > 0) {
app.swipeoutClose(swipeOutEl);
}
if (openedActions === 'left' && touchesDiff < 0) {
app.swipeoutClose(swipeOutEl);
}
}
else {
if (touchesDiff < 0 && actionsRight.length > 0) {
app.swipeoutOpen(swipeOutEl, 'right');
}
if (touchesDiff > 0 && actionsLeft.length > 0) {
app.swipeoutOpen(swipeOutEl, 'left');
}
}
isTouched = false;
isMoved = false;
return;
}
overswipeLeft = false;
overswipeRight = false;
var $button;
if (actionsRight.length > 0) {
// Show right actions
progress = translate / actionsRightWidth;
if (translate < -actionsRightWidth) {
translate = -actionsRightWidth - Math.pow(-translate - actionsRightWidth, 0.8);
if (overswipeRightButton.length > 0) {
overswipeRight = true;
}
}
for (i = 0; i < buttonsRight.length; i++) {
if (typeof buttonsRight[i]._buttonOffset === 'undefined') {
buttonsRight[i]._buttonOffset = buttonsRight[i].offsetLeft;
}
buttonOffset = buttonsRight[i]._buttonOffset;
$button = $(buttonsRight[i]);
if (overswipeRightButton.length > 0 && $button.hasClass('swipeout-overswipe')) {
$button.css({left: (overswipeRight ? -buttonOffset : 0) + 'px'});
if (overswipeRight) {
$button.addClass('swipeout-overswipe-active');
}
else {
$button.removeClass('swipeout-overswipe-active');
}
}
$button.transform('translate3d(' + (translate - buttonOffset * (1 + Math.max(progress, -1))) + 'px,0,0)');
}
}
if (actionsLeft.length > 0) {
// Show left actions
progress = translate / actionsLeftWidth;
if (translate > actionsLeftWidth) {
translate = actionsLeftWidth + Math.pow(translate - actionsLeftWidth, 0.8);
if (overswipeLeftButton.length > 0) {
overswipeLeft = true;
}
}
for (i = 0; i < buttonsLeft.length; i++) {
if (typeof buttonsLeft[i]._buttonOffset === 'undefined') {
buttonsLeft[i]._buttonOffset = actionsLeftWidth - buttonsLeft[i].offsetLeft - buttonsLeft[i].offsetWidth;
}
buttonOffset = buttonsLeft[i]._buttonOffset;
$button = $(buttonsLeft[i]);
if (overswipeLeftButton.length > 0 && $button.hasClass('swipeout-overswipe')) {
$button.css({left: (overswipeLeft ? buttonOffset : 0) + 'px'});
if (overswipeLeft) {
$button.addClass('swipeout-overswipe-active');
}
else {
$button.removeClass('swipeout-overswipe-active');
}
}
if (buttonsLeft.length > 1) {
$button.css('z-index', buttonsLeft.length - i);
}
$button.transform('translate3d(' + (translate + buttonOffset * (1 - Math.min(progress, 1))) + 'px,0,0)');
}
}
swipeOutContent.transform('translate3d(' + translate + 'px,0,0)');
}
function handleTouchEnd(e) {
if (!isTouched || !isMoved) {
isTouched = false;
isMoved = false;
return;
}
isTouched = false;
isMoved = false;
var timeDiff = (new Date()).getTime() - touchStartTime;
var action, actionsWidth, actions, buttons, i, noFold;
noFold = direction === 'to-left' ? noFoldRight : noFoldLeft;
actions = direction === 'to-left' ? actionsRight : actionsLeft;
actionsWidth = direction === 'to-left' ? actionsRightWidth : actionsLeftWidth;
if (
timeDiff < 300 && (touchesDiff < -10 && direction === 'to-left' || touchesDiff > 10 && direction === 'to-right') ||
timeDiff >= 300 && Math.abs(translate) > actionsWidth / 2
) {
action = 'open';
}
else {
action = 'close';
}
if (timeDiff < 300) {
if (Math.abs(translate) === 0) action = 'close';
if (Math.abs(translate) === actionsWidth) action = 'open';
}
if (action === 'open') {
app.swipeoutOpenedEl = swipeOutEl;
swipeOutEl.trigger('open');
swipeOutEl.addClass('swipeout-opened transitioning');
var newTranslate = direction === 'to-left' ? -actionsWidth : actionsWidth;
swipeOutContent.transform('translate3d(' + newTranslate + 'px,0,0)');
actions.addClass('swipeout-actions-opened');
buttons = direction === 'to-left' ? buttonsRight : buttonsLeft;
if (buttons) {
for (i = 0; i < buttons.length; i++) {
$(buttons[i]).transform('translate3d(' + newTranslate + 'px,0,0)');
}
}
if (overswipeRight) {
actionsRight.find('.swipeout-overswipe')[0].click();
}
if (overswipeLeft) {
actionsLeft.find('.swipeout-overswipe')[0].click();
}
}
else {
swipeOutEl.trigger('close');
app.swipeoutOpenedEl = undefined;
swipeOutEl.addClass('transitioning').removeClass('swipeout-opened');
swipeOutContent.transform('');
actions.removeClass('swipeout-actions-opened');
}
var buttonOffset;
if (buttonsLeft && buttonsLeft.length > 0 && buttonsLeft !== buttons) {
for (i = 0; i < buttonsLeft.length; i++) {
buttonOffset = buttonsLeft[i]._buttonOffset;
if (typeof buttonOffset === 'undefined') {
buttonsLeft[i]._buttonOffset = actionsLeftWidth - buttonsLeft[i].offsetLeft - buttonsLeft[i].offsetWidth;
}
$(buttonsLeft[i]).transform('translate3d(' + (buttonOffset) + 'px,0,0)');
}
}
if (buttonsRight && buttonsRight.length > 0 && buttonsRight !== buttons) {
for (i = 0; i < buttonsRight.length; i++) {
buttonOffset = buttonsRight[i]._buttonOffset;
if (typeof buttonOffset === 'undefined') {
buttonsRight[i]._buttonOffset = buttonsRight[i].offsetLeft;
}
$(buttonsRight[i]).transform('translate3d(' + (-buttonOffset) + 'px,0,0)');
}
}
swipeOutContent.transitionEnd(function (e) {
if (opened && action === 'open' || closed && action === 'close') return;
swipeOutEl.trigger(action === 'open' ? 'opened' : 'closed');
if (opened && action === 'close') {
if (actionsRight.length > 0) {
buttonsRight.transform('');
}
if (actionsLeft.length > 0) {
buttonsLeft.transform('');
}
}
});
}
if (swipeoutEl) {
$(swipeoutEl).on(app.touchEvents.start, handleTouchStart);
$(swipeoutEl).on(app.touchEvents.move, handleTouchMove);
$(swipeoutEl).on(app.touchEvents.end, handleTouchEnd);
}
else {
$(document).on(app.touchEvents.start, '.list-block li.swipeout', handleTouchStart);
$(document).on(app.touchEvents.move, '.list-block li.swipeout', handleTouchMove);
$(document).on(app.touchEvents.end, '.list-block li.swipeout', handleTouchEnd);
}
};
app.swipeoutOpen = function (el, dir, callback) {
el = $(el);
if (arguments.length === 2) {
if (typeof arguments[1] === 'function') {
callback = dir;
}
}
if (el.length === 0) return;
if (el.length > 1) el = $(el[0]);
if (!el.hasClass('swipeout') || el.hasClass('swipeout-opened')) return;
if (!dir) {
if (el.find('.swipeout-actions-right').length > 0) dir = 'right';
else dir = 'left';
}
var swipeOutActions = el.find('.swipeout-actions-' + dir);
if (swipeOutActions.length === 0) return;
var noFold = swipeOutActions.hasClass('swipeout-actions-no-fold') || app.params.swipeoutActionsNoFold;
el.trigger('open').addClass('swipeout-opened').removeClass('transitioning');
swipeOutActions.addClass('swipeout-actions-opened');
var buttons = swipeOutActions.children('a');
var swipeOutActionsWidth = swipeOutActions.outerWidth();
var translate = dir === 'right' ? -swipeOutActionsWidth : swipeOutActionsWidth;
var i;
if (buttons.length > 1) {
for (i = 0; i < buttons.length; i++) {
if (dir === 'right') {
$(buttons[i]).transform('translate3d(' + (- buttons[i].offsetLeft) + 'px,0,0)');
}
else {
$(buttons[i]).css('z-index', buttons.length - i).transform('translate3d(' + (swipeOutActionsWidth - buttons[i].offsetWidth - buttons[i].offsetLeft) + 'px,0,0)');
}
}
var clientLeft = buttons[1].clientLeft;
}
el.addClass('transitioning');
for (i = 0; i < buttons.length; i++) {
$(buttons[i]).transform('translate3d(' + (translate) + 'px,0,0)');
}
el.find('.swipeout-content').transform('translate3d(' + translate + 'px,0,0)').transitionEnd(function () {
el.trigger('opened');
if (callback) callback.call(el[0]);
});
app.swipeoutOpenedEl = el;
};
app.swipeoutClose = function (el, callback) {
el = $(el);
if (el.length === 0) return;
if (!el.hasClass('swipeout-opened')) return;
var dir = el.find('.swipeout-actions-opened').hasClass('swipeout-actions-right') ? 'right' : 'left';
var swipeOutActions = el.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');
var noFold = swipeOutActions.hasClass('swipeout-actions-no-fold') || app.params.swipeoutActionsNoFold;
var buttons = swipeOutActions.children('a');
var swipeOutActionsWidth = swipeOutActions.outerWidth();
app.allowSwipeout = false;
el.trigger('close');
el.removeClass('swipeout-opened').addClass('transitioning');
var closeTO;
function onSwipeoutClose() {
app.allowSwipeout = true;
if (el.hasClass('swipeout-opened')) return;
el.removeClass('transitioning');
buttons.transform('');
el.trigger('closed');
if (callback) callback.call(el[0]);
if (closeTO) clearTimeout(closeTO);
}
el.find('.swipeout-content').transform('').transitionEnd(onSwipeoutClose);
closeTO = setTimeout(onSwipeoutClose, 500);
for (var i = 0; i < buttons.length; i++) {
if (dir === 'right') {
$(buttons[i]).transform('translate3d(' + (-buttons[i].offsetLeft) + 'px,0,0)');
}
else {
$(buttons[i]).transform('translate3d(' + (swipeOutActionsWidth - buttons[i].offsetWidth - buttons[i].offsetLeft) + 'px,0,0)');
}
$(buttons[i]).css({left:0 + 'px'}).removeClass('swipeout-overswipe-active');
}
if (app.swipeoutOpenedEl && app.swipeoutOpenedEl[0] === el[0]) app.swipeoutOpenedEl = undefined;
};
app.swipeoutDelete = function (el, callback) {
el = $(el);
if (el.length === 0) return;
if (el.length > 1) el = $(el[0]);
app.swipeoutOpenedEl = undefined;
el.trigger('delete');
el.css({height: el.outerHeight() + 'px'});
var clientLeft = el[0].clientLeft;
el.css({height: 0 + 'px'}).addClass('deleting transitioning').transitionEnd(function () {
el.trigger('deleted');
if (callback) callback.call(el[0]);
if (el.parents('.virtual-list').length > 0) {
var virtualList = el.parents('.virtual-list')[0].f7VirtualList;
var virtualIndex = el[0].f7VirtualListIndex;
if (virtualList && typeof virtualIndex !== 'undefined') virtualList.deleteItem(virtualIndex);
}
else {
if (app.params.swipeoutRemoveWithTimeout) {
setTimeout(function () {
el.remove();
}, 0);
}
else el.remove();
}
});
var translate = '-100%';
el.find('.swipeout-content').transform('translate3d(' + translate + ',0,0)');
};

View file

@ -1,53 +0,0 @@
/*===========================
Framework7 Swiper Additions
===========================*/
app.swiper = function (container, params) {
return new Swiper(container, params);
};
app.initPageSwiper = function (pageContainer) {
pageContainer = $(pageContainer);
var swipers = pageContainer.find('.swiper-init, .tabs-swipeable-wrap');
if (swipers.length === 0) return;
function destroySwiperOnRemove(slider) {
function destroySwiper() {
slider.destroy();
pageContainer.off('pageBeforeRemove', destroySwiper);
}
pageContainer.on('pageBeforeRemove', destroySwiper);
}
swipers.each(function () {
var swiper = $(this), initialSlide;
var params;
if (swiper.hasClass('tabs-swipeable-wrap')) {
swiper.addClass('swiper-container').children('.tabs').addClass('swiper-wrapper').children('.tab').addClass('swiper-slide');
initialSlide = swiper.children('.tabs').children('.tab.active').index();
}
if (swiper.data('swiper')) {
params = JSON.parse(swiper.data('swiper'));
}
else {
params = swiper.dataset();
}
if (typeof params.initialSlide === 'undefined' && typeof initialSlide !== 'undefined') {
params.initialSlide = initialSlide;
}
if (swiper.hasClass('tabs-swipeable-wrap')) {
params.onSlideChangeStart = function (s) {
app.showTab(s.slides.eq(s.activeIndex));
};
}
var _slider = app.swiper(swiper[0], params);
destroySwiperOnRemove(_slider);
});
};
app.reinitPageSwiper = function (pageContainer) {
pageContainer = $(pageContainer);
var sliders = pageContainer.find('.swiper-init, .tabs-swipeable-wrap');
if (sliders.length === 0) return;
for (var i = 0; i < sliders.length; i++) {
var sliderInstance = sliders[0].swiper;
if (sliderInstance) {
sliderInstance.update(true);
}
}
};

File diff suppressed because it is too large Load diff

View file

@ -1,98 +0,0 @@
/* ===============================================================================
************ Tabs ************
=============================================================================== */
app.showTab = function (tab, tabLink, force) {
var newTab = $(tab);
if (arguments.length === 2) {
if (typeof tabLink === 'boolean') {
force = tabLink;
}
}
if (newTab.length === 0) return false;
if (newTab.hasClass('active')) {
if (force) newTab.trigger('show');
return false;
}
var tabs = newTab.parent('.tabs');
if (tabs.length === 0) return false;
// Return swipeouts in hidden tabs
app.allowSwipeout = true;
// Animated tabs
var isAnimatedTabs = tabs.parent().hasClass('tabs-animated-wrap');
if (isAnimatedTabs) {
var tabTranslate = (app.rtl ? newTab.index() : -newTab.index()) * 100;
tabs.transform('translate3d(' + tabTranslate + '%,0,0)');
}
// Swipeable tabs
var isSwipeableTabs = tabs.parent().hasClass('tabs-swipeable-wrap'), swiper;
if (isSwipeableTabs) {
swiper = tabs.parent()[0].swiper;
if (swiper.activeIndex !== newTab.index()) swiper.slideTo(newTab.index(), undefined, false);
}
// Remove active class from old tabs
var oldTab = tabs.children('.tab.active').removeClass('active').trigger('hide');
// Add active class to new tab
newTab.addClass('active');
// Trigger 'show' event on new tab
newTab.trigger('show');
// Update navbars in new tab
if (!isAnimatedTabs && !isSwipeableTabs && newTab.find('.navbar').length > 0) {
// Find tab's view
var viewContainer;
if (newTab.hasClass(app.params.viewClass)) viewContainer = newTab[0];
else viewContainer = newTab.parents('.' + app.params.viewClass)[0];
app.sizeNavbars(viewContainer);
}
// Find related link for new tab
if (tabLink) tabLink = $(tabLink);
else {
// Search by id
if (typeof tab === 'string') tabLink = $('.tab-link[href="' + tab + '"]');
else tabLink = $('.tab-link[href="#' + newTab.attr('id') + '"]');
// Search by data-tab
if (!tabLink || tabLink && tabLink.length === 0) {
$('[data-tab]').each(function () {
if (newTab.is($(this).attr('data-tab'))) tabLink = $(this);
});
}
}
if (tabLink.length === 0) return;
// Find related link for old tab
var oldTabLink;
if (oldTab && oldTab.length > 0) {
// Search by id
var oldTabId = oldTab.attr('id');
if (oldTabId) oldTabLink = $('.tab-link[href="#' + oldTabId + '"]');
// Search by data-tab
if (!oldTabLink || oldTabLink && oldTabLink.length === 0) {
$('[data-tab]').each(function () {
if (oldTab.is($(this).attr('data-tab'))) oldTabLink = $(this);
});
}
}
// Update links' classes
if (tabLink && tabLink.length > 0) {
tabLink.addClass('active');
// Material Highlight
if (app.params.material) {
var tabbar = tabLink.parents('.tabbar');
if (tabbar.length > 0) {
if (tabbar.find('.tab-link-highlight').length === 0) {
tabbar.find('.toolbar-inner').append('<span class="tab-link-highlight"></span>');
}
app.materialTabbarSetHighlight(tabbar, tabLink);
}
}
}
if (oldTabLink && oldTabLink.length > 0) oldTabLink.removeClass('active');
return true;
};

View file

@ -1,21 +0,0 @@
/*===========================
Compile Template7 Templates On App Init
===========================*/
app.initTemplate7Templates = function () {
if (!window.Template7) return;
Template7.templates = Template7.templates || app.params.templates || {};
Template7.data = Template7.data || app.params.template7Data || {};
Template7.cache = Template7.cache || {};
app.templates = Template7.templates;
app.template7Data = Template7.data;
app.template7Cache = Template7.cache;
// Precompile templates on app init
if (!app.params.precompileTemplates) return;
$('script[type="text/template7"]').each(function () {
var id = $(this).attr('id');
if (!id) return;
Template7.templates[id] = Template7.compile($(this).html());
});
};

View file

@ -1,473 +0,0 @@
/*===========================
Template7 Template engine
===========================*/
window.Template7 = (function () {
'use strict';
function isArray(arr) {
return Object.prototype.toString.apply(arr) === '[object Array]';
}
function isObject(obj) {
return obj instanceof Object;
}
function isFunction(func) {
return typeof func === 'function';
}
function _escape(string) {
return typeof window !== 'undefined' && window.escape ? window.escape(string) : string
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;');
}
var cache = {};
var quoteSingleRexExp = new RegExp('\'', 'g');
var quoteDoubleRexExp = new RegExp('"', 'g');
function helperToSlices(string) {
var helperParts = string.replace(/[{}#}]/g, '').split(' ');
var slices = [];
var shiftIndex, i, j;
for (i = 0; i < helperParts.length; i++) {
var part = helperParts[i];
var blockQuoteRegExp, openingQuote;
if (i === 0) slices.push(part);
else {
if (part.indexOf('"') === 0 || part.indexOf('\'') === 0) {
blockQuoteRegExp = part.indexOf('"') === 0 ? quoteDoubleRexExp : quoteSingleRexExp;
openingQuote = part.indexOf('"') === 0 ? '"' : '\'';
// Plain String
if (part.match(blockQuoteRegExp).length === 2) {
// One word string
slices.push(part);
}
else {
// Find closed Index
shiftIndex = 0;
for (j = i + 1; j < helperParts.length; j++) {
part += ' ' + helperParts[j];
if (helperParts[j].indexOf(openingQuote) >= 0) {
shiftIndex = j;
slices.push(part);
break;
}
}
if (shiftIndex) i = shiftIndex;
}
}
else {
if (part.indexOf('=') > 0) {
// Hash
var hashParts = part.split('=');
var hashName = hashParts[0];
var hashContent = hashParts[1];
if (hashContent.match(blockQuoteRegExp).length !== 2) {
shiftIndex = 0;
for (j = i + 1; j < helperParts.length; j++) {
hashContent += ' ' + helperParts[j];
if (helperParts[j].indexOf(openingQuote) >= 0) {
shiftIndex = j;
break;
}
}
if (shiftIndex) i = shiftIndex;
}
var hash = [hashName, hashContent.replace(blockQuoteRegExp,'')];
slices.push(hash);
}
else {
// Plain variable
slices.push(part);
}
}
}
}
return slices;
}
function stringToBlocks(string) {
var blocks = [], i, j, k;
if (!string) return [];
var _blocks = string.split(/({{[^{^}]*}})/);
for (i = 0; i < _blocks.length; i++) {
var block = _blocks[i];
if (block === '') continue;
if (block.indexOf('{{') < 0) {
blocks.push({
type: 'plain',
content: block
});
}
else {
if (block.indexOf('{/') >= 0) {
continue;
}
if (block.indexOf('{#') < 0 && block.indexOf(' ') < 0 && block.indexOf('else') < 0) {
// Simple variable
blocks.push({
type: 'variable',
contextName: block.replace(/[{}]/g, '')
});
continue;
}
// Helpers
var helperSlices = helperToSlices(block);
var helperName = helperSlices[0];
var isPartial = helperName === '>';
var helperContext = [];
var helperHash = {};
for (j = 1; j < helperSlices.length; j++) {
var slice = helperSlices[j];
if (isArray(slice)) {
// Hash
helperHash[slice[0]] = slice[1] === 'false' ? false : slice[1];
}
else {
helperContext.push(slice);
}
}
if (block.indexOf('{#') >= 0) {
// Condition/Helper
var helperStartIndex = i;
var helperContent = '';
var elseContent = '';
var toSkip = 0;
var shiftIndex;
var foundClosed = false, foundElse = false, foundClosedElse = false, depth = 0;
for (j = i + 1; j < _blocks.length; j++) {
if (_blocks[j].indexOf('{{#') >= 0) {
depth ++;
}
if (_blocks[j].indexOf('{{/') >= 0) {
depth --;
}
if (_blocks[j].indexOf('{{#' + helperName) >= 0) {
helperContent += _blocks[j];
if (foundElse) elseContent += _blocks[j];
toSkip ++;
}
else if (_blocks[j].indexOf('{{/' + helperName) >= 0) {
if (toSkip > 0) {
toSkip--;
helperContent += _blocks[j];
if (foundElse) elseContent += _blocks[j];
}
else {
shiftIndex = j;
foundClosed = true;
break;
}
}
else if (_blocks[j].indexOf('else') >= 0 && depth === 0) {
foundElse = true;
}
else {
if (!foundElse) helperContent += _blocks[j];
if (foundElse) elseContent += _blocks[j];
}
}
if (foundClosed) {
if (shiftIndex) i = shiftIndex;
blocks.push({
type: 'helper',
helperName: helperName,
contextName: helperContext,
content: helperContent,
inverseContent: elseContent,
hash: helperHash
});
}
}
else if (block.indexOf(' ') > 0) {
if (isPartial) {
helperName = '_partial';
if (helperContext[0]) helperContext[0] = '"' + helperContext[0].replace(/"|'/g, '') + '"';
}
blocks.push({
type: 'helper',
helperName: helperName,
contextName: helperContext,
hash: helperHash
});
}
}
}
return blocks;
}
var Template7 = function (template, options) {
var t = this;
t.template = template;
function getCompileFn(block, depth) {
if (block.content) return compile(block.content, depth);
else return function () {return ''; };
}
function getCompileInverse(block, depth) {
if (block.inverseContent) return compile(block.inverseContent, depth);
else return function () {return ''; };
}
function getCompileVar(name, ctx) {
var variable, parts, levelsUp = 0, initialCtx = ctx;
if (name.indexOf('../') === 0) {
levelsUp = name.split('../').length - 1;
var newDepth = ctx.split('_')[1] - levelsUp;
ctx = 'ctx_' + (newDepth >= 1 ? newDepth : 1);
parts = name.split('../')[levelsUp].split('.');
}
else if (name.indexOf('@global') === 0) {
ctx = 'Template7.global';
parts = name.split('@global.')[1].split('.');
}
else if (name.indexOf('@root') === 0) {
ctx = 'root';
parts = name.split('@root.')[1].split('.');
}
else {
parts = name.split('.');
}
variable = ctx;
for (var i = 0; i < parts.length; i++) {
var part = parts[i];
if (part.indexOf('@') === 0) {
if (i > 0) {
variable += '[(data && data.' + part.replace('@', '') + ')]';
}
else {
variable = '(data && data.' + name.replace('@', '') + ')';
}
}
else {
if (isFinite(part)) {
variable += '[' + part + ']';
}
else {
if (part === 'this' || part.indexOf('this.') >= 0 || part.indexOf('this[') >= 0 || part.indexOf('this(') >= 0) {
variable = part.replace('this', ctx);
}
else {
variable += '.' + part;
}
}
}
}
return variable;
}
function getCompiledArguments(contextArray, ctx) {
var arr = [];
for (var i = 0; i < contextArray.length; i++) {
if (/^['"]/.test(contextArray[i])) arr.push(contextArray[i]);
else if (/^(true|false|\d+)$/.test(contextArray[i])) arr.push(contextArray[i]);
else {
arr.push(getCompileVar(contextArray[i], ctx));
}
}
return arr.join(', ');
}
function compile(template, depth) {
depth = depth || 1;
template = template || t.template;
if (typeof template !== 'string') {
throw new Error('Template7: Template must be a string');
}
var blocks = stringToBlocks(template);
if (blocks.length === 0) {
return function () { return ''; };
}
var ctx = 'ctx_' + depth;
var resultString = '';
if (depth === 1) {
resultString += '(function (' + ctx + ', data, root) {\n';
}
else {
resultString += '(function (' + ctx + ', data) {\n';
}
if (depth === 1) {
resultString += 'function isArray(arr){return Object.prototype.toString.apply(arr) === \'[object Array]\';}\n';
resultString += 'function isFunction(func){return (typeof func === \'function\');}\n';
resultString += 'function c(val, ctx) {if (typeof val !== "undefined" && val !== null) {if (isFunction(val)) {return val.call(ctx);} else return val;} else return "";}\n';
resultString += 'root = root || ctx_1 || {};\n';
}
resultString += 'var r = \'\';\n';
var i, j, context;
for (i = 0; i < blocks.length; i++) {
var block = blocks[i];
// Plain block
if (block.type === 'plain') {
resultString += 'r +=\'' + (block.content).replace(/\r/g, '\\r').replace(/\n/g, '\\n').replace(/'/g, '\\' + '\'') + '\';';
continue;
}
var variable, compiledArguments;
// Variable block
if (block.type === 'variable') {
variable = getCompileVar(block.contextName, ctx);
resultString += 'r += c(' + variable + ', ' + ctx + ');';
}
// Helpers block
if (block.type === 'helper') {
if (block.helperName in t.helpers) {
compiledArguments = getCompiledArguments(block.contextName, ctx);
resultString += 'r += (Template7.helpers.' + block.helperName + ').call(' + ctx + ', ' + (compiledArguments && (compiledArguments + ', ')) +'{hash:' + JSON.stringify(block.hash) + ', data: data || {}, fn: ' + getCompileFn(block, depth + 1) + ', inverse: ' + getCompileInverse(block, depth + 1) + ', root: root});';
}
else {
if (block.contextName.length > 0) {
throw new Error('Template7: Missing helper: "' + block.helperName + '"');
}
else {
variable = getCompileVar(block.helperName, ctx);
resultString += 'if (' + variable + ') {';
resultString += 'if (isArray(' + variable + ')) {';
resultString += 'r += (Template7.helpers.each).call(' + ctx + ', ' + variable + ', {hash:' + JSON.stringify(block.hash) + ', data: data || {}, fn: ' + getCompileFn(block, depth+1) + ', inverse: ' + getCompileInverse(block, depth+1) + ', root: root});';
resultString += '}else {';
resultString += 'r += (Template7.helpers.with).call(' + ctx + ', ' + variable + ', {hash:' + JSON.stringify(block.hash) + ', data: data || {}, fn: ' + getCompileFn(block, depth+1) + ', inverse: ' + getCompileInverse(block, depth+1) + ', root: root});';
resultString += '}}';
}
}
}
}
resultString += '\nreturn r;})';
return eval.call(window, resultString);
}
t.compile = function (template) {
if (!t.compiled) {
t.compiled = compile(template);
}
return t.compiled;
};
};
Template7.prototype = {
options: {},
partials: {},
helpers: {
'_partial' : function (partialName, options) {
var p = Template7.prototype.partials[partialName];
if (!p || (p && !p.template)) return '';
if (!p.compiled) {
p.compiled = new Template7(p.template).compile();
}
var ctx = this;
for (var hashName in options.hash) {
ctx[hashName] = options.hash[hashName];
}
return p.compiled(ctx, options.data, options.root);
},
'escape': function (context, options) {
if (typeof context !== 'string') {
throw new Error('Template7: Passed context to "escape" helper should be a string');
}
return _escape(context);
},
'if': function (context, options) {
if (isFunction(context)) { context = context.call(this); }
if (context) {
return options.fn(this, options.data);
}
else {
return options.inverse(this, options.data);
}
},
'unless': function (context, options) {
if (isFunction(context)) { context = context.call(this); }
if (!context) {
return options.fn(this, options.data);
}
else {
return options.inverse(this, options.data);
}
},
'each': function (context, options) {
var ret = '', i = 0;
if (isFunction(context)) { context = context.call(this); }
if (isArray(context)) {
if (options.hash.reverse) {
context = context.reverse();
}
for (i = 0; i < context.length; i++) {
ret += options.fn(context[i], {first: i === 0, last: i === context.length - 1, index: i});
}
if (options.hash.reverse) {
context = context.reverse();
}
}
else {
for (var key in context) {
i++;
ret += options.fn(context[key], {key: key});
}
}
if (i > 0) return ret;
else return options.inverse(this);
},
'with': function (context, options) {
if (isFunction(context)) { context = context.call(this); }
return options.fn(context);
},
'join': function (context, options) {
if (isFunction(context)) { context = context.call(this); }
return context.join(options.hash.delimiter || options.hash.delimeter);
},
'js': function (expression, options) {
var func;
if (expression.indexOf('return')>=0) {
func = '(function(){'+expression+'})';
}
else {
func = '(function(){return ('+expression+')})';
}
return eval.call(this, func).call(this);
},
'js_compare': function (expression, options) {
var func;
if (expression.indexOf('return')>=0) {
func = '(function(){'+expression+'})';
}
else {
func = '(function(){return ('+expression+')})';
}
var condition = eval.call(this, func).call(this);
if (condition) {
return options.fn(this, options.data);
}
else {
return options.inverse(this, options.data);
}
}
}
};
var t7 = function (template, data) {
if (arguments.length === 2) {
var instance = new Template7(template);
var rendered = instance.compile()(data);
instance = null;
return (rendered);
}
else return new Template7(template);
};
t7.registerHelper = function (name, fn) {
Template7.prototype.helpers[name] = fn;
};
t7.unregisterHelper = function (name) {
Template7.prototype.helpers[name] = undefined;
delete Template7.prototype.helpers[name];
};
t7.registerPartial = function (name, template) {
Template7.prototype.partials[name] = {template: template};
};
t7.unregisterPartial = function (name, template) {
if (Template7.prototype.partials[name]) {
Template7.prototype.partials[name] = undefined;
delete Template7.prototype.partials[name];
}
};
t7.compile = function (template, options) {
var instance = new Template7(template, options);
return instance.compile();
};
t7.options = Template7.prototype.options;
t7.helpers = Template7.prototype.helpers;
t7.partials = Template7.prototype.partials;
return t7;
})();

View file

@ -1,637 +0,0 @@
/*======================================================
************ Views ************
======================================================*/
app.views = [];
var View = function (selector, params) {
var defaults = {
dynamicNavbar: false,
domCache: false,
linksView: undefined,
reloadPages: false,
uniqueHistory: app.params.uniqueHistory,
uniqueHistoryIgnoreGetParameters: app.params.uniqueHistoryIgnoreGetParameters,
allowDuplicateUrls: app.params.allowDuplicateUrls,
swipeBackPage: app.params.swipeBackPage,
swipeBackPageAnimateShadow: app.params.swipeBackPageAnimateShadow,
swipeBackPageAnimateOpacity: app.params.swipeBackPageAnimateOpacity,
swipeBackPageActiveArea: app.params.swipeBackPageActiveArea,
swipeBackPageThreshold: app.params.swipeBackPageThreshold,
animatePages: app.params.animatePages,
preloadPreviousPage: app.params.preloadPreviousPage
};
var i;
// Params
params = params || {};
// Disable dynamic navbar for material theme
if (params.dynamicNavbar && app.params.material) params.dynamicNavbar = false;
// Extend params with defaults
for (var def in defaults) {
if (typeof params[def] === 'undefined') {
params[def] = defaults[def];
}
}
// View
var view = this;
view.params = params;
// Selector
view.selector = selector;
// Container
var container = $(selector);
view.container = container[0];
// Fix Selector
if (typeof selector !== 'string') {
// Supposed to be HTMLElement or Dom7
selector = (container.attr('id') ? '#' + container.attr('id') : '') + (container.attr('class') ? '.' + container.attr('class').replace(/ /g, '.').replace('.active', '') : '');
view.selector = selector;
}
// Is main
view.main = container.hasClass(app.params.viewMainClass);
// Content cache
view.contentCache = {};
// Context cache
view.contextCache = {};
// Pages cache
view.pagesCache = {};
view.pageElementsCache = {};
// Store View in element for easy access
container[0].f7View = view;
// Pages
view.pagesContainer = container.find('.pages')[0];
view.initialPages = [];
view.initialPagesUrl = [];
view.initialNavbars = [];
if (view.params.domCache) {
var initialPages = container.find('.page');
for (i = 0; i < initialPages.length; i++) {
view.initialPages.push(initialPages[i]);
view.initialPagesUrl.push('#' + initialPages.eq(i).attr('data-page'));
}
if (view.params.dynamicNavbar) {
var initialNavbars = container.find('.navbar-inner');
for (i = 0; i < initialNavbars.length; i++) {
view.initialNavbars.push(initialNavbars[i]);
}
}
}
view.allowPageChange = true;
// Location
var docLocation = document.location.href;
// History
view.history = [];
var viewURL = docLocation;
var pushStateSeparator = app.params.pushStateSeparator;
var pushStateRoot = app.params.pushStateRoot;
if (app.params.pushState && view.main) {
if (pushStateRoot) {
viewURL = pushStateRoot;
}
else {
if (pushStateSeparator && viewURL.indexOf(pushStateSeparator) >= 0 && viewURL.indexOf(pushStateSeparator + '#') < 0) viewURL = viewURL.split(pushStateSeparator)[0];
}
}
// Active Page
var currentPage, currentPageData;
if (!view.activePage) {
currentPage = $(view.pagesContainer).find('.page-on-center');
if (currentPage.length === 0) {
currentPage = $(view.pagesContainer).find('.page:not(.cached)');
currentPage = currentPage.eq(currentPage.length - 1);
}
if (currentPage.length > 0) {
currentPageData = currentPage[0].f7PageData;
}
}
// View startup URL
if (view.params.domCache && currentPage) {
view.url = container.attr('data-url') || view.params.url || '#' + currentPage.attr('data-page');
view.pagesCache[view.url] = currentPage.attr('data-page');
}
else view.url = container.attr('data-url') || view.params.url || viewURL;
// Update current page Data
if (currentPageData) {
currentPageData.view = view;
currentPageData.url = view.url;
if (view.params.domCache && view.params.dynamicNavbar && !currentPageData.navbarInnerContainer) {
currentPageData.navbarInnerContainer = view.initialNavbars[view.initialPages.indexOf(currentPageData.container)];
}
view.activePage = currentPageData;
currentPage[0].f7PageData = currentPageData;
}
// Store to history main view's url
if (view.url) {
view.history.push(view.url);
}
// Touch events
var isTouched = false,
isMoved = false,
touchesStart = {},
isScrolling,
activePage = [],
previousPage = [],
viewContainerWidth,
touchesDiff,
allowViewTouchMove = true,
touchStartTime,
activeNavbar = [],
previousNavbar = [],
activeNavElements,
previousNavElements,
activeNavBackIcon,
previousNavBackIcon,
dynamicNavbar,
pageShadow,
el;
view.handleTouchStart = function (e) {
if (!allowViewTouchMove || !view.params.swipeBackPage || isTouched || app.swipeoutOpenedEl || !view.allowPageChange) return;
isMoved = false;
isTouched = true;
isScrolling = undefined;
touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
touchStartTime = (new Date()).getTime();
dynamicNavbar = view.params.dynamicNavbar && container.find('.navbar-inner').length > 1;
};
view.handleTouchMove = function (e) {
if (!isTouched) return;
var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
if (typeof isScrolling === 'undefined') {
isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
}
if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {
isTouched = false;
return;
}
if (!isMoved) {
var cancel = false;
// Calc values during first move fired
viewContainerWidth = container.width();
var target = $(e.target);
var swipeout = target.hasClass('swipeout') ? target : target.parents('.swipeout');
if (swipeout.length > 0) {
if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) cancel = true;
if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) cancel = true;
}
activePage = target.is('.page') ? target : target.parents('.page');
if (activePage.hasClass('no-swipeback')) cancel = true;
previousPage = container.find('.page-on-left:not(.cached)');
var notFromBorder = touchesStart.x - container.offset().left > view.params.swipeBackPageActiveArea;
if (app.rtl) {
notFromBorder = touchesStart.x < container.offset().left - container[0].scrollLeft + viewContainerWidth - view.params.swipeBackPageActiveArea;
}
else {
notFromBorder = touchesStart.x - container.offset().left > view.params.swipeBackPageActiveArea;
}
if (notFromBorder) cancel = true;
if (previousPage.length === 0 || activePage.length === 0) cancel = true;
if (cancel) {
isTouched = false;
return;
}
if (view.params.swipeBackPageAnimateShadow && !app.device.android) {
pageShadow = activePage.find('.swipeback-page-shadow');
if (pageShadow.length === 0) {
pageShadow = $('<div class="swipeback-page-shadow"></div>');
activePage.append(pageShadow);
}
}
if (dynamicNavbar) {
activeNavbar = container.find('.navbar-on-center:not(.cached)');
previousNavbar = container.find('.navbar-on-left:not(.cached)');
activeNavElements = activeNavbar.find('.left, .center, .right, .subnavbar, .fading');
previousNavElements = previousNavbar.find('.left, .center, .right, .subnavbar, .fading');
if (app.params.animateNavBackIcon) {
activeNavBackIcon = activeNavbar.find('.left.sliding .back .icon');
previousNavBackIcon = previousNavbar.find('.left.sliding .back .icon');
}
}
// Close/Hide Any Picker
if ($('.picker-modal.modal-in').length > 0) {
app.closeModal($('.picker-modal.modal-in'));
}
}
e.f7PreventPanelSwipe = true;
isMoved = true;
e.preventDefault();
// RTL inverter
var inverter = app.rtl ? -1 : 1;
// Touches diff
touchesDiff = (pageX - touchesStart.x - view.params.swipeBackPageThreshold) * inverter;
if (touchesDiff < 0) touchesDiff = 0;
var percentage = touchesDiff / viewContainerWidth;
// Swipe Back Callback
var callbackData = {
percentage: percentage,
activePage: activePage[0],
previousPage: previousPage[0],
activeNavbar: activeNavbar[0],
previousNavbar: previousNavbar[0]
};
if (view.params.onSwipeBackMove) {
view.params.onSwipeBackMove(callbackData);
}
container.trigger('swipeBackMove', callbackData);
// Transform pages
var activePageTranslate = touchesDiff * inverter;
var previousPageTranslate = (touchesDiff / 5 - viewContainerWidth / 5) * inverter;
if (app.device.pixelRatio === 1) {
activePageTranslate = Math.round(activePageTranslate);
previousPageTranslate = Math.round(previousPageTranslate);
}
activePage.transform('translate3d(' + activePageTranslate + 'px,0,0)');
if (view.params.swipeBackPageAnimateShadow && !app.device.android) pageShadow[0].style.opacity = 1 - 1 * percentage;
previousPage.transform('translate3d(' + previousPageTranslate + 'px,0,0)');
if (view.params.swipeBackPageAnimateOpacity) previousPage[0].style.opacity = 0.9 + 0.1 * percentage;
// Dynamic Navbars Animation
if (dynamicNavbar) {
var i;
for (i = 0; i < activeNavElements.length; i++) {
el = $(activeNavElements[i]);
if (!el.is('.subnavbar.sliding')) el[0].style.opacity = (1 - percentage * 1.3);
if (el[0].className.indexOf('sliding') >= 0) {
var activeNavTranslate = percentage * el[0].f7NavbarRightOffset;
if (app.device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);
el.transform('translate3d(' + activeNavTranslate + 'px,0,0)');
if (app.params.animateNavBackIcon) {
if (el[0].className.indexOf('left') >= 0 && activeNavBackIcon.length > 0) {
activeNavBackIcon.transform('translate3d(' + -activeNavTranslate + 'px,0,0)');
}
}
}
}
for (i = 0; i < previousNavElements.length; i++) {
el = $(previousNavElements[i]);
if (!el.is('.subnavbar.sliding')) el[0].style.opacity = percentage * 1.3 - 0.3;
if (el[0].className.indexOf('sliding') >= 0) {
var previousNavTranslate = el[0].f7NavbarLeftOffset * (1 - percentage);
if (app.device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);
el.transform('translate3d(' + previousNavTranslate + 'px,0,0)');
if (app.params.animateNavBackIcon) {
if (el[0].className.indexOf('left') >= 0 && previousNavBackIcon.length > 0) {
previousNavBackIcon.transform('translate3d(' + -previousNavTranslate + 'px,0,0)');
}
}
}
}
}
};
view.handleTouchEnd = function (e) {
if (!isTouched || !isMoved) {
isTouched = false;
isMoved = false;
return;
}
isTouched = false;
isMoved = false;
if (touchesDiff === 0) {
$([activePage[0], previousPage[0]]).transform('').css({opacity: '', boxShadow: ''});
if (dynamicNavbar) {
activeNavElements.transform('').css({opacity: ''});
previousNavElements.transform('').css({opacity: ''});
if (activeNavBackIcon && activeNavBackIcon.length > 0) activeNavBackIcon.transform('');
if (previousNavBackIcon && activeNavBackIcon.length > 0) previousNavBackIcon.transform('');
}
return;
}
var timeDiff = (new Date()).getTime() - touchStartTime;
var pageChanged = false;
// Swipe back to previous page
if (
timeDiff < 300 && touchesDiff > 10 ||
timeDiff >= 300 && touchesDiff > viewContainerWidth / 2
) {
activePage.removeClass('page-on-center').addClass('page-on-right');
previousPage.removeClass('page-on-left').addClass('page-on-center');
if (dynamicNavbar) {
activeNavbar.removeClass('navbar-on-center').addClass('navbar-on-right');
previousNavbar.removeClass('navbar-on-left').addClass('navbar-on-center');
}
pageChanged = true;
}
// Reset custom styles
// Add transitioning class for transition-duration
$([activePage[0], previousPage[0]]).transform('').css({opacity: '', boxShadow: ''}).addClass('page-transitioning');
if (dynamicNavbar) {
activeNavElements.css({opacity: ''})
.each(function () {
var translate = pageChanged ? this.f7NavbarRightOffset : 0;
var sliding = $(this);
sliding.transform('translate3d(' + translate + 'px,0,0)');
if (app.params.animateNavBackIcon) {
if (sliding.hasClass('left') && activeNavBackIcon.length > 0) {
activeNavBackIcon.addClass('page-transitioning').transform('translate3d(' + -translate + 'px,0,0)');
}
}
}).addClass('page-transitioning');
previousNavElements.transform('').css({opacity: ''}).each(function () {
var translate = pageChanged ? 0 : this.f7NavbarLeftOffset;
var sliding = $(this);
sliding.transform('translate3d(' + translate + 'px,0,0)');
if (app.params.animateNavBackIcon) {
if (sliding.hasClass('left') && previousNavBackIcon.length > 0) {
previousNavBackIcon.addClass('page-transitioning').transform('translate3d(' + -translate + 'px,0,0)');
}
}
}).addClass('page-transitioning');
}
allowViewTouchMove = false;
view.allowPageChange = false;
// Swipe Back Callback
var callbackData = {
activePage: activePage[0],
previousPage: previousPage[0],
activeNavbar: activeNavbar[0],
previousNavbar: previousNavbar[0]
};
if (pageChanged) {
// Update View's URL
var url = view.history[view.history.length - 2];
view.url = url;
// Page before animation callback
app.pageBackCallback('before', view, {pageContainer: activePage[0], url: url, position: 'center', newPage: previousPage, oldPage: activePage, swipeBack: true});
app.pageAnimCallback('before', view, {pageContainer: previousPage[0], url: url, position: 'left', newPage: previousPage, oldPage: activePage, swipeBack: true});
if (view.params.onSwipeBackBeforeChange) {
view.params.onSwipeBackBeforeChange(callbackData);
}
container.trigger('swipeBackBeforeChange', callbackData);
}
else {
if (view.params.onSwipeBackBeforeReset) {
view.params.onSwipeBackBeforeReset(callbackData);
}
container.trigger('swipeBackBeforeReset', callbackData);
}
activePage.transitionEnd(function () {
$([activePage[0], previousPage[0]]).removeClass('page-transitioning');
if (dynamicNavbar) {
activeNavElements.removeClass('page-transitioning').css({opacity: ''});
previousNavElements.removeClass('page-transitioning').css({opacity: ''});
if (activeNavBackIcon && activeNavBackIcon.length > 0) activeNavBackIcon.removeClass('page-transitioning');
if (previousNavBackIcon && previousNavBackIcon.length > 0) previousNavBackIcon.removeClass('page-transitioning');
}
allowViewTouchMove = true;
view.allowPageChange = true;
if (pageChanged) {
if (app.params.pushState && view.main) history.back();
// Page after animation callback
app.pageBackCallback('after', view, {pageContainer: activePage[0], url: url, position: 'center', newPage: previousPage, oldPage: activePage, swipeBack: true});
app.pageAnimCallback('after', view, {pageContainer: previousPage[0], url: url, position: 'left', newPage: previousPage, oldPage: activePage, swipeBack: true});
app.router.afterBack(view, activePage, previousPage);
if (view.params.onSwipeBackAfterChange) {
view.params.onSwipeBackAfterChange(callbackData);
}
container.trigger('swipeBackAfterChange', callbackData);
}
else {
if (view.params.onSwipeBackAfterReset) {
view.params.onSwipeBackAfterReset(callbackData);
}
container.trigger('swipeBackAfterReset', callbackData);
}
if (pageShadow && pageShadow.length > 0) pageShadow.remove();
});
};
view.attachEvents = function (detach) {
var action = detach ? 'off' : 'on';
var passiveListener = app.touchEvents.start === 'touchstart' && app.support.passiveListener ? {passive: true, capture: false} : false;
container[action](app.touchEvents.start, view.handleTouchStart, passiveListener);
container[action](app.touchEvents.move, view.handleTouchMove);
container[action](app.touchEvents.end, view.handleTouchEnd, passiveListener);
};
view.detachEvents = function () {
view.attachEvents(true);
};
// Init
if (view.params.swipeBackPage && !app.params.material) {
view.attachEvents();
}
// Add view to app
app.views.push(view);
if (view.main) app.mainView = view;
// Router
view.router = {
load: function (options) {
return app.router.load(view, options);
},
back: function (options) {
return app.router.back(view, options);
},
// Shortcuts
loadPage: function (options) {
options = options || {};
if (typeof options === 'string') {
var url = options;
options = {};
if (url && url.indexOf('#') === 0 && view.params.domCache) {
options.pageName = url.split('#')[1];
}
else options.url = url;
}
return app.router.load(view, options);
},
loadContent: function (content) {
return app.router.load(view, {content: content});
},
reloadPage: function (url) {
return app.router.load(view, {url: url, reload: true});
},
reloadContent: function (content) {
return app.router.load(view, {content: content, reload: true});
},
reloadPreviousPage: function (url) {
return app.router.load(view, {url: url, reloadPrevious: true, reload: true});
},
reloadPreviousContent: function (content) {
return app.router.load(view, {content: content, reloadPrevious: true, reload: true});
},
refreshPage: function () {
var options = {
url: view.url,
reload: true,
ignoreCache: true
};
if (options.url && options.url.indexOf('#') === 0) {
if (view.params.domCache && view.pagesCache[options.url]) {
options.pageName = view.pagesCache[options.url];
options.url = undefined;
delete options.url;
}
else if (view.contentCache[options.url]) {
options.content = view.contentCache[options.url];
options.url = undefined;
delete options.url;
}
}
return app.router.load(view, options);
},
refreshPreviousPage: function () {
var options = {
url: view.history[view.history.length - 2],
reload: true,
reloadPrevious: true,
ignoreCache: true
};
if (options.url && options.url.indexOf('#') === 0 && view.params.domCache && view.pagesCache[options.url]) {
options.pageName = view.pagesCache[options.url];
options.url = undefined;
delete options.url;
}
return app.router.load(view, options);
}
};
// Aliases for temporary backward compatibility
view.loadPage = view.router.loadPage;
view.loadContent = view.router.loadContent;
view.reloadPage = view.router.reloadPage;
view.reloadContent = view.router.reloadContent;
view.reloadPreviousPage = view.router.reloadPreviousPage;
view.reloadPreviousContent = view.router.reloadPreviousContent;
view.refreshPage = view.router.refreshPage;
view.refreshPreviousPage = view.router.refreshPreviousPage;
view.back = view.router.back;
// Bars methods
view.hideNavbar = function () {
return app.hideNavbar(container.find('.navbar'));
};
view.showNavbar = function () {
return app.showNavbar(container.find('.navbar'));
};
view.hideToolbar = function () {
return app.hideToolbar(container.find('.toolbar'));
};
view.showToolbar = function () {
return app.showToolbar(container.find('.toolbar'));
};
// Push State on load
if (app.params.pushState && app.params.pushStateOnLoad && view.main) {
var pushStateUrl;
var pushStateUrlSplit = docLocation.split(pushStateSeparator)[1];
if (pushStateRoot) {
pushStateUrl = docLocation.split(app.params.pushStateRoot + pushStateSeparator)[1];
}
else if (pushStateSeparator && docLocation.indexOf(pushStateSeparator) >= 0 && docLocation.indexOf(pushStateSeparator + '#') < 0) {
pushStateUrl = pushStateUrlSplit;
}
var pushStateAnimatePages = app.params.pushStateNoAnimation ? false : undefined;
var historyState = history.state;
if (pushStateUrl) {
if (pushStateUrl.indexOf('#') >= 0 && view.params.domCache && historyState && historyState.pageName && 'viewIndex' in historyState) {
app.router.load(view, {pageName: historyState.pageName, url: historyState.url, animatePages: pushStateAnimatePages, pushState: false});
}
else if (pushStateUrl.indexOf('#') >= 0 && view.params.domCache && view.initialPagesUrl.indexOf(pushStateUrl) >= 0) {
app.router.load(view, {pageName: pushStateUrl.replace('#',''), animatePages: pushStateAnimatePages, pushState: false});
}
else app.router.load(view, {url: pushStateUrl, animatePages: pushStateAnimatePages, pushState: false});
}
else if (view.params.domCache && docLocation.indexOf(pushStateSeparator + '#') >= 0) {
if (historyState && historyState.pageName && 'viewIndex' in historyState) {
app.router.load(view, {pageName: historyState.pageName, url: historyState.url, animatePages: pushStateAnimatePages, pushState: false});
}
else if (pushStateSeparator && pushStateUrlSplit.indexOf('#') === 0) {
if (view.initialPagesUrl.indexOf(pushStateUrlSplit)) {
app.router.load(view, {pageName: pushStateUrlSplit.replace('#', ''), animatePages: pushStateAnimatePages, pushState: false});
}
}
}
}
// Destroy
view.destroy = function () {
view.detachEvents();
view = undefined;
};
// Plugin hook
app.pluginHook('addView', view);
// Return view
return view;
};
app.addView = function (selector, params) {
return new View(selector, params);
};
app.getCurrentView = function (index) {
var popoverView = $('.popover.modal-in .view');
var popupView = $('.popup.modal-in .view');
var panelView = $('.panel.active .view');
var appViews = $('.views');
// Find active view as tab
var appView = appViews.children('.view');
// Propably in tabs or split view
if (appView.length > 1) {
if (appView.hasClass('tab')) {
// Tabs
appView = appViews.children('.view.active');
}
else {
// Split View, leave appView intact
}
}
if (popoverView.length > 0 && popoverView[0].f7View) return popoverView[0].f7View;
if (popupView.length > 0 && popupView[0].f7View) return popupView[0].f7View;
if (panelView.length > 0 && panelView[0].f7View) return panelView[0].f7View;
if (appView.length > 0) {
if (appView.length === 1 && appView[0].f7View) return appView[0].f7View;
if (appView.length > 1) {
var currentViews = [];
for (var i = 0; i < appView.length; i++) {
if (appView[i].f7View) currentViews.push(appView[i].f7View);
}
if (currentViews.length > 0 && typeof index !== 'undefined') return currentViews[index];
if (currentViews.length > 1) return currentViews;
if (currentViews.length === 1) return currentViews[0];
return undefined;
}
}
return undefined;
};

View file

@ -1,468 +0,0 @@
/*===============================================================================
************ Virtual List ************
===============================================================================*/
var VirtualList = function (listBlock, params) {
var defaults = {
cols: 1,
height: app.params.material ? 48 : 44,
cache: true,
dynamicHeightBufferSize: 1,
showFilteredItemsOnly: false
};
params = params || {};
for (var def in defaults) {
if (typeof params[def] === 'undefined') {
params[def] = defaults[def];
}
}
// Preparation
var vl = this;
vl.listBlock = $(listBlock);
vl.params = params;
vl.items = vl.params.items;
if (vl.params.showFilteredItemsOnly) {
vl.filteredItems = [];
}
if (vl.params.template) {
if (typeof vl.params.template === 'string') vl.template = t7.compile(vl.params.template);
else if (typeof vl.params.template === 'function') vl.template = vl.params.template;
}
vl.pageContent = vl.listBlock.parents('.page-content');
// Bad scroll
var updatableScroll;
if (typeof vl.params.updatableScroll !== 'undefined') {
updatableScroll = vl.params.updatableScroll;
}
else {
updatableScroll = true;
if (app.device.ios && app.device.osVersion.split('.')[0] < 8) {
updatableScroll = false;
}
}
// Append <ul>
vl.ul = vl.params.ul ? $(vl.params.ul) : vl.listBlock.children('ul');
if (vl.ul.length === 0) {
vl.listBlock.append('<ul></ul>');
vl.ul = vl.listBlock.children('ul');
}
// DOM cached items
vl.domCache = {};
vl.displayDomCache = {};
// Temporary DOM Element
vl.tempDomElement = document.createElement('ul');
// Last repain position
vl.lastRepaintY = null;
// Fragment
vl.fragment = document.createDocumentFragment();
// Filter
vl.filterItems = function (indexes, resetScrollTop) {
vl.filteredItems = [];
var firstIndex = indexes[0];
var lastIndex = indexes[indexes.length - 1];
for (var i = 0; i < indexes.length; i++) {
vl.filteredItems.push(vl.items[indexes[i]]);
}
if (typeof resetScrollTop === 'undefined') resetScrollTop = true;
if (resetScrollTop) {
vl.pageContent[0].scrollTop = 0;
}
vl.update();
};
vl.resetFilter = function () {
if (vl.params.showFilteredItemsOnly) {
vl.filteredItems = [];
}
else {
vl.filteredItems = null;
delete vl.filteredItems;
}
vl.update();
};
var pageHeight, rowsPerScreen, rowsBefore, rowsAfter, rowsToRender, maxBufferHeight = 0, listHeight;
var dynamicHeight = typeof vl.params.height === 'function';
// Set list size
vl.setListSize = function () {
var items = vl.filteredItems || vl.items;
pageHeight = vl.pageContent[0].offsetHeight;
if (dynamicHeight) {
listHeight = 0;
vl.heights = [];
for (var i = 0; i < items.length; i++) {
var itemHeight = vl.params.height(items[i]);
listHeight += itemHeight;
vl.heights.push(itemHeight);
}
}
else {
listHeight = Math.ceil(items.length / vl.params.cols) * vl.params.height;
rowsPerScreen = Math.ceil(pageHeight / vl.params.height);
rowsBefore = vl.params.rowsBefore || rowsPerScreen * 2;
rowsAfter = vl.params.rowsAfter || rowsPerScreen;
rowsToRender = (rowsPerScreen + rowsBefore + rowsAfter);
maxBufferHeight = rowsBefore / 2 * vl.params.height;
}
if (updatableScroll) {
vl.ul.css({height: listHeight + 'px'});
}
};
// Render items
vl.render = function (force, forceScrollTop) {
if (force) vl.lastRepaintY = null;
var scrollTop = -(vl.listBlock[0].getBoundingClientRect().top - vl.pageContent[0].getBoundingClientRect().top);
if (typeof forceScrollTop !== 'undefined') scrollTop = forceScrollTop;
if (vl.lastRepaintY === null || Math.abs(scrollTop - vl.lastRepaintY) > maxBufferHeight || (!updatableScroll && (vl.pageContent[0].scrollTop + pageHeight >= vl.pageContent[0].scrollHeight))) {
vl.lastRepaintY = scrollTop;
}
else {
return;
}
var items = vl.filteredItems || vl.items,
fromIndex, toIndex, heightBeforeFirstItem = 0, heightBeforeLastItem = 0;
if (dynamicHeight) {
var itemTop = 0, j, itemHeight;
maxBufferHeight = pageHeight;
for (j = 0; j < vl.heights.length; j++) {
itemHeight = vl.heights[j];
if (typeof fromIndex === 'undefined') {
if (itemTop + itemHeight >= scrollTop - pageHeight * 2 * vl.params.dynamicHeightBufferSize) fromIndex = j;
else heightBeforeFirstItem += itemHeight;
}
if (typeof toIndex === 'undefined') {
if (itemTop + itemHeight >= scrollTop + pageHeight * 2 * vl.params.dynamicHeightBufferSize || j === vl.heights.length - 1) toIndex = j + 1;
heightBeforeLastItem += itemHeight;
}
itemTop += itemHeight;
}
toIndex = Math.min(toIndex, items.length);
}
else {
fromIndex = (parseInt(scrollTop / vl.params.height) - rowsBefore) * vl.params.cols;
if (fromIndex < 0) {
fromIndex = 0;
}
toIndex = Math.min(fromIndex + rowsToRender * vl.params.cols, items.length);
}
var topPosition;
vl.reachEnd = false;
for (var i = fromIndex; i < toIndex; i++) {
var item, index;
// Define real item index
index = vl.items.indexOf(items[i]);
if (i === fromIndex) vl.currentFromIndex = index;
if (i === toIndex - 1) vl.currentToIndex = index;
if (index === vl.items.length - 1) vl.reachEnd = true;
// Find items
if (vl.domCache[index]) {
item = vl.domCache[index];
}
else {
if (vl.template) {
vl.tempDomElement.innerHTML = vl.template(items[i], {index: index}).trim();
}
else if (vl.params.renderItem) {
vl.tempDomElement.innerHTML = vl.params.renderItem(index, items[i]).trim();
}
else {
vl.tempDomElement.innerHTML = items[i].trim();
}
item = vl.tempDomElement.childNodes[0];
if (vl.params.cache) vl.domCache[index] = item;
}
item.f7VirtualListIndex = index;
// Set item top position
if (i === fromIndex) {
if (dynamicHeight) {
topPosition = heightBeforeFirstItem;
}
else {
topPosition = (i * vl.params.height / vl.params.cols);
}
}
item.style.top = topPosition + 'px';
// Before item insert
if (vl.params.onItemBeforeInsert) vl.params.onItemBeforeInsert(vl, item);
// Append item to fragment
vl.fragment.appendChild(item);
}
// Update list height with not updatable scroll
if (!updatableScroll) {
if (dynamicHeight) {
vl.ul[0].style.height = heightBeforeLastItem + 'px';
}
else {
vl.ul[0].style.height = i * vl.params.height / vl.params.cols + 'px';
}
}
// Update list html
if (vl.params.onBeforeClear) vl.params.onBeforeClear(vl, vl.fragment);
vl.ul[0].innerHTML = '';
if (vl.params.onItemsBeforeInsert) vl.params.onItemsBeforeInsert(vl, vl.fragment);
vl.ul[0].appendChild(vl.fragment);
if (vl.params.onItemsAfterInsert) vl.params.onItemsAfterInsert(vl, vl.fragment);
if (typeof forceScrollTop !== 'undefined' && force) {
vl.pageContent.scrollTop(forceScrollTop, 0);
}
};
vl.scrollToItem = function (index) {
if (index > vl.items.length) return false;
var itemTop = 0, listTop;
if (dynamicHeight) {
for (var i = 0; i < index; i++) {
itemTop += vl.heights[i];
}
}
else {
itemTop = index * vl.params.height;
}
listTop = vl.listBlock[0].offsetTop;
vl.render(true, listTop + itemTop - parseInt(vl.pageContent.css('padding-top'), 10));
return true;
};
// Handle scroll event
vl.handleScroll = function (e) {
vl.render();
};
// Handle resize event
vl._isVisible = function (el) {
return !!( el.offsetWidth || el.offsetHeight || el.getClientRects().length );
};
vl.handleResize = function (e) {
if (vl._isVisible(vl.listBlock[0])) {
vl.setListSize();
vl.render(true);
}
};
vl.attachEvents = function (detach) {
var action = detach ? 'off' : 'on';
vl.pageContent[action]('scroll', vl.handleScroll);
vl.listBlock.parents('.tab').eq(0)[action]('show', vl.handleResize);
$(window)[action]('resize', vl.handleResize);
};
// Init Virtual List
vl.init = function () {
vl.attachEvents();
vl.setListSize();
vl.render();
};
// Append
vl.appendItems = function (items) {
for (var i = 0; i < items.length; i++) {
vl.items.push(items[i]);
}
vl.update();
};
vl.appendItem = function (item) {
vl.appendItems([item]);
};
// Replace
vl.replaceAllItems = function (items) {
vl.items = items;
delete vl.filteredItems;
vl.domCache = {};
vl.update();
};
vl.replaceItem = function (index, item) {
vl.items[index] = item;
if (vl.params.cache) delete vl.domCache[index];
vl.update();
};
// Prepend
vl.prependItems = function (items) {
for (var i = items.length - 1; i >= 0; i--) {
vl.items.unshift(items[i]);
}
if (vl.params.cache) {
var newCache = {};
for (var cached in vl.domCache) {
newCache[parseInt(cached, 10) + items.length] = vl.domCache[cached];
}
vl.domCache = newCache;
}
vl.update();
};
vl.prependItem = function (item) {
vl.prependItems([item]);
};
// Move
vl.moveItem = function (oldIndex, newIndex) {
if (oldIndex === newIndex) return;
// remove item from array
var item = vl.items.splice(oldIndex, 1)[0];
if (newIndex >= vl.items.length) {
// Add item to the end
vl.items.push(item);
newIndex = vl.items.length - 1;
}
else {
// Add item to new index
vl.items.splice(newIndex, 0, item);
}
// Update cache
if (vl.params.cache) {
var newCache = {};
for (var cached in vl.domCache) {
var cachedIndex = parseInt(cached, 10);
var leftIndex = oldIndex < newIndex ? oldIndex : newIndex;
var rightIndex = oldIndex < newIndex ? newIndex : oldIndex;
var indexShift = oldIndex < newIndex ? -1 : 1;
if (cachedIndex < leftIndex || cachedIndex > rightIndex) newCache[cachedIndex] = vl.domCache[cachedIndex];
if (cachedIndex === leftIndex) newCache[rightIndex] = vl.domCache[cachedIndex];
if (cachedIndex > leftIndex && cachedIndex <= rightIndex) newCache[cachedIndex + indexShift] = vl.domCache[cachedIndex];
}
vl.domCache = newCache;
}
vl.update();
};
// Insert before
vl.insertItemBefore = function (index, item) {
if (index === 0) {
vl.prependItem(item);
return;
}
if (index >= vl.items.length) {
vl.appendItem(item);
return;
}
vl.items.splice(index, 0, item);
// Update cache
if (vl.params.cache) {
var newCache = {};
for (var cached in vl.domCache) {
var cachedIndex = parseInt(cached, 10);
if (cachedIndex >= index) {
newCache[cachedIndex + 1] = vl.domCache[cachedIndex];
}
}
vl.domCache = newCache;
}
vl.update();
};
// Delete
vl.deleteItems = function (indexes) {
var prevIndex, indexShift = 0;
for (var i = 0; i < indexes.length; i++) {
var index = indexes[i];
if (typeof prevIndex !== 'undefined') {
if (index > prevIndex) {
indexShift = -i;
}
}
index = index + indexShift;
prevIndex = indexes[i];
// Delete item
var deletedItem = vl.items.splice(index, 1)[0];
// Delete from filtered
if (vl.filteredItems && vl.filteredItems.indexOf(deletedItem) >= 0) {
vl.filteredItems.splice(vl.filteredItems.indexOf(deletedItem), 1);
}
// Update cache
if (vl.params.cache) {
var newCache = {};
for (var cached in vl.domCache) {
var cachedIndex = parseInt(cached, 10);
if (cachedIndex === index) {
delete vl.domCache[index];
}
else if (parseInt(cached, 10) > index) {
newCache[cachedIndex - 1] = vl.domCache[cached];
}
else {
newCache[cachedIndex] = vl.domCache[cached];
}
}
vl.domCache = newCache;
}
}
vl.update();
};
vl.deleteAllItems = function () {
vl.items = [];
delete vl.filteredItems;
if (vl.params.cache) vl.domCache = {};
vl.update();
};
vl.deleteItem = function (index) {
vl.deleteItems([index]);
};
// Clear cache
vl.clearCache = function () {
vl.domCache = {};
};
// Update Virtual List
vl.update = function () {
vl.setListSize();
vl.render(true);
};
// Destroy
vl.destroy = function () {
vl.attachEvents(true);
delete vl.items;
delete vl.domCache;
};
// Init Virtual List
vl.init();
// Store vl in container
vl.listBlock[0].f7VirtualList = vl;
return vl;
};
// App Method
app.virtualList = function (listBlock, params) {
return new VirtualList(listBlock, params);
};
app.reinitVirtualList = function (pageContainer) {
var page = $(pageContainer);
var vlists = page.find('.virtual-list');
if (vlists.length === 0) return;
for (var i = 0; i < vlists.length; i++) {
var vlistInstance = vlists[i].f7VirtualList;
if (vlistInstance) {
vlistInstance.update();
}
}
};

View file

@ -1 +0,0 @@
})();

View file

@ -1 +0,0 @@
(function () {

View file

@ -1,65 +0,0 @@
/*======================================================
************ XHR ************
======================================================*/
// XHR Caching
app.cache = [];
app.removeFromCache = function (url) {
var index = false;
for (var i = 0; i < app.cache.length; i++) {
if (app.cache[i].url === url) index = i;
}
if (index !== false) app.cache.splice(index, 1);
};
// XHR
app.xhr = false;
app.get = function (url, view, ignoreCache, callback) {
// should we ignore get params or not
var _url = url;
if (app.params.cacheIgnoreGetParameters && url.indexOf('?') >= 0) {
_url = url.split('?')[0];
}
if (app.params.cache && !ignoreCache && url.indexOf('nocache') < 0 && app.params.cacheIgnore.indexOf(_url) < 0) {
// Check is the url cached
for (var i = 0; i < app.cache.length; i++) {
if (app.cache[i].url === _url) {
// Check expiration
if ((new Date()).getTime() - app.cache[i].time < app.params.cacheDuration) {
// Load from cache
callback(app.cache[i].content);
return false;
}
}
}
}
app.xhr = $.ajax({
url: url,
method: 'GET',
beforeSend: app.params.onAjaxStart,
complete: function (xhr) {
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) {
if (app.params.cache) {
app.removeFromCache(_url);
app.cache.push({
url: _url,
time: (new Date()).getTime(),
content: xhr.responseText
});
}
callback(xhr.responseText, false);
}
else {
callback(xhr.responseText, true);
}
if (app.params.onAjaxComplete) app.params.onAjaxComplete(xhr);
},
error: function (xhr) {
callback(xhr.responseText, true);
if (app.params.onAjaxError) app.params.onAjaxError(xhr);
}
});
if (view) view.xhr = app.xhr;
return app.xhr;
};

View file

@ -1,28 +0,0 @@
.badge {
font-size: 13px;
display: inline-block;
color: #fff;
background: #8e8e93;
border-radius: 20px;
padding: 0px 6px;
height: 20px;
line-height: 20px;
box-sizing: border-box;
text-align: center;
}
.item-after .badge {
min-width: 20px;
}
.icon .badge {
position: absolute;
left: 100%;
margin-left: -10px;
top: -2px;
font-size: 10px;
line-height: 16px;
height: 16px;
border-radius: 16px;
padding: 0px 4px;
min-width: 16px;
font-family: -apple-system, SF UI Text, Helvetica Neue, Helvetica, Arial, sans-serif;
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,325 +0,0 @@
/* ===
Preloader
By Rudi Theunissen (https://github.com/rtheunissen/md-preloader)
=== */
.preloader {
font-size: 0;
display: inline-block;
width: 32px;
height: 32px;
-webkit-animation: preloader-outer 3300ms linear infinite;
animation: preloader-outer 3300ms linear infinite;
}
.preloader svg {
width: 100%;
height: 100%;
-webkit-animation: preloader-inner 1320ms linear infinite;
animation: preloader-inner 1320ms linear infinite;
}
.preloader svg circle {
fill: none;
stroke: #757575;
stroke-linecap: square;
-webkit-animation: preloader-arc 1320ms cubic-bezier(0.8, 0, 0.4, 0.8) infinite;
animation: preloader-arc 1320ms cubic-bezier(0.8, 0, 0.4, 0.8) infinite;
}
@-webkit-keyframes preloader-outer {
0% {
-webkit-transform: rotate(0);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@keyframes preloader-outer {
0% {
transform: rotate(0);
}
100% {
transform: rotate(360deg);
}
}
@-webkit-keyframes preloader-inner {
0% {
-webkit-transform: rotate(-100.8deg);
}
100% {
-webkit-transform: rotate(0);
}
}
@keyframes preloader-inner {
0% {
transform: rotate(-100.8deg);
}
100% {
transform: rotate(0);
}
}
@-webkit-keyframes preloader-arc {
0% {
stroke-dasharray: 1 210.48670779px;
stroke-dashoffset: 0;
}
40% {
stroke-dasharray: 151.55042961px, 210.48670779px;
stroke-dashoffset: 0;
}
100% {
stroke-dasharray: 1 210.48670779px;
stroke-dashoffset: -151.55042961px;
}
}
@keyframes preloader-arc {
0% {
stroke-dasharray: 1 210.48670779px;
stroke-dashoffset: 0;
}
40% {
stroke-dasharray: 151.55042961px, 210.48670779px;
stroke-dashoffset: 0;
}
100% {
stroke-dasharray: 1 210.48670779px;
stroke-dashoffset: -151.55042961px;
}
}
.preloader-inner {
position: relative;
display: block;
width: 100%;
height: 100%;
-webkit-animation: preloader-inner-rotate 5.25s cubic-bezier(0.35, 0, 0.25, 1) infinite;
animation: preloader-inner-rotate 5.25s cubic-bezier(0.35, 0, 0.25, 1) infinite;
}
.preloader-inner .preloader-inner-gap {
position: absolute;
width: 2px;
left: 50%;
margin-left: -1px;
top: 0;
bottom: 0;
box-sizing: border-box;
border-top: 4px solid #757575;
}
.preloader-inner .preloader-inner-left,
.preloader-inner .preloader-inner-right {
position: absolute;
top: 0;
height: 100%;
width: 50%;
overflow: hidden;
}
.preloader-inner .preloader-inner-half-circle {
position: absolute;
top: 0;
height: 100%;
width: 200%;
box-sizing: border-box;
border: 4px solid #757575;
border-bottom-color: transparent !important;
border-radius: 50%;
-webkit-animation-iteration-count: infinite;
-webkit-animation-duration: 1.3125s;
-webkit-animation-timing-function: cubic-bezier(0.35, 0, 0.25, 1);
animation-iteration-count: infinite;
animation-duration: 1.3125s;
animation-timing-function: cubic-bezier(0.35, 0, 0.25, 1);
}
.preloader-white .preloader-inner .preloader-inner-gap,
.preloader-white .preloader-inner .preloader-inner-half-circle {
border-color: #fff;
}
.preloader-inner .preloader-inner-left {
left: 0;
}
.preloader-inner .preloader-inner-left .preloader-inner-half-circle {
left: 0;
border-right-color: transparent !important;
-webkit-animation-name: preloader-left-rotate;
animation-name: preloader-left-rotate;
}
.preloader-inner .preloader-inner-right {
right: 0;
}
.preloader-inner .preloader-inner-right .preloader-inner-half-circle {
right: 0;
border-left-color: transparent !important;
-webkit-animation-name: preloader-right-rotate;
animation-name: preloader-right-rotate;
}
.color-multi .preloader-inner .preloader-inner-left .preloader-inner-half-circle {
-webkit-animation-name: preloader-left-rotate-multicolor;
animation-name: preloader-left-rotate-multicolor;
}
.color-multi .preloader-inner .preloader-inner-right .preloader-inner-half-circle {
-webkit-animation-name: preloader-right-rotate-multicolor;
animation-name: preloader-right-rotate-multicolor;
}
@-webkit-keyframes preloader-left-rotate {
0%,
100% {
-webkit-transform: rotate(130deg);
}
50% {
-webkit-transform: rotate(-5deg);
}
}
@keyframes preloader-left-rotate {
0%,
100% {
transform: rotate(130deg);
}
50% {
transform: rotate(-5deg);
}
}
@-webkit-keyframes preloader-right-rotate {
0%,
100% {
-webkit-transform: rotate(-130deg);
}
50% {
-webkit-transform: rotate(5deg);
}
}
@keyframes preloader-right-rotate {
0%,
100% {
transform: rotate(-130deg);
}
50% {
transform: rotate(5deg);
}
}
@-webkit-keyframes preloader-inner-rotate {
12.5% {
-webkit-transform: rotate(135deg);
}
25% {
-webkit-transform: rotate(270deg);
}
37.5% {
-webkit-transform: rotate(405deg);
}
50% {
-webkit-transform: rotate(540deg);
}
62.5% {
-webkit-transform: rotate(675deg);
}
75% {
-webkit-transform: rotate(810deg);
}
87.5% {
-webkit-transform: rotate(945deg);
}
100% {
-webkit-transform: rotate(1080deg);
}
}
@keyframes preloader-inner-rotate {
12.5% {
transform: rotate(135deg);
}
25% {
transform: rotate(270deg);
}
37.5% {
transform: rotate(405deg);
}
50% {
transform: rotate(540deg);
}
62.5% {
transform: rotate(675deg);
}
75% {
transform: rotate(810deg);
}
87.5% {
transform: rotate(945deg);
}
100% {
transform: rotate(1080deg);
}
}
@-webkit-keyframes preloader-left-rotate-multicolor {
0%,
100% {
border-left-color: #4285F4;
-webkit-transform: rotate(130deg);
}
75% {
border-left-color: #1B9A59;
border-top-color: #1B9A59;
}
50% {
border-left-color: #F7C223;
border-top-color: #F7C223;
-webkit-transform: rotate(-5deg);
}
25% {
border-left-color: #DE3E35;
border-top-color: #DE3E35;
}
}
@keyframes preloader-left-rotate-multicolor {
0%,
100% {
border-left-color: #4285F4;
transform: rotate(130deg);
}
75% {
border-left-color: #1B9A59;
border-top-color: #1B9A59;
}
50% {
border-left-color: #F7C223;
border-top-color: #F7C223;
transform: rotate(-5deg);
}
25% {
border-left-color: #DE3E35;
border-top-color: #DE3E35;
}
}
@-webkit-keyframes preloader-right-rotate-multicolor {
0%,
100% {
border-right-color: #4285F4;
-webkit-transform: rotate(-130deg);
}
75% {
border-right-color: #1B9A59;
border-top-color: #1B9A59;
}
50% {
border-right-color: #F7C223;
border-top-color: #F7C223;
-webkit-transform: rotate(5deg);
}
25% {
border-top-color: #DE3E35;
border-right-color: #DE3E35;
}
}
@keyframes preloader-right-rotate-multicolor {
0%,
100% {
border-right-color: #4285F4;
transform: rotate(-130deg);
}
75% {
border-right-color: #1B9A59;
border-top-color: #1B9A59;
}
50% {
border-right-color: #F7C223;
border-top-color: #F7C223;
transform: rotate(5deg);
}
25% {
border-top-color: #DE3E35;
border-right-color: #DE3E35;
}
}

View file

@ -1,12 +0,0 @@
@blue:#007aff;
@red: #ff3b30;
@white: #ffffff;
@black: #000000;
@lightblue: #5ac8fa;
@yellow: #ffcc00;
@orange: #ff9500;
@pink: #ff2d55;
@green: #4cd964;
@gray: #8e8e93;
@themeColor: @blue;

View file

@ -1,302 +0,0 @@
.transition(@d) {
-webkit-transition-duration: @d;
transition-duration: @d;
}
.delay(@d) {
-webkit-transition-delay: @d;
transition-delay: @d;
}
.transform(@t) {
-webkit-transform: @t;
transform: @t;
}
.transform-origin(@to) {
-webkit-transform-origin: @to;
transform-origin: @to;
}
.translate3d(@x:0, @y:0, @z:0) {
-webkit-transform: translate3d(@x,@y,@z);
transform: translate3d(@x,@y,@z);
}
.animation(@a) {
-webkit-animation: @a;
animation: @a;
}
.scrollable(){
overflow: auto;
-webkit-overflow-scrolling: touch;
}
.flexbox() {
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
}
.flexbox-inline() {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: -webkit-inline-flex;
display: inline-flex;
}
.flex-wrap(@fw) when (@fw = nowrap) {
-webkit-box-lines: single;
-moz-box-lines: single;
-webkit-flex-wrap: nowrap;
-ms-flex-wrap: none;
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.flex-wrap(@fw) when (@fw = wrap) {
-webkit-box-lines: multiple;
-moz-box-lines: multiple;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.flex-wrap(@fw) when not (@fw = wrap) and not (@fw = nowrap) {
-webkit-flex-wrap: @fw;
-ms-flex-wrap: @fw;
flex-wrap: @fw;
}
.flex-shrink(@fs) {
-webkit-flex-shrink: @fs;
-ms-flex: 0 @fs auto;
flex-shrink: @fs;
}
.justify-content(@jc) when (@jc = flex-start) {
-webkit-box-pack: start;
-ms-flex-pack: start;
-webkit-justify-content: flex-start;
justify-content: flex-start;
}
.justify-content(@jc) when (@jc = flex-end) {
-webkit-box-pack: end;
-ms-flex-pack: end;
-webkit-justify-content: flex-end;
justify-content: flex-end;
}
.justify-content(@jc) when (@jc = space-between) {
-webkit-box-pack: justify;
-ms-flex-pack: justify;
-webkit-justify-content: space-between;
justify-content: space-between;
}
.justify-content(@jc) when not (@jc = flex-start) and not (@jc = flex-end) and not (@jc = space-between) {
-webkit-box-pack: @jc;
-ms-flex-pack: @jc;
-webkit-justify-content: @jc;
justify-content: @jc;
}
.align-items(@ai) when (@ai = flex-start) {
-webkit-box-align: start;
-ms-flex-align: start;
-webkit-align-items: flex-start;
align-items: flex-start;
}
.align-items(@ai) when (@ai = flex-end) {
-webkit-box-align: end;
-ms-flex-align: end;
-webkit-align-items: flex-end;
align-items: flex-end;
}
.align-items(@ai) when not (@ai = flex-start) and not (@ai = flex-end) {
-webkit-box-align: @ai;
-ms-flex-align: @ai;
-webkit-align-items: @ai;
align-items: @ai;
}
.align-content(@ai) {
-ms-flex-line-pack: @ai;
-webkit-align-content: @ai;
align-content: @ai;
}
.align-self(@as) {
-ms-flex-item-align: @as;
-webkit-align-self: @as;
align-self: @as;
}
.clearfix() {
&:before,
&:after {
content: " ";
display: table;
}
&:after {
clear: both;
}
}
.hairline(@position, @color) when (@position = top) {
&:before {
content: '';
position: absolute;
left: 0;
top: 0;
bottom: auto;
right: auto;
height: 1px;
width: 100%;
background-color: @color;
display: block;
z-index: 15;
.transform-origin(50% 0%);
html.pixel-ratio-2 & {
.transform(scaleY(0.5));
}
html.pixel-ratio-3 & {
.transform(scaleY(0.33));
}
}
}
.hairline(@position, @color) when (@position = left) {
&:before {
content: '';
position: absolute;
left: 0;
top: 0;
bottom: auto;
right: auto;
width: 1px;
height: 100%;
background-color: @color;
display: block;
z-index: 15;
.transform-origin(0% 50%);
html.pixel-ratio-2 & {
.transform(scaleX(0.5));
}
html.pixel-ratio-3 & {
.transform(scaleX(0.33));
}
}
}
.hairline(@position, @color) when (@position = bottom) {
&:after {
content: '';
position: absolute;
left: 0;
bottom: 0;
right: auto;
top: auto;
height: 1px;
width: 100%;
background-color: @color;
display: block;
z-index: 15;
.transform-origin(50% 100%);
html.pixel-ratio-2 & {
.transform(scaleY(0.5));
}
html.pixel-ratio-3 & {
.transform(scaleY(0.33));
}
}
}
.hairline(@position, @color) when (@position = right) {
&:after {
content: '';
position: absolute;
right: 0;
top: 0;
left: auto;
bottom: auto;
width: 1px;
height: 100%;
background-color: @color;
display: block;
z-index: 15;
.transform-origin(100% 50%);
html.pixel-ratio-2 & {
.transform(scaleX(0.5));
}
html.pixel-ratio-3 & {
.transform(scaleX(0.33));
}
}
}
// For right and bottom
.hairline-remove(@position) when not (@position = left) and not (@position = top) {
&:after {
display: none;
}
}
// For left and top
.hairline-remove(@position) when not (@position = right) and not (@position = bottom) {
&:before {
display: none;
}
}
// For right and bottom
.hairline-color(@position, @color) when not (@position = left) and not (@position = top) {
&:after {
background-color: @color;
}
}
// For left and top
.hairline-color(@position, @color) when not (@position = right) and not (@position = bottom) {
&:before {
background-color: @color;
}
}
// Encoded SVG Background
.encoded-svg-background(@svg) {
@url: `encodeURIComponent(@{svg})`;
background-image: url("data:image/svg+xml;charset=utf-8,@{url}");
}
// Backdrop Blur
.backdrop-blur(@blur) {
-webkit-backdrop-filter: blur(@blur);
backdrop-filter: blur(@blur);
}
// Preserve3D
.preserve3d() {
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
transform-style: preserve-3d;
}
// No Scrollbar
.no-scrollbar() {
&::-webkit-scrollbar {
display: none !important;
width: 0 !important;
height: 0 !important;
-webkit-appearance: none;
opacity: 0 !important;
}
}
// Bars Input
.bars-input() {
box-sizing: border-box;
width: 100%;
height: 28px;
display: block;
border: none;
-webkit-appearance: none;
-moz-appearance: none;
-ms-appearance: none;
appearance: none;
border-radius: 5px;
font-family: inherit;
color:#000;
font-size: 14px;
font-weight: normal;
padding: 0 8px;
background-color: #fff;
}
.no-hairlines() {
&.no-hairlines, &.no-hairlines ul, &.no-hairlines .content-block-inner {
.hairline-remove(top);
.hairline-remove(bottom);
}
}
.no-hairlines-between() {
&.no-hairlines-between {
.item-inner, .list-button, .item-divider, .list-group-title, .list-group-title {
.hairline-remove(bottom);
}
}
}

View file

@ -1,72 +0,0 @@
/* === Accordion === */
.list-block {
.accordion-item-toggle {
cursor: pointer;
.transition(300ms);
.item-inner {
padding-right: 35px;
background: no-repeat -webkit-calc(~"100% - 15px") center;
background: no-repeat calc(~"100% - 15px") center;
.encoded-svg-background("<svg viewBox='0 0 60 120' xmlns='http://www.w3.org/2000/svg'><path d='m60 61.5-38.25 38.25-9.75-9.75 29.25-28.5-29.25-28.5 9.75-9.75z' fill='#c7c7cc'/></svg>");
background-size: 10px 20px;
}
html:not(.watch-active-state) &:active, &.active-state {
.transition(0ms);
background-color: #d9d9d9;
> .item-inner {
.hairline-color(bottom, transparent);
}
}
}
.accordion-item-toggle, .accordion-item > .item-link {
.item-inner {
.transition(300ms);
&:after {
.transition(300ms);
}
-webkit-transition-property: background-color;
transition-property: background-color;
}
}
&:not(.media-list) .accordion-item-expanded:not(.media-item) .accordion-item-toggle .item-inner,
&:not(.media-list) .accordion-item-expanded:not(.media-item) > .item-link .item-inner,
&.media-list .accordion-item-expanded .accordion-item-toggle .item-title-row,
&.media-list .accordion-item-expanded > .item-link .item-title-row,
.accordion-item-expanded.media-item .accordion-item-toggle .item-title-row,
.accordion-item-expanded.media-item > .item-link .item-title-row,
{
.encoded-svg-background("<svg viewBox='0 0 60 120' xmlns='http://www.w3.org/2000/svg'><path d='m60 61.5-38.25 38.25-9.75-9.75 29.25-28.5-29.25-28.5 9.75-9.75z' transform='translate(115, 30) rotate(90)' fill='#c7c7cc'/></svg>");
background-size: 20px 20px;
}
.accordion-item-expanded {
.accordion-item-toggle .item-inner, > .item-link .item-inner {
.hairline-color(bottom, transparent);
}
}
.accordion-item {
.content-block, .list-block {
margin-top: 0;
margin-bottom: 0;
}
ul {
padding-left: 0;
}
}
}
.accordion-item-content {
position: relative;
overflow: hidden;
height: 0;
font-size: 14px;
.transition(300ms);
.transform(translate3d(0,0,0));
.accordion-item-expanded > &{
height: auto;
}
html.android-4 & {
.transform(none);
}
}

View file

@ -1,80 +0,0 @@
/* === Autocomplete === */
.autocomplete-page {
.autocomplete-found {
display: block;
}
.autocomplete-not-found {
display: none;
}
.autocomplete-values {
display: block;
}
.list-block ul:empty {
display: none;
}
}
.autocomplete-preloader:not(.autocomplete-preloader-visible) {
-webkit-animation: none;
animation: none;
visibility: hidden;
}
.autocomplete-dropdown {
background: #fff;
box-sizing: border-box;
position: absolute;
z-index: 500;
box-shadow: 0px 3px 3px rgba(0,0,0,0.2);
width: 100%;
left: 0;
.autocomplete-dropdown-inner {
position: relative;
overflow: auto;
-webkit-overflow-scrolling: touch;
height: 100%;
z-index: 1;
}
.autocomplete-preloader {
display: none;
position: absolute;
right: 15px;
bottom: 100%;
margin-bottom: 12px;
width: 20px;
height: 20px;
}
.autocomplete-preloader-visible {
display: block;
}
.autocomplete-dropdown-placeholder {
color: #a9a9a9;
}
.list-block {
margin: 0;
ul {
.hairline-remove(top);
.hairline-remove(bottom);
background: none !important;
}
b {
font-weight: 500;
html.ios-gt-8 & {
font-weight: 600;
}
}
}
}
.list-block {
.item-content-dropdown-expand {
.item-title.label {
width: 0;
.flex-shrink(10);
+ .item-input {
margin-left: 0;
}
}
.item-input {
width: 100%;
}
}
}

View file

@ -1,28 +0,0 @@
.badge {
font-size: 13px;
display: inline-block;
color:#fff;
background: #8e8e93;
border-radius: 20px;
padding: 0px 6px;
height: 20px;
line-height: 20px;
box-sizing: border-box;
text-align: center;
.item-after & {
min-width: 20px;
}
.icon & {
position: absolute;
left: 100%;
margin-left: -10px;
top: -2px;
font-size: 10px;
line-height: 16px;
height: 16px;
border-radius: 16px;
padding: 0px 4px;
min-width: 16px;
font-family: -apple-system, SF UI Text, Helvetica Neue, Helvetica, Arial, sans-serif;
}
}

View file

@ -1,188 +0,0 @@
/* === Calendar === */
.picker-calendar {
background: #fff;
height: 320px;
width: 100%;
overflow: hidden;
@media (orientation: landscape) and (max-height: 415px) {
&:not(.picker-modal-inline) {
height: 220px;
}
}
.picker-modal-inner {
overflow: hidden;
}
.popover-picker-calendar & {
height: 320px;
}
}
.popover.popover-picker-calendar {
width: 320px;
}
.picker-calendar-week-days {
height: 18px;
background: #f7f7f8;
.flexbox();
.hairline(bottom, #c4c4c4);
font-size: 11px;
box-sizing: border-box;
position: relative;
.picker-calendar-week-day {
.flex-shrink(1);
width: 100% / 7;
width: ~"-webkit-calc(100% / 7)";
width: ~"-moz-calc(100% / 7)";
width: ~"calc(100% / 7)";
line-height: 17px;
text-align: center;
}
+ .picker-calendar-months {
height: ~"-webkit-calc(100% - 18px)";
height: ~"-moz-calc(100% - 18px)";
height: ~"calc(100% - 18px)";
}
}
.picker-calendar-months {
width: 100%;
height: 100%;
overflow: hidden;
position: relative;
}
.picker-calendar-months-wrapper {
position: relative;
width: 100%;
height: 100%;
.transition(300ms);
}
.picker-calendar-month {
.flexbox();
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
-ms-flex-direction: column;
-webkit-flex-direction: column;
flex-direction: column;
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
}
.picker-calendar-row {
height: 100% / 6;
height: ~"-webkit-calc(100% / 6)";
height: ~"-moz-calc(100% / 6)";
height: ~"calc(100% / 6)";
.flexbox();
.flex-shrink(1);
width: 100%;
position: relative;
.hairline(bottom, #ccc);
&:last-child {
.hairline-remove(bottom);
}
}
.picker-calendar-day {
.flex-shrink(1);
.flexbox();
.justify-content(center);
.align-items(center);
box-sizing: border-box;
width: 100% / 7;
width: ~"-webkit-calc(100% / 7)";
width: ~"-moz-calc(100% / 7)";
width: ~"calc(100% / 7)";
text-align: center;
color:#000;
font-size: 15px;
cursor: pointer;
z-index: 20;
height: 100%;
&.picker-calendar-day-weekend {
}
&.picker-calendar-day-prev, &.picker-calendar-day-next {
color: #b8b8b8;
}
.picker-calendar-month-prev &, .picker-calendar-month-next & {
}
&.picker-calendar-day-disabled {
color: #d4d4d4;
cursor: auto;
}
&.picker-calendar-day-today span {
background: #e3e3e3;
}
&.picker-calendar-day-selected span {
background: @themeColor;
color:#fff;
}
&.picker-calendar-day-has-events span {
&:after {
content: '';
width: 4px;
height: 4px;
border-radius: 50%;
background: #ccc;
position: absolute;
margin-left: -2px;
left: 50%;
bottom: 1px;
}
}
&.picker-calendar-day-has-events.picker-calendar-day-selected span:after {
display: none;
}
span {
display: inline-block;
border-radius: 100%;
width: 30px;
height: 30px;
line-height: 30px;
position: relative;
}
.picker-calendar-range &.picker-calendar-day-selected {
.align-items(stretch);
.align-content(stretch);
span {
width: 100%;
border-radius: 0;
height: auto;
text-align: center;
.flexbox();
.align-items(center);
.justify-content(center);
}
}
}
.picker-calendar-month-picker, .picker-calendar-year-picker {
.flexbox();
.align-items(center);
.justify-content(space-between);
width: 50%;
max-width: 200px;
.flex-shrink(10);
a.icon-only {
min-width: 36px;
}
span {
.flex-shrink(1);
position: relative;
overflow: hidden;
text-overflow: ellipsis;
}
}
// Inline and popover borders
.popover .picker-calendar, .picker-calendar.picker-modal-inline {
.picker-calendar-week-days {
background: none;
}
.toolbar, .picker-calendar-week-days {
.hairline-remove(top);
.hairline-remove(bottom);
}
.toolbar ~ .picker-modal-inner .picker-calendar-months, .picker-calendar-week-days ~ .picker-calendar-months {
.hairline(top, #c4c4c4);
}
}

View file

@ -1,102 +0,0 @@
/* === Cards === */
.cards-list, .card .list-block {
ul {
background: none;
}
> ul {
.hairline-remove(top);
.hairline-remove(bottom);
}
}
.card {
background: #fff;
box-shadow: 0px 1px 2px rgba(0,0,0,0.3);
margin: 10px;
position: relative;
border-radius: 2px;
font-size: 14px;
.list-block, .content-block {
margin: 0;
}
.row:not(.no-gutter) .col > & {
margin-left: 0;
margin-right: 0;
}
}
.card-content {
position: relative;
}
.card-content-inner {
padding: 15px;
position: relative;
> p:first-child {
margin-top: 0;
}
> p:last-child {
margin-bottom: 0;
}
> .list-block, >.content-block {
margin: -15px;
}
}
.card-header, .card-footer {
min-height: 44px;
position: relative;
padding: 10px 15px;
box-sizing: border-box;
.flexbox();
.justify-content(space-between);
.align-items(center);
&[valign="top"] {
.align-items(flex-start);
}
&[valign="bottom"] {
.align-items(flex-end);
}
a.link {
line-height: 44px;
height: 44px;
text-decoration: none;
position: relative;
margin-top: -10px;
margin-bottom: -10px;
.flexbox();
.justify-content(flex-start);
.align-items(center);
.transition(300ms);
html:not(.watch-active-state) &:active, &.active-state {
opacity: 0.3;
.transition(0ms);
}
i+span, i+i, span+i, span+span {
margin-left: 7px;
}
i.icon {
display: block;
}
}
a.icon-only {
min-width: 44px;
.flexbox();
.justify-content(center);
.align-items(center);
margin: 0;
}
}
.card-header {
border-radius: 2px 2px 0 0;
font-size: 17px;
.hairline(bottom, #e1e1e1);
&.no-border {
.hairline-remove(bottom);
}
}
.card-footer {
border-radius: 0 0 2px 2px;
color:#6d6d72;
.hairline(top, #e1e1e1);
&.no-border {
.hairline-remove(top);
}
}

View file

@ -1,74 +0,0 @@
/* === Chips === */
@chipSize: 23px;
.chip {
font-size: 14px;
font-weight: normal;
color: #fff;
background: rgba(0,0,0,0.37);
display: inline-block;
height: @chipSize;
line-height: @chipSize;
border-radius: 5px;
padding: 0 6px;
box-sizing: border-box;
vertical-align: middle;
.flexbox-inline();
.align-items(center);
margin: 2px 0;
}
.chip-media {
width: 16px;
height: 16px;
vertical-align: middle;
border-radius: 50%;
text-align: center;
line-height: 16px;
color: #fff;
font-size: 12px;
box-sizing: border-box;
.flex-shrink(0);
.flexbox();
.align-items(center);
.justify-content(center);
img {
max-width: 100%;
max-height: 100%;
width: auto;
height: auto;
border-radius: 50%;
display: block;
}
+ .chip-label {
margin-left: 4px;
}
i.icon {
font-size: 16px;
height: 16px;
}
}
.chip-label {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
position: relative;
.flex-shrink(1);
min-width: 0;
}
.chip-delete {
margin-right: -6px;
width: @chipSize;
height: @chipSize;
text-align: center;
line-height: @chipSize;
cursor: pointer;
.flex-shrink(0);
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 28 28'><circle cx='14' cy='14' r='14' fill='#fff'/><line stroke='#000' stroke-width='2' stroke-miterlimit='10' x1='8' y1='8' x2='20' y2='20'/><line fill='none' stroke='#000' stroke-width='2' stroke-miterlimit='10' x1='20' y1='8' x2='8' y2='20'/></svg>");
background-repeat: no-repeat;
background-position: center;
-webkit-background-size: 13px 13px;
background-size: 13px 13px;
opacity: 0.7;
html:not(.watch-active-state) &:active, &.active-state {
opacity: 1;
}
}

View file

@ -1,24 +0,0 @@
/* === Contacts === */
.contacts-content {
background: #fff;
}
.contacts-block {
margin: 0;
.list-group-title {
padding: 0 15px;
background: #f7f7f7;
color:#000;
font-weight: 500;
line-height: 22px;
height: 22px;
html.ios-gt-8 & {
font-weight: 600;
}
}
.list-group:first-child ul {
.hairline-remove(top);
}
.list-group:last-child ul {
.hairline-remove(bottom);
}
}

View file

@ -1,59 +0,0 @@
/* === Content Block === */
@contentBlockBorderColor: #c8c7cc;
@contentBlockColor: #6d6d72;
@contentBlockTitle: @contentBlockColor;
.content-block {
margin: 35px 0;
padding: 0 15px;
color: @contentBlockTitle;
box-sizing: border-box;
.no-hairlines();
}
.content-block-title {
position: relative;
overflow: hidden;
margin: 0;
white-space: nowrap;
text-overflow: ellipsis;
font-size: 14px;
text-transform: uppercase;
line-height: 1;
color: @contentBlockColor;
margin: 35px 15px 10px;
+ .list-block, + .content-block, +.card {
margin-top: 10px;
}
}
.content-block-inner {
background: #fff;
padding: 10px 15px;
margin-left: -15px;
width: 100%;
position: relative;
.hairline(top, @contentBlockBorderColor);
.hairline(bottom, @contentBlockBorderColor);
color: #000;
}
.content-block.inset {
margin-left: 15px;
margin-right: 15px;
border-radius: 7px;
.content-block-inner {
.hairline-remove(top);
.hairline-remove(bottom);
border-radius: 7px;
}
}
@media all and (min-width:768px) {
.content-block.tablet-inset {
margin-left: 15px;
margin-right: 15px;
border-radius: 7px
}
.content-block.tablet-inset .content-block-inner {
.hairline-remove(top);
.hairline-remove(bottom);
border-radius: 7px;
}
}

View file

@ -1,8 +0,0 @@
/* === Disabled elements === */
.disabled, [disabled] {
opacity: 0.55;
pointer-events: none;
.disabled &, [disabled] & {
opacity: 1;
}
}

View file

@ -1,172 +0,0 @@
/* === Floating Action Button === */
.floating-button {
position: absolute;
right: 15px;
bottom: 15px;
width: 50px;
height: 50px;
border-radius: 50%;
z-index: 1500;
background-color: @themeColor;
color:#fff;
overflow: hidden;
.transition(300ms);
.flexbox();
.align-items(center);
.justify-content(center);
html:not(.watch-active-state) &:active, &.active-state {
.transition(0ms);
background: darken(@themeColor, 8%);
}
.toolbar-fixed &, .toolbar-through &{
bottom: 15px + 44px;
}
.tabbar-labels-fixed &, .tabbar-labels-through &{
bottom: 15px + 50px;
@media (min-width: 768px) {
bottom: 15px + 56px;
}
}
}
.floating-button-toolbar, .speed-dial {
position: absolute;
right: 15px;
bottom: 15px;
z-index: 1500;
.toolbar-fixed &, .toolbar-through &{
bottom: 15px + 44px;
}
.tabbar-labels-fixed &, .tabbar-labels-through &{
bottom: 15px + 50px;
@media (min-width: 768px) {
bottom: 15px + 56px;
}
}
.floating-button {
right: 0;
bottom: 0;
position: relative;
}
}
// Speed Dial
.speed-dial {
.floating-button {
i {
position: absolute;
left: 50%;
top: 50%;
.transform(translate3d(-50%, -50%, 0) rotate(0deg) scale(1));
.transition(300ms);
}
i + i {
.transform(translate3d(-50%, -50%, 0) rotate(-90deg) scale(0.5));
opacity: 0;
}
}
&.speed-dial-opened {
.floating-button {
i {
.transform(translate3d(-50%, -50%, 0) rotate(90deg) scale(0.5));
opacity: 0;
}
i + i {
.transform(translate3d(-50%, -50%, 0) rotate(0deg) scale(1));
opacity: 1;
}
}
}
}
.speed-dial-buttons {
position: absolute;
width: 40px;
left: 50%;
margin-left: -20px;
bottom: 100%;
margin-bottom: 16px;
.flexbox();
-webkit-box-orient: vertical;
-webkit-box-direction: reverse;
-moz-box-orient: vertical;
-moz-box-direction: reverse;
-ms-flex-direction: column-reverse;
-webkit-flex-direction: column-reverse;
flex-direction: column-reverse;
visibility: hidden;
pointer-events: none;
a {
width: 40px;
height: 40px;
opacity: 0;
color: #fff;
border-radius: 50%;
position: relative;
z-index: 1;
overflow: hidden;
background-color: @themeColor;
.transition(300ms);
.flexbox();
.align-items(center);
.justify-content(center);
.transform(translate3d(0, 8px, 0) scale(0.3));
.transform-origin(center bottom);
+ a {
margin-bottom: 16px;
}
html:not(.watch-active-state) &:active, &.active-state {
.transition(0ms);
background: darken(@themeColor, 8%);
}
}
.speed-dial-opened & {
visibility: visible;
pointer-events: auto;
a {
opacity: 1;
.transform(translate3d(0, 0, 0) scaleY(1));
// .depth(3);
&:nth-child(2) {
.delay(50ms);
}
&:nth-child(3) {
.delay(100ms);
}
&:nth-child(4) {
.delay(150ms);
}
&:nth-child(5) {
.delay(200ms);
}
&:nth-child(6) {
.delay(250ms);
}
}
}
}
// Popove Morph
.floating-button-to-popover {
&.floating-button-to-popover {
.transition(300ms);
}
&.floating-button-to-popover-in {
.transition(100ms);
i {
opacity: 0;
.transition(100ms);
}
}
&.floating-button-to-popover-scale {
border-radius: 0;
.transition(300ms);
box-shadow: none;
}
&.floating-button-to-popover-out {
.delay(0ms);
.transition(300ms);
i {
opacity: 1;
.transition(100ms);
.delay(200ms);
}
}
}

View file

@ -1,446 +0,0 @@
/* === Forms === */
// Inputs
.list-block {
input[type="text"], input[type="password"], input[type="search"], input[type="email"], input[type="tel"], input[type="url"], input[type="date"], input[type="datetime-local"], input[type="time"], input[type="number"], select, textarea {
-webkit-appearance: none;
-moz-appearance: none;
-ms-appearance: none;
appearance: none;
box-sizing: border-box;
border: none;
background: none;
border-radius: 0 0 0 0;
box-shadow: none;
display: block;
padding: 0px;
margin: 0;
width: 100%;
height: 43px;
color: #000;
font-size: 17px;
font-family: inherit;
}
.item-title.label {
vertical-align: top;
+ .item-input {
margin-left: 5px;
}
}
input[type="date"], input[type="datetime-local"] {
line-height: 44px;
}
select {
-webkit-appearance: none;
-moz-appearance: none;
-ms-appearance: none;
appearance: none;
}
textarea {
height: 100px;
resize:none;
line-height: 1.4;
padding-top: 8px;
padding-bottom: 7px;
&.resizable {
height: 43px;
}
}
.item-input {
width: 100%;
margin-top: -8px;
margin-bottom: -7px;
-webkit-box-flex:1;
-ms-flex:1;
.flex-shrink(1);
}
.item-title.label {
width: 35%;
.flex-shrink(0);
}
}
//Switch
.label-switch {
display: inline-block;
vertical-align: middle;
width: 52px;
border-radius: 16px;
box-sizing: border-box;
height: 32px;
position: relative;
cursor: pointer;
.align-self(center);
.checkbox {
width: 52px;
border-radius: 16px;
box-sizing: border-box;
height: 32px;
background: #e5e5e5;
z-index: 0;
margin: 0;
padding: 0;
-webkit-appearance: none;
-moz-appearance: none;
-ms-appearance: none;
appearance: none;
border:none;
cursor: pointer;
position: relative;
.transition(300ms);
&:before {
content:' ';
position: absolute;
left: 2px;
top: 2px;
width: 48px;
border-radius: 16px;
box-sizing: border-box;
height: 28px;
background: #fff;
z-index: 1;
.transition(300ms);
.transform(scale(1));
}
&:after {
content:' ';
height: 28px;
width: 28px;
border-radius: 28px;
background: #fff;
position: absolute;
z-index: 2;
top: 2px;
left: 2px;
box-shadow: 0 2px 5px rgba(0,0,0,0.4);
.transform(translateX(0px));
.transition(300ms);
}
}
input[type="checkbox"] {
display: none;
&:checked {
&+ .checkbox {
background: #4cd964;
&:before {
.transform(scale(0));
}
&:after {
.transform(translateX(20px));
}
}
}
}
}
html.android {
.label-switch input[type="checkbox"] {
&+ .checkbox {
.transition(0);
&:after, &:before {
.transition(0);
}
}
}
}
//Buttons
.button {
border: 1px solid @themeColor;
color: @themeColor;
text-decoration: none;
text-align: center;
display: block;
border-radius: 5px;
line-height: 27px;
box-sizing: border-box;
-webkit-appearance: none;
-moz-appearance: none;
-ms-appearance: none;
appearance: none;
background: none;
padding: 0 10px;
margin: 0;
height: 29px;
white-space: nowrap;
position: relative;
overflow: hidden;
text-overflow:ellipsis;
font-size: 14px;
font-family: inherit;
cursor: pointer;
outline: 0;
input[type="submit"]&, input[type="button"]&{
width: 100%;
}
html:not(.watch-active-state) &:active, &.active-state {
background: rgba(red(@themeColor), green(@themeColor), blue(@themeColor), .15);
}
&.button-round {
border-radius: 27px;
}
&.active {
background: @themeColor;
color: #fff;
}
&.button-big {
font-size: 17px;
height: 44px;
line-height: 42px;
}
&.button-fill {
color:#fff;
background: @themeColor;
border-color: transparent;
html:not(.watch-active-state) &:active, &.active-state {
opacity: 0.8;
}
}
i.icon {
&:first-child {
margin-right: 10px;
}
&:last-child {
margin-left: 10px;
}
&:first-child:last-child {
margin-left: 0;
margin-right: 0;
}
}
}
.buttons-row {
.align-self(center);
.flexbox();
.flex-wrap(nowrap);
.button {
border-radius: 0 0 0 0;
border-left-width: 0;
width: 100%;
-webkit-box-flex:1;
-ms-flex:1;
}
.button:first-child {
border-radius: 5px 0 0 5px;
border-left-width: 1px;
border-left-style: solid;
}
.button:last-child {
border-radius: 0 5px 5px 0;
}
.button:first-child:last-child {
border-radius: 5px;
}
.button.button-round:first-child {
border-radius: 27px 0 0 27px;
}
.button.button-round:last-child {
border-radius: 0 27px 27px 0;
}
}
// Slider
.range-slider {
width: 100%;
position: relative;
overflow: hidden;
padding-left: 3px;
padding-right: 3px;
margin-left: -1px;
.align-self(center);
input[type="range"] {
position: relative;
height: 28px;
width: 100%;
margin: 4px 0 5px 0;
-webkit-appearance: none;
-moz-appearance: none;
-ms-appearance: none;
appearance: none;
background: -webkit-gradient(linear, 50% 0, 50% 100%, color-stop(0, #b7b8b7), color-stop(100%, #b7b8b7));
background: linear-gradient(to right, #b7b8b7 0, #b7b8b7 100%);
background-position: center;
background-size: 100% 2px;
background-repeat: no-repeat;
outline: 0;
border: none;
box-sizing: content-box;
-ms-background-position-y: 500px;
&:focus, &:active {
border: 0;
outline: 0;
}
}
// Range thumb mixin
.range-thumb() {
height: 28px;
width: 28px;
border-radius: 28px;
background: #fff;
z-index: 10;
box-shadow: 0 2px 4px rgba(0,0,0,0.4);
border: 0;
outline: 0;
position: absolute;
box-sizing: border-box;
content: ' ';
}
// ======= WebKit/Blink ========
// Before Track
input[type="range"]:after {
height: 2px;
background: #fff;
content:' ';
width: 5px;
top: 50%;
margin-top: -1px;
left: -5px;
z-index: 1;
position: absolute;
}
// Thumb
input[type="range"]::-webkit-slider-thumb {
-webkit-appearance: none;
-moz-appearance: none;
-ms-appearance: none;
appearance: none;
border: none;
height: 28px;
width: 28px;
position: relative;
background: none;
}
input[type="range"]::-webkit-slider-thumb:after {
.range-thumb();
left: 0;
top: 0;
}
// Track Active Highlight
input[type="range"]::-webkit-slider-thumb:before {
position: absolute;
top: 50%;
right: 100%;
width: 2000px;
height: 2px;
margin-top: -1px;
z-index: 1;
background: @themeColor;
content: ' ';
}
// ======= FireFox ========
input[type="range"]::-moz-range-track {
width: 100%;
height: 2px;
background: #b7b8b7;
border: none;
outline: 0;
}
input[type="range"]::-moz-range-thumb {
.range-thumb();
}
// ======= IE ========
input[type="range"]::-ms-track {
width: 100%;
height: 2px;
cursor: pointer;
background: transparent;
border-color: transparent;
color: transparent;
}
input[type="range"]::-ms-thumb {
.range-thumb();
box-shadow: none;
border: 1px solid rgba(0,0,0,0.2);
box-sizing: border-box;
margin-top: 0;
top: 50%;
}
input[type="range"]::-ms-fill-lower {
background: @themeColor;
}
input[type="range"]::-ms-fill-upper {
background: #b7b8b7;
}
}
// Checkboxes
label.label-checkbox {
cursor: pointer;
i.icon-form-checkbox {
width: 22px;
height: 22px;
position: relative;
border-radius: 22px;
border: 1px solid #c7c7cc;
box-sizing: border-box;
&:after {
content:' ';
position: absolute;
left: 50%;
margin-left: -6px;
top: 50%;
margin-top: -4px;
width: 12px;
height: 9px;
}
}
input[type="checkbox"], input[type="radio"] {
display: none;
&:checked + .item-media{
i.icon-form-checkbox {
border: none;
background-color: @themeColor;
}
i.icon-form-checkbox:after {
background: no-repeat center;
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 12 9' xml:space='preserve'><polygon fill='#ffffff' points='12,0.7 11.3,0 3.9,7.4 0.7,4.2 0,4.9 3.9,8.8 3.9,8.8 3.9,8.8 '/></svg>");
-webkit-background-size: 12px 9px;
background-size: 12px 9px;
}
}
}
}
label.label-radio {
cursor: pointer;
input[type="checkbox"], input[type="radio"] {
display: none;
~ .item-inner {
padding-right: 35px;
}
&:checked ~ .item-inner{
background: no-repeat center;
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13 10'><polygon fill='@{themeColor}' points='11.6,0 4.4,7.2 1.4,4.2 0,5.6 4.4,10 4.4,10 4.4,10 13,1.4 '/></svg>");
background-position: 90% center;
background-position: ~"-webkit-calc(100% - 15px)" center;
background-position: ~"calc(100% - 15px)" center;
-webkit-background-size: 13px 10px;
background-size: 13px 10px;
}
}
}
label.label-checkbox, label.label-radio {
.transition(300ms);
html:not(.watch-active-state) &:active, &.active-state {
.transition(0ms);
background-color: #d9d9d9;
.item-inner {
.hairline-color(bottom, transparent);
}
}
}
// Smart selects
.smart-select {
select {
display: none;
}
}

View file

@ -1,637 +0,0 @@
@import url('_mixins.less');
@import url('_colors-vars.less');
/*==========================
Framework7 Color Themes
==========================*/
.theme-mixin(@colorName, @color, @colorHex) {
//Buttons
.theme-@{colorName} .button:not(.button-fill) {
border-color: @color;
html:not(.watch-active-state) &:active, &.active-state {
background-color: rgba(red(@color), green(@color), blue(@color), 0.15);
}
&.active {
background-color: @color;
color:#fff;
}
}
.theme-@{colorName} .button.button-fill {
background: @color;
color:#fff;
}
// Progress bar
.progressbar {
&.theme-@{colorName}, .theme-@{colorName} & {
span {
background-color: @color;
}
}
}
.progressbar-infinite {
&.theme-@{colorName}, .theme-@{colorName} & {
&:before {
background-color: @color;
}
}
}
//Icons
.theme-@{colorName} {
i.icon, i.icon& {
color:@color;
}
}
i.icon-next.color-@{colorName}, i.icon-next.theme-@{colorName}, .theme-@{colorName} i.icon-next {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g><path fill='#@{colorHex}' d='M1,1.6l11.8,5.8L1,13.4V1.6 M0,0v15l15-7.6L0,0L0,0z'/></g></svg>");
}
i.icon-prev.color-@{colorName}, i.icon-prev.theme-@{colorName}, .theme-@{colorName} i.icon-prev {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g><path fill='#@{colorHex}' d='M14,1.6v11.8L2.2,7.6L14,1.6 M15,0L0,7.6L15,15V0L15,0z'/></g></svg>");
}
i.icon-back.color-@{colorName}, i.icon-back.theme-@{colorName}, .theme-@{colorName} i.icon-back {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 20'><path d='M10,0l2,2l-8,8l8,8l-2,2L0,10L10,0z' fill='#@{colorHex}'/></svg>");
}
i.icon-forward.color-@{colorName}, i.icon-forward.theme-@{colorName}, .theme-@{colorName} i.icon-forward {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 20'><path d='M2,20l-2-2l8-8L0,2l2-2l10,10L2,20z' fill='#@{colorHex}'/></svg>");
}
i.icon-bars.color-@{colorName}, i.icon-bars.theme-@{colorName}, .theme-@{colorName} i.icon-bars {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 21 14'><path fill='#@{colorHex}' d='M0,0h2v2H0V0z M4,0h17v1H4V0z M0,6h2v2H0V6z M4,6h17v1H4V6z M0,12h2v2H0V12z M4,12h17v1H4V12z'/></svg>");
@media (-webkit-min-device-pixel-ratio: 2) {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 26'><path fill='#@{colorHex}' d='M0,0h4v4H0V0z M8,1h34v2H8V1z M0,11h4v4H0V11z M8,12h34v2H8V12z M0,22h4v4H0V22z M8,23h34v2H8V23z'/></svg>");
}
}
// Theme
.theme-@{colorName} {
a, .item-link.list-button {
color: @color;
}
.tabbar, .tabbar& {
a, a i {
color:inherit;
}
a.active, a.active i {
color:@color;
}
}
.messagebar .messagebar-send-link {
background-color: @color;
}
label.label-checkbox input[type="checkbox"]:checked + .item-media i.icon-form-checkbox, label.label-checkbox input[type="radio"]:checked + .item-media i.icon-form-checkbox {
background-color: @color;
}
label.label-radio input[type="checkbox"]:checked ~ .item-inner, label.label-radio input[type="radio"]:checked ~ .item-inner {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13 10'><polygon fill='#@{colorHex}' points='11.6,0 4.4,7.2 1.4,4.2 0,5.6 4.4,10 4.4,10 4.4,10 13,1.4 '/></svg>");
}
.picker-calendar-day.picker-calendar-day-selected span {
background-color: @color !important;
}
}
.swiper-pagination {
&.color-@{colorName}, .theme-@{colorName} & {
.swiper-pagination-bullet-active {
background-color: @color;
}
.swiper-pagination-progressbar {
background-color: @color;
}
}
&.swiper-pagination-progress.bg-@{colorName} {
background-color: rgba(red(@color), green(@color), blue(@color), 0.25);
}
}
.swiper-button-next, .swiper-container-rtl .swiper-button-prev {
&.color-@{colorName}, .theme-@{colorName} & {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'><path d='M27,22L27,22L5,44l-2.1-2.1L22.8,22L2.9,2.1L5,0L27,22L27,22z' fill='#@{colorHex}'/></svg>");
}
}
.swiper-button-prev, .swiper-container-rtl .swiper-button-next {
&.color-@{colorName}, .theme-@{colorName} & {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 44'><path d='M0,22L22,0l2.1,2.1L4.2,22l19.9,19.9L22,44L0,22L0,22L0,22z' fill='#@{colorHex}'/></svg>");
}
}
// Floating Button
.floating-button, .speed-dial-buttons a {
.theme-@{colorName} &, &.theme-@{colorName} {
color:#fff;
background: @color;
html:not(.watch-active-state) &:active, &.active-state {
background: darken(@color, 8%);
}
i {
color: inherit;
}
}
}
// Range Slider
.range-slider {
.theme-@{colorName} &, &.theme-@{colorName} {
input[type="range"]::-webkit-slider-thumb:before {
background-color: @color;
}
input[type="range"]::-ms-fill-lower {
background-color: @color;
}
}
}
// Badges
.badge.theme-@{colorName} {
background-color:@color;
color: #fff;
}
}
.theme-mixin(e('gray'), #8e8e93, '8e8e93');
.theme-mixin(e('white'), #ffffff, 'ffffff');
.theme-mixin(e('black'), #000000, '000000');
.theme-mixin(e('lightblue'), #5ac8fa, '5ac8fa');
.theme-mixin(e('yellow'), #ffcc00, 'ffcc00');
.theme-mixin(e('orange'), #ff9500, 'ff9500');
.theme-mixin(e('pink'), #ff2d55, 'ff2d55');
.theme-mixin(e('blue'), #007aff, '007aff');
.theme-mixin(e('green'), #4cd964, '4cd964');
.theme-mixin(e('red'), #ff3b30, 'ff3b30');
/*==========================
Framework7 Color + Bg + Border
==========================*/
.color-mixin(@colorName, @color, @colorHex) {
// Overwrite colors for links, icons, buttons, badges, icon, preloader
//Plain color and links
.color-@{colorName} {
color: @color;
.list-block .item-link.list-button&, .tabbar a.active&, a& {
color: @color;
}
.label-switch input[type="checkbox"]:checked + .checkbox&, .label-switch& input[type="checkbox"]:checked + .checkbox{
background-color: @color;
}
}
//Buttons
.color-@{colorName}.button:not(.button-fill), .color-@{colorName}.buttons-row .button {
border-color: @color;
html:not(.watch-active-state) &:active, &.active-state {
background-color: rgba(red(@color), green(@color), blue(@color), 0.15);
}
&.active {
background-color: @color;
color:#fff;
}
}
.button.button-fill.color-@{colorName} {
background: @color;
color:#fff;
}
// Progress bar
.progressbar {
&.color-@{colorName}, &.bg-@{colorName} {
span {
background-color: @color;
}
}
}
.progressbar-infinite {
&.color-@{colorName}, &.bg-@{colorName} {
&:before {
background-color: @color;
}
}
}
//Icons
.color-@{colorName} {
i.icon, i.icon& {
color:@color;
}
}
// Preloader
.preloader.color-@{colorName}, .preloader.preloader-@{colorName} {
.encoded-svg-background("<svg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><defs><line id='l' x1='60' x2='60' y1='7' y2='27' stroke='#@{colorHex}' stroke-width='11' stroke-linecap='round'/></defs><g><use xlink:href='#l' opacity='.27'/><use xlink:href='#l' opacity='.27' transform='rotate(30 60,60)'/><use xlink:href='#l' opacity='.27' transform='rotate(60 60,60)'/><use xlink:href='#l' opacity='.27' transform='rotate(90 60,60)'/><use xlink:href='#l' opacity='.27' transform='rotate(120 60,60)'/><use xlink:href='#l' opacity='.27' transform='rotate(150 60,60)'/><use xlink:href='#l' opacity='.37' transform='rotate(180 60,60)'/><use xlink:href='#l' opacity='.46' transform='rotate(210 60,60)'/><use xlink:href='#l' opacity='.56' transform='rotate(240 60,60)'/><use xlink:href='#l' opacity='.66' transform='rotate(270 60,60)'/><use xlink:href='#l' opacity='.75' transform='rotate(300 60,60)'/><use xlink:href='#l' opacity='.85' transform='rotate(330 60,60)'/></g></svg>");
}
// Bg rule
.bg-@{colorName}, .button.button-fill.bg-@{colorName}, a.bg-@{colorName}, .list-block .swipeout-actions-left a.bg-@{colorName}, .list-block .swipeout-actions-right a.bg-@{colorName} {
background-color: @color;
}
// Border rule
.border-@{colorName} {
border-color: @color;
.list-block &.item-inner, .list-block ul&, & {
&:after, &:before {
background-color: @color;
}
}
}
// Floating Button
.floating-button, .speed-dial-buttons a {
&.color-@{colorName}, &.bg-@{colorName} {
color:#fff;
background: @color;
html:not(.watch-active-state) &:active, &.active-state {
background: darken(@color, 8%);
}
i {
color: inherit;
}
}
}
// Range Slider
.range-slider {
&.color-@{colorName} {
input[type="range"]::-webkit-slider-thumb:before {
background-color: @color;
}
input[type="range"]::-ms-fill-lower {
background-color: @color;
}
}
}
// Badges
.badge.color-@{colorName} {
background-color:@color;
color: #fff;
}
}
.color-mixin(e('gray'), #8e8e93, '8e8e93');
.color-mixin(e('white'), #ffffff, 'ffffff');
.color-mixin(e('black'), #000000, '000000');
.color-mixin(e('lightblue'), #5ac8fa, '5ac8fa');
.color-mixin(e('yellow'), #ffcc00, 'ffcc00');
.color-mixin(e('orange'), #ff9500, 'ff9500');
.color-mixin(e('pink'), #ff2d55, 'ff2d55');
.color-mixin(e('blue'), #007aff, '007aff');
.color-mixin(e('green'), #4cd964, '4cd964');
.color-mixin(e('red'), #ff3b30, 'ff3b30');
/*==========================
Framework7 Layouts Themes
==========================*/
/* === Dark layout === */
.layout-dark {
@pageBg: #222426;
@barsBg: #131313;
@barsBorder: #333;
@barsText: #fff;
@tabBarText: #fff;
@text: #ddd;
@lightText: #bbb;
@strongText: #fff;
@activeLink: #29292f;
@blockBg: #1c1d1f;
@blockBorder: #393939;
@blockStrongBg: #1c1d1f;
@dividerBg: #1a1a1a;
@itemAfterText: @lightText;
@searchbarBg: #333;
@searchbarBorder: #333;
@swipeoutButton: #444;
@checkboxBorder: @blockBorder;
.navbar, .navbar&, .subnavbar, .subnavbar& {
.hairline-color(bottom, @barsBorder);
background-color: @barsBg;
color:@barsText;
}
.toolbar, .toolbar& {
.hairline-color(top, @barsBorder);
background-color: @barsBg;
color:@barsText;
}
// Picker
.picker-modal {
.toolbar {
background-color: @barsBg;
}
}
.popover .picker-modal .toolbar {
background: none;
}
.picker-calendar-week-days {
color:#fff;
background-color: @barsBg;
}
.popover .picker-modal, .picker-modal.picker-modal-inline {
.picker-center-highlight {
.hairline-color(top, @barsBorder);
.hairline-color(bottom, @barsBorder);
}
.picker-item.picker-selected {
color:#fff;
}
.picker-calendar-week-days {
color: #fff;
}
.picker-calendar-day {
color:#fff;
&.picker-calendar-day-prev, &.picker-calendar-day-next {
color: #777;
}
&.picker-calendar-day-disabled {
color: #555;
}
&.picker-calendar-day-today span {
background: #333;
}
&.picker-calendar-day-has-events span:after {
background: #555;
}
}
.picker-calendar-week-days, .picker-calendar-row {
.hairline-color(bottom, @barsBorder);
}
.toolbar ~ .picker-modal-inner .picker-calendar-months, .picker-calendar-week-days ~ .picker-calendar-months {
.hairline-color(top, @barsBorder);
}
}
.popover .picker-modal {
.toolbar {
.hairline-color(bottom, @barsBorder);
}
}
// Photo Browser
.photo-browser, .views .view[data-page="photo-browser-slides"] {
.navbar, .toolbar {
color:#000;
background: rgba(247,247,247,0.95);
}
}
.photo-browser-dark {
.navbar, .toolbar {
background: rgba(30,30,30,0.8);
color:#fff;
}
}
.tabbar a:not(.active) {
color:@tabBarText;
}
.page, .login-screen-content, .page&, .panel, .panel& {
background-color: @pageBg;
color:@text;
}
.content-block-title {
color:@strongText;
}
.content-block, .content-block& {
color:@lightText;
}
.content-block-inner {
background: @blockStrongBg;
color:@text;
.hairline-color(top, @blockBorder);
.hairline-color(bottom, @blockBorder);
}
.list-block, .list-block& {
ul {
background: @blockBg;
.hairline-color(top, @blockBorder);
.hairline-color(bottom, @blockBorder);
}
&.inset ul{
background: @blockStrongBg;
}
&.notifications > ul {
background: none;
}
}
.autocomplete-dropdown {
background: @blockBg;
.list-block b {
color: #fff;
}
}
.card {
background: @blockBg;
}
.card-header{
.hairline-color(bottom, @blockBorder);
}
.card-footer {
.hairline-color(top, @blockBorder);
color:@lightText;
}
.popover, .popover& {
background: rgba(0,0,0,0.8);
.popover-angle:after {
background: rgba(0,0,0,0.8);
}
.list-block ul {
background: none;
}
}
.actions-popover .list-block ul {
.hairline-color(top, @blockBorder);
.hairline-color(bottom, @blockBorder);
}
.actions-popover .actions-popover-label {
.hairline-color(bottom, @blockBorder);
}
li.sorting {
background-color: @activeLink;
}
.swipeout-actions-left a, .swipeout-actions-right a {
background-color: @swipeoutButton;
}
.item-inner, .list-block ul ul li:last-child .item-inner {
.hairline-color(bottom, @blockBorder);
}
.item-after {
color:@itemAfterText;
}
.item-link, label.label-checkbox, label.label-radio {
html:not(.watch-active-state) &:active, &.active-state {
background-color: @activeLink;
}
}
.item-link.list-button {
.hairline-color(bottom, @blockBorder);
}
.list-block-label {
color:@lightText;
}
.item-divider, .list-group-title {
background: @dividerBg;
color:@lightText;
.hairline-color(top, @blockBorder);
}
// Searchbar
.searchbar {
background: @searchbarBg;
.hairline-color(bottom, @searchbarBorder);
}
// Forms
.list-block, .list-block& {
input[type="text"], input[type="password"], input[type="email"], input[type="tel"], input[type="url"], input[type="date"], input[type="datetime-local"], input[type="number"], select, textarea {
color:@strongText;
}
}
.label-switch .checkbox {
background-color: @checkboxBorder;
&:before {
background-color: @blockBg;
}
}
.range-slider input[type="range"]:after {
background: @blockBg;
}
.range-slider input[type="range"]::-ms-thumb {
border: none;
}
}
/* === White layout === */
.layout-white {
@pageBg: #fff;
@barsBg: #fff;
@barsBorder: #ddd;
@barsText: #000;
@tabBarText: #777;
@text: #000;
@lightText: #777;
@strongText: #777;
@activeLink: #eee;
@blockBg: @pageBg;
@blockBorder: #ddd;
@blockStrongBg: #fafafa;
@dividerBg: #f7f7f7;
@itemAfterText: #8e8e93;
@searchbarBg: #c9c9ce;
@searchbarBorder: #b4b4b4;
@swipeoutButton: #c7c7cc;
@checkboxBorder: #e5e5e5;
.navbar, .navbar&, .subnavbar, .subnavbar& {
.hairline-color(bottom, @barsBorder);
background-color: @barsBg;
color:@barsText;
}
.toolbar, .toolbar& {
.hairline-color(top, @barsBorder);
background-color: @barsBg;
color:@barsText;
}
// Picker
.picker-modal {
.toolbar {
background-color: @barsBg;
}
}
.popover .picker-modal .toolbar {
background: none;
}
.popover .picker-modal, .picker-modal.picker-modal-inline {
.picker-center-highlight {
.hairline-color(top, @barsBorder);
.hairline-color(bottom, @barsBorder);
}
.picker-calendar-week-days, .picker-calendar-row {
.hairline-color(bottom, @barsBorder);
}
.toolbar ~ .picker-modal-inner .picker-calendar-months, .picker-calendar-week-days ~ .picker-calendar-months {
.hairline-color(top, @barsBorder);
}
}
.popover .picker-modal {
.toolbar {
.hairline-color(bottom, @barsBorder);
}
}
// Photo Browser
.photo-browser, .views .view[data-page="photo-browser-slides"] {
.navbar, .toolbar {
color:#000;
background: rgba(247,247,247,0.95);
}
}
.photo-browser-dark {
.navbar, .toolbar {
background: rgba(30,30,30,0.8);
color:#fff;
}
}
.tabbar a:not(.active) {
color:@tabBarText;
}
.page, .login-screen-content, .page&, .panel, .panel& {
background-color: @pageBg;
color: @text;
}
.content-block-title {
color:@strongText;
}
.content-block, .content-block& {
color:@lightText;
}
.content-block-inner {
background: @blockStrongBg;
color:@text;
.hairline-color(bottom, @blockBorder);
.hairline-color(top, @blockBorder);
}
.list-block, .list-block& {
ul {
background: @blockBg;
.hairline-color(bottom, @blockBorder);
.hairline-color(top, @blockBorder);
}
&.inset ul{
background: @blockStrongBg;
}
&.notifications > ul {
background: none;
}
}
.popover-inner > .list-block ul {
background: none;
}
li.sorting {
background-color: @activeLink;
}
.swipeout-actions-left a, .swipeout-actions-right a {
background-color: @swipeoutButton;
}
.item-inner, .list-block ul ul li:last-child .item-inner {
border-color: @blockBorder;
.hairline-color(bottom, @blockBorder);
}
.item-after {
color:@itemAfterText;
}
.item-link, label.label-checkbox, label.label-radio {
html:not(.watch-active-state) &:active, &.active-state {
background-color: @activeLink;
}
}
.item-link.list-button {
.hairline-color(bottom, @blockBorder);
}
.list-block-label {
color:@lightText;
}
.item-divider, .list-group-title {
background: @dividerBg;
color:@lightText;
.hairline-color(top, @blockBorder);
}
// Searchbar
.searchbar {
background: @searchbarBg;
.hairline-color(bottom, @searchbarBorder);
}
// Forms
.list-block, .list-block& {
input[type="text"], input[type="password"], input[type="email"], input[type="tel"], input[type="url"], input[type="date"], input[type="datetime-local"], input[type="number"], select, textarea {
color:@strongText;
}
}
.label-switch .checkbox {
background-color: @checkboxBorder;
&:before {
background-color: @blockBg;
}
}
.range-slider input[type="range"]:after {
background: @blockBg;
}
}

View file

@ -1,38 +0,0 @@
@import url('_mixins.less');
@import url('_colors-vars.less');
@import url('intro.less');
@import url('grid.less');
@import url('views.less');
@import url('pages.less');
@import url('toolbars.less');
@import url('toolbars-pages.less');
@import url('searchbar.less');
@import url('messagebar.less');
@import url('icons.less');
@import url('badges.less');
@import url('chips.less');
@import url('content-block.less');
@import url('lists.less');
@import url('contacts.less');
@import url('forms.less');
@import url('floating-button.less');
@import url('accordion.less');
@import url('cards.less');
@import url('modals.less');
@import url('panels.less');
@import url('lazy-load.less');
@import url('tabs.less');
@import url('messages.less');
@import url('statusbar.less');
@import url('preloader.less');
@import url('progressbar.less');
@import url('pull-to-refresh.less');
@import url('infinite-scroll.less');
@import url('autocomplete.less');
@import url('swiper.less');
@import url('photo-browser.less');
@import url('picker.less');
@import url('calendar.less');
@import url('notifications.less');
@import url('login-screen.less');
@import url('disabled.less');

View file

@ -1,414 +0,0 @@
@import url('_mixins.less');
@import url('_colors-vars.less');
/*=============
Framework 7 RTL Additions
=============*/
html {
direction: rtl;
}
/* === Lists === */
.list-block {
ul ul {
padding-left: 0;
padding-right: 45px;
}
.item-content {
padding-left: 0;
padding-right: 15px;
}
.item-inner {
padding-right: 0;
padding-left: 15px;
}
.item-after {
margin-left: 0;
margin-right: 5px;
}
.item-media {
i + i, i + img {
margin-left: 0;
margin-right: 5px;
}
& + .item-inner {
margin-left: 0;
margin-right: 15px;
}
}
.item-link {
.item-inner {
padding-right: 0;
padding-left: 35px;
background-position: 15px center;
.encoded-svg-background("<svg viewBox='0 0 60 120' xmlns='http://www.w3.org/2000/svg'><path d='m60 61.5-38.25 38.25-9.75-9.75 29.25-28.5-29.25-28.5 9.75-9.75z' fill='#c7c7cc' transform='translate(60,120) rotate(180)'/></svg>");
}
}
&.media-list, li.media-item {
.item-link {
.item-inner {
padding-right: 0;
padding-left: 15px;
}
.item-title-row {
padding-right: 0;
padding-left: 20px;
background-position: center left;
.encoded-svg-background("<svg viewBox='0 0 60 120' xmlns='http://www.w3.org/2000/svg'><path d='m60 61.5-38.25 38.25-9.75-9.75 29.25-28.5-29.25-28.5 9.75-9.75z' fill='#c7c7cc' transform='translate(60,120) rotate(180)'/></svg>");
}
}
}
.sortable-handler {
right: auto;
left: 0;
}
&.sortable-opened {
.item-inner, .item-link .item-inner {
padding-right: 0;
padding-left: 35px;
}
.item-link .item-inner, .item-link .item-title-row {
background-image: none;
}
}
.swipeout-actions-left, .swipeout-actions-right {
direction: ltr;
}
}
/* === Toolbars === */
.navbar, .toolbar {
a.link {
i+span, i+i, span+i, span+span {
margin-left: 0;
margin-right: 7px;
}
}
}
.navbar {
.left, .right {
a+a {
margin-left: 0;
margin-right: 15px;
}
}
.left {
margin-right: 0px;
margin-left: 10px;
}
.right {
margin-left: 0px;
margin-right: 10px;
}
.right:first-child {
right: auto;
left: 8px;
}
}
/* === Forms === */
.list-block {
input[type="text"], input[type="password"], input[type="email"], input[type="tel"], input[type="url"], input[type="date"], input[type="datetime-local"], input[type="number"], select, textarea {
padding-left: 0;
padding-right: 5px;
}
}
.buttons-row {
.button:first-child {
border-radius: 0 5px 5px 0;
border-left: none;
}
.button:last-child {
border-radius: 5px 0 0 5px;
border-left-width: 1px;
border-left-style: solid;
}
.button.button-round:first-child {
border-radius: 0 27px 27px 0;
}
.button.button-round:last-child {
border-radius: 27px 0 0 27px;
}
}
.label-switch {
input[type="checkbox"] {
&+ .checkbox {
&:before {
left: auto;
right: 2px;
}
&:after {
right: 2px;
left: auto;
.translate3d(0,0,0);
}
}
&:checked {
&+ .checkbox {
&:after {
left: auto;
.transform(translateX(-20px));
}
}
}
}
}
.range-slider {
padding-left: 0;
padding-right: 0;
margin-left: 0;
padding-right: 3px;
padding-left: 3px;
margin-right: -1px;
input[type="range"]:after {
left: auto;
right: -5px;
}
input[type="range"]::-webkit-slider-thumb:after {
left: auto;
right: 0;
}
input[type="range"]::-webkit-slider-thumb:before {
right: auto;
left: 100%;
}
}
label.label-radio {
input[type="checkbox"], input[type="radio"] {
~ .item-inner {
padding-left: 35px;
padding-right: 0;
}
&:checked ~ .item-inner{
background-position: 15px center;
}
}
}
/* === Search Bar === */
.searchbar {
input[type="search"] {
background-position: right center;
background-position: ~"-webkit-calc(100% - 8px)" center;
background-position: ~"calc(100% - 8px)" center;
}
.searchbar-clear {
right: auto;
left: 0;
}
&.searchbar-active {
.searchbar-cancel {
margin-left: 0;
margin-right: 8px;
}
}
}
/* === Message Bar === */
.messagebar {
.link + textarea {
margin-left: 0;
margin-right: 8px;
}
textarea + .link {
margin-left: 0;
margin-right: 8px;
}
}
/* === Modals === */
.modal-button {
&:first-child {
border-radius: 0 0 7px 0;
border-right: none;
}
&:last-child {
border-right: 1px solid #b5b5b5;
border-radius: 0 0 0 7px;
}
&:first-child:last-child {
border-radius: 0 0 7px 7px;
}
}
/* === Content Block === */
.content-block-inner {
margin-left: 0;
margin-right: -15px;
}
/* === Pages === */
.page-from-right-to-center:before, .page-from-center-to-right:before, .page-fake-shadow {
right: auto;
left: 100%;
background: -webkit-linear-gradient(right, rgba(0,0,0,0) 0%, rgba(0,0,0,0) 10%, rgba(0,0,0,0.01) 50%, rgba(0,0,0,0.2) 100%);
background: linear-gradient(to left, rgba(0,0,0,0) 0%, rgba(0,0,0,0) 10%, rgba(0,0,0,0.01) 50%, rgba(0,0,0,0.2) 100%);
}
.page-on-left {
.translate3d(20%);
}
.page-on-right {
.translate3d(-100%);
}
@-webkit-keyframes pageFromRightToCenter {
from {
-webkit-transform: translate3d(-100%,0,0);
}
to {
-webkit-transform: translate3d(0,0,0);
}
}
@-webkit-keyframes pageFromCenterToRight {
from {
-webkit-transform: translate3d(0,0,0);
}
to {
-webkit-transform: translate3d(-100%,0,0);
}
}
@keyframes pageFromRightToCenter {
from {
transform: translate3d(-100%,0,0);
}
to {
transform: translate3d(0,0,0);
}
}
@keyframes pageFromCenterToRight {
from {
transform: translate3d(0,0,0);
}
to {
transform: translate3d(-100%,0,0);
}
}
@-webkit-keyframes pageFromCenterToLeft {
from {
opacity: 1;
-webkit-transform: translate3d(0,0,0);
}
to {
opacity: 0.9;
-webkit-transform: translate3d(20%,0,0);
}
}
@-webkit-keyframes pageFromLeftToCenter {
from {
opacity: 0.9;
-webkit-transform: translate3d(20%,0,0);
}
to {
opacity: 1;
-webkit-transform: translate3d(0,0,0);
}
}
@keyframes pageFromCenterToLeft {
from {
opacity: 1;
transform: translate3d(0,0,0);
}
to {
opacity: 0.9;
transform: translate3d(20%,0,0);
}
}
@keyframes pageFromLeftToCenter {
from {
opacity: 0.9;
transform: translate3d(20%,0,0);
}
to {
opacity: 1;
transform: translate3d(0,0,0);
}
}
/* === Messages === */
.message-received {
-ms-flex-item-align: end;
-webkit-align-self: flex-end;
align-self: flex-end;
.align-items(flex-end);
}
.message-sent {
-ms-flex-item-align: start;
-webkit-align-self: flex-start;
align-self: flex-start;
.align-items(flex-start);
}
/* === Chips === */
.chip {
}
.chip-media {
+ .chip-label{
margin-left: 0px;
margin-right: 4px;
}
}
.chip-delete {
margin-right: 0;
margin-left: -6px;
}
/* === Back Icons === */
i.icon {
&.icon-back {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 20'><path d='M2,20l-2-2l8-8L0,2l2-2l10,10L2,20z' fill='@{themeColor}'/></svg>");
}
&.icon-forward {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 20'><path d='M10,0l2,2l-8,8l8,8l-2,2L0,10L10,0z' fill='@{themeColor}'/></svg>");
}
&.icon-next {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g><path fill='@{themeColor}' d='M14,1.6v11.8L2.2,7.6L14,1.6 M15,0L0,7.6L15,15V0L15,0z'/></g></svg>");
}
&.icon-prev {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g><path fill='@{themeColor}' d='M1,1.6l11.8,5.8L1,13.4V1.6 M0,0v15l15-7.6L0,0L0,0z'/></g></svg>");
}
}
.rtl-icon-color-mixin(@colorName, @color) {
i.icon-back.color-@{colorName}, i.icon-back.theme-@{colorName}, .theme-@{colorName} i.icon-back {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 20'><path d='M2,20l-2-2l8-8L0,2l2-2l10,10L2,20z' fill='@{color}'/></svg>");
}
i.icon-forward.color-@{colorName}, i.icon-forward.theme-@{colorName}, .theme-@{colorName} i.icon-forward {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 20'><path d='M10,0l2,2l-8,8l8,8l-2,2L0,10L10,0z' fill='@{color}'/></svg>");
}
i.icon-next.color-@{colorName}, i.icon-next.theme-@{colorName}, .theme-@{colorName} i.icon-next {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g><path fill='@{color}' d='M14,1.6v11.8L2.2,7.6L14,1.6 M15,0L0,7.6L15,15V0L15,0z'/></g></svg>");
}
i.icon-prev.color-@{colorName}, i.icon-prev.theme-@{colorName}, .theme-@{colorName} i.icon-prev {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g><path fill='@{color}' d='M1,1.6l11.8,5.8L1,13.4V1.6 M0,0v15l15-7.6L0,0L0,0z'/></g></svg>");
}
}
.rtl-icon-color-mixin(e('gray'), #8e8e93);
.rtl-icon-color-mixin(e('white'), #ffffff);
.rtl-icon-color-mixin(e('black'), #000000);
.rtl-icon-color-mixin(e('lightblue'), #5ac8fa);
.rtl-icon-color-mixin(e('yellow'), #ffcc00);
.rtl-icon-color-mixin(e('orange'), #ff9500);
.rtl-icon-color-mixin(e('pink'), #ff2d55);
.rtl-icon-color-mixin(e('blue'), #007aff);
.rtl-icon-color-mixin(e('green'), #4cd964);
.rtl-icon-color-mixin(e('red'), #ff3b30);
/* === Accordion === */
.list-block {
.accordion-toggle {
.item-inner {
padding-right: 0;
padding-left: 35px;
background-position: 15px center;
.encoded-svg-background("<svg viewBox='0 0 60 120' xmlns='http://www.w3.org/2000/svg'><path d='m60 61.5-38.25 38.25-9.75-9.75 29.25-28.5-29.25-28.5 9.75-9.75z' fill='#c7c7cc' transform='translate(60,120) rotate(180)'/></svg>");
}
}
&:not(.media-list) .accordion-item-expanded:not(.media-item) .accordion-item-toggle .item-inner,
&:not(.media-list) .accordion-item-expanded:not(.media-item) > .item-link .item-inner,
&.media-list .accordion-item-expanded .accordion-item-toggle .item-title-row,
&.media-list .accordion-item-expanded > .item-link .item-title-row,
.accordion-item-expanded.media-item .accordion-item-toggle .item-title-row,
.accordion-item-expanded.media-item > .item-link .item-title-row,
{
.encoded-svg-background("<svg viewBox='0 0 60 120' xmlns='http://www.w3.org/2000/svg'><path d='m60 61.5-38.25 38.25-9.75-9.75 29.25-28.5-29.25-28.5 9.75-9.75z' transform='translate(70, 30) rotate(90)' fill='#c7c7cc'/></svg>");
background-size: 20px 20px;
}
.accordion-item ul {
padding-right: 0;
}
}

View file

@ -1,87 +0,0 @@
/* === Grid === */
.row {
.flexbox();
.justify-content(space-between);
.flex-wrap(wrap);
.align-items(flex-start);
> [class*="col-"] {
box-sizing: border-box;
}
}
@cols: 5, 10, 15, 20, 25, 30, 100/3, 35, 40, 45, 50, 55, 60, 65, 100*(2/3), 70, 75, 80, 85, 90, 95, 100;
.row {
.col-auto {
width: 100%;
}
.-(@i: length(@cols)) when (@i > 0) {
@divider: e(extract(@cols, @i));
@className: `Math.floor(@{divider})`;
@n: `100/parseFloat(@{divider})`;
@n-1: @n - 1;
.col-@{className} {
width: ~"@{divider}%";
width: ~"-webkit-calc((100% - 15px*@{n-1}) / @{n})";
width: ~"calc((100% - 15px*@{n-1}) / @{n})";
}
&.no-gutter {
.col-@{className} {
width: ~"@{divider}%";
}
}
.-((@i - 1));
} .-;
.--(@j: 1) when (@j < length(@cols)) {
@divider: e(extract(@cols, @j));
@className: `Math.floor(@{divider})`;
.col-auto:nth-last-child(@{j}), .col-auto:nth-last-child(@{j}) ~ .col-auto {
@j-1: @j - 1;
width: 100% / @j;
width: ~"-webkit-calc((100% - 15px*@{j-1}) / @{j})";
width: ~"calc((100% - 15px*@{j-1}) / @{j})";
}
&.no-gutter {
.col-auto:nth-last-child(@{j}), .col-auto:nth-last-child(@{j}) ~ .col-auto {
width: 100% / @j;
}
}
.--((@j + 1));
} .--;
}
@media all and (min-width:768px) {
.row {
.-(@i: length(@cols)) when (@i > 0) {
@divider: e(extract(@cols, @i));
@className: `Math.floor(@{divider})`;
@n: `100/parseFloat(@{divider})`;
@n-1: @n - 1;
.tablet-@{className} {
width: ~"@{divider}%";
width: ~"-webkit-calc((100% - 15px*@{n-1}) / @{n})";
width: ~"calc((100% - 15px*@{n-1}) / @{n})";
}
&.no-gutter {
.tablet-@{className} {
width: ~"@{divider}%";
}
}
.-((@i - 1));
} .-;
.--(@j: 1) when (@j < length(@cols)) {
.tablet-auto:nth-last-child(@{j}), .tablet-auto:nth-last-child(@{j}) ~ .col-auto {
@j-1: @j - 1;
width: 100% / @j;
width: ~"-webkit-calc((100% - 15px*@{j-1}) / @{j})";
width: ~"calc((100% - 15px*@{j-1}) / @{j})";
}
&.no-gutter {
.tablet-auto:nth-last-child(@{j}), .tablet-auto:nth-last-child(@{j}) ~ .tablet-auto {
width: 100% / @j;
}
}
.--((@j + 1));
} .--;
}
}

View file

@ -1,66 +0,0 @@
/* === Icons === */
i.icon {
display: inline-block;
vertical-align: middle;
background-size: 100% auto;
background-position: center;
background-repeat: no-repeat;
font-style: normal;
position: relative;
&.icon-back {
width: 12px;
height: 20px;
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 20'><path d='M10,0l2,2l-8,8l8,8l-2,2L0,10L10,0z' fill='@{themeColor}'/></svg>");
}
&.icon-forward {
width: 12px;
height: 20px;
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 20'><path d='M2,20l-2-2l8-8L0,2l2-2l10,10L2,20z' fill='@{themeColor}'/></svg>");
}
&.icon-bars {
width: 21px;
height: 14px;
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 21 14'><path fill='@{themeColor}' d='M0,0h2v2H0V0z M4,0h17v1H4V0z M0,6h2v2H0V6z M4,6h17v1H4V6z M0,12h2v2H0V12z M4,12h17v1H4V12z'/></svg>");
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2ddpx) {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 26'><path fill='@{themeColor}' d='M0,0h4v4H0V0z M8,1h34v2H8V1z M0,11h4v4H0V11z M8,12h34v2H8V12z M0,22h4v4H0V22z M8,23h34v2H8V23z'/></svg>");
height: 13px;
}
}
&.icon-camera {
width: 25px;
height: 20px;
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 25 20'><path fill='#8C8D92' d='M13.3,5.5c-2.7,0-5,2.2-5,5s2.2,5,5,5c2.7,0,5-2.2,5-5S16,5.5,13.3,5.5z'/><path fill='#8C8D92' d='M22.8,1.8h-3.3c-0.2-1.3-1-1.8-2-1.8H8.1c-1,0-1.8,0.4-2,1.8H2.8C1.4,1.8,0,2.8,0,4.2v12.6 c0,1.4,1.4,2.5,2.8,2.5h20c1.4,0,2.2-1.1,2.2-2.5V4.2C25,2.8,24.2,1.8,22.8,1.8z M3.5,6.4C2.6,6.4,2,5.8,2,5c0-0.8,0.7-1.5,1.5-1.5 S5,4.1,5,5C5,5.8,4.3,6.4,3.5,6.4z M13.3,16.8c-3.5,0-6.3-2.7-6.3-6.2c0-3.3,2.5-6.2,5.7-6.2h1.2c3.2,0,5.7,2.9,5.7,6.2 C19.6,14.1,16.7,16.8,13.3,16.8z'/></svg>");
}
&.icon-f7 {
width: 29px;
height: 29px;
background-image: url("@{imgBaseUrl}/i-f7-ios.png");
border-radius: 6px;
}
&.icon-next, &.icon-prev {
width: 15px;
height: 15px;
}
&.icon-next {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g><path fill='@{themeColor}' d='M1,1.6l11.8,5.8L1,13.4V1.6 M0,0v15l15-7.6L0,0L0,0z'/></g></svg>");
}
&.icon-prev {
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><g><path fill='@{themeColor}' d='M14,1.6v11.8L2.2,7.6L14,1.6 M15,0L0,7.6L15,15V0L15,0z'/></g></svg>");
}
&.icon-plus {
width: 25px;
height: 25px;
font-size: 31px;
line-height: 20px;
text-align: center;
font-weight: 100;
}
}
.framework7-icons, .f7-icons {
.navbar &, .toolbar & {
font-size: 22px;
}
.tabbar &, .tabbar-labels & {
font-size: 25px;
}
}

View file

@ -1,5 +0,0 @@
/* === Infinite Scroll Preloader === */
.infinite-scroll-preloader {
text-align: center;
padding: 5px 0;
}

View file

@ -1,49 +0,0 @@
@imgBaseUrl: "../img";
html, body, .framework7-root {
position: relative;
height: 100%;
width: 100%;
overflow-x: hidden;
}
body {
font-family: -apple-system, SF UI Text, Helvetica Neue, Helvetica, Arial, sans-serif;
margin: 0;
padding: 0;
color: #000;
font-size: 14px;
line-height: 1.4;
width: 100%;
-webkit-text-size-adjust:100%;
background: #fff;
overflow: hidden;
}
.framework7-root {
overflow: hidden;
}
// Fix for iPad in Safari in Lanscape mode
@media all and (width:1024px) and (height:691px) and (orientation:landscape) {
html, body, .framework7-root {
height: 671px;
}
}
@media all and (width:1024px) and (height:692px) and (orientation:landscape) {
html, body, .framework7-root {
height: 672px;
}
}
* {
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-touch-callout:none;
}
a, input, textarea, select {
outline: 0;
}
a {
text-decoration: none;
color: @themeColor;
}
p {
margin: 1em 0;
}

View file

@ -1,20 +0,0 @@
/* === Images Lazy Loading === */
.lazy-loaded.lazy-fadeIn {
.animation(lazyFadeIn 600ms);
}
@-webkit-keyframes lazyFadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes lazyFadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}

View file

@ -1,401 +0,0 @@
/* === Lists === */
@listBlockBorderColor: #c8c7cc;
@listBlockBg: #fff;
@dividerBg: #F7F7F7;
@dividerColor: #8e8e93;
.list-block {
margin: 35px 0;
font-size: 17px;
ul {
background: @listBlockBg;
list-style: none;
padding: 0;
margin: 0;
position: relative;
.hairline(top, @listBlockBorderColor);
.hairline(bottom, @listBlockBorderColor);
ul {
.hairline-remove(top);
.hairline-remove(bottom);
padding-left: 45px;
}
}
.align-top, .align-top .item-content, .align-top .item-inner {
.align-items(flex-start);
}
.inset() {
margin-left: 15px;
margin-right: 15px;
border-radius: 7px;
.content-block-title {
margin-left: 0;
margin-right: 0;
}
ul {
border-radius: 7px;
.hairline-remove(top);
.hairline-remove(bottom);
}
li:first-child > a{
border-radius: 7px 7px 0 0;
}
li:last-child > a{
border-radius: 0 0 7px 7px;
}
li:first-child:last-child > a {
border-radius: 7px;
}
}
&.inset {
.inset()
}
&.tablet-inset {
@media all and (min-width:768px) {
.inset();
}
}
// List items
li {
box-sizing: border-box;
position: relative;
}
.item-media {
.flexbox();
.flex-shrink(0);
.flex-wrap(nowrap);
box-sizing: border-box;
.align-items(center);
padding-top: 7px;
padding-bottom: 8px;
i + i {
margin-left: 5px;
}
i + img {
margin-left: 5px;
}
}
.item-media + .item-inner {
margin-left: 15px;
}
.item-inner {
padding-right: 15px;
position: relative;
.hairline(bottom, @listBlockBorderColor);
width: 100%;
padding-top: 8px;
padding-bottom: 7px;
min-height: 44px;
box-sizing: border-box;
.flexbox();
-webkit-box-flex:1;
-ms-flex:1;
overflow: hidden;
.justify-content(space-between);
.align-items(center);
.align-self(stretch);
}
.item-title {
.flex-shrink(1);
min-width: 0;
white-space: nowrap;
position: relative;
overflow: hidden;
text-overflow: ellipsis;
max-width: 100%;
}
.item-after {
white-space: nowrap;
color: #8e8e93;
.flex-shrink(0);
margin-left: 5px;
.flexbox();
max-height: 28px;
}
.smart-select .item-after, .autocomplete-opener .item-after {
max-width: 70%;
overflow: hidden;
text-overflow: ellipsis;
position: relative;
display: block;
}
.item-link {
.transition(300ms);
display: block;
color: inherit;
.item-inner {
padding-right: 35px;
.encoded-svg-background("<svg viewBox='0 0 60 120' xmlns='http://www.w3.org/2000/svg'><path d='m60 61.5-38.25 38.25-9.75-9.75 29.25-28.5-29.25-28.5 9.75-9.75z' fill='#c7c7cc'/></svg>");
background-size: 10px 20px;
background-repeat: no-repeat;
background-position: 95% center;
background-position: -webkit-calc(~"100% - 15px") center;
background-position: calc(~"100% - 15px") center;
}
html:not(.watch-active-state) &:active, &.active-state {
.transition(0ms);
background-color: #d9d9d9;
.item-inner {
.hairline-color(bottom, transparent);
}
}
&.list-button {
padding: 0 15px;
text-align: center;
color: @blue;
display: block;
.hairline(bottom, @listBlockBorderColor);
line-height: 43px;
}
}
.item-content {
box-sizing: border-box;
padding-left: 15px;
min-height: 44px;
.flexbox();
.justify-content(space-between);
.align-items(center);
}
// Label after List block
.list-block-label {
margin: 10px 0 35px;
padding: 0 15px;
font-size: 14px;
color: #8f8f94;
}
// Swipe outs
.swipeout {
overflow: hidden;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
}
.swipeout.deleting {
.transition(300ms);
.swipeout-content {
.transform(translateX(-100%));
}
}
.swipeout.transitioning {
.swipeout-content, .swipeout-actions-right a, .swipeout-actions-left a, .swipeout-overswipe {
-webkit-transition: 300ms;
transition: 300ms;
}
}
.swipeout-content {
position: relative;
z-index: 10;
}
.swipeout-overswipe {
-webkit-transition: 200ms left;
transition: 200ms left;
}
.swipeout-actions-left, .swipeout-actions-right {
position: absolute;
top: 0;
height: 100%;
.flexbox();
a {
padding: 0 30px;
color:#fff;
background: #c7c7cc;
.flexbox();
.align-items(center);
position: relative;
left: 0;
&:after {
content:'';
position: absolute;
top: 0;
width: 600%;
height: 100%;
background: inherit;
z-index: -1;
}
}
a.swipeout-delete {
background: @red;
}
}
.swipeout-actions-right {
right: 0%;
.transform(translateX(100%));
a:after {
left: 100%;
margin-left: -1px;
}
}
.swipeout-actions-left {
left: 0%;
.transform(translateX(-100%));
a:after {
right: 100%;
margin-right: -1px;
}
}
.item-subtitle {
font-size: 15px;
position: relative;
overflow: hidden;
white-space: nowrap;
max-width: 100%;
text-overflow:ellipsis;
}
.item-text {
font-size: 15px;
color: #8e8e93;
line-height: 21px;
position: relative;
overflow: hidden;
height: 42px;
text-overflow:ellipsis;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
display: -webkit-box;
}
&.media-list, li.media-item {
.item-title {
font-weight: 500;
html.ios-gt-8 & {
font-weight: 600;
}
}
.item-inner {
display: block;
padding-top: 10px;
padding-bottom: 9px;
.align-self(stretch);
}
.item-link .item-inner {
background: none;
padding-right: 15px;
}
.item-link .item-title-row {
padding-right: 20px;
background: no-repeat right center;
.encoded-svg-background("<svg viewBox='0 0 60 120' xmlns='http://www.w3.org/2000/svg'><path d='m60 61.5-38.25 38.25-9.75-9.75 29.25-28.5-29.25-28.5 9.75-9.75z' fill='#c7c7cc'/></svg>");
background-size: 10px 20px;
}
.item-media {
padding-top: 9px;
padding-bottom: 10px;
img {
display: block;
}
}
.item-title-row {
.flexbox();
.justify-content(space-between);
}
.item-content > .item-after {
margin-right: 15px;
margin-left: 15px;
}
}
.list-group {
ul {
&:after, &:before {
z-index: 25;
}
}
+ .list-group ul {
.hairline-remove(top);
}
}
.item-divider, .list-group-title {
background: @dividerBg;
.hairline(top, @listBlockBorderColor);
margin-top: -1px;
padding: 4px 15px;
white-space: nowrap;
position: relative;
max-width: 100%;
text-overflow: ellipsis;
overflow: hidden;
color: @dividerColor;
z-index: 15;
}
.list-group-title {
position: relative;
position: -webkit-sticky;
position: -moz-sticky;
position: sticky;
top: 0px;
z-index: 20;
margin-top: 0;
.hairline-remove(top);
}
// Sortable
.sortable-handler {
position: absolute;
right: 0;
top: 0;
bottom: 1px;
z-index: 10;
background-repeat: no-repeat;
background-size: 18px 12px;
background-position: center;
width: 35px;
.encoded-svg-background("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 12' fill='#c7c7cc'><path d='M0,2V0h22v2H0z'/><path d='M0,7V5h22v2H0z'/><path d='M0,12v-2h22v2H0z'/></svg>");
opacity: 0;
visibility: hidden;
cursor: pointer;
.transition(300ms);
}
&.sortable {
.item-inner {
.transition(300ms);
}
}
&.sortable-opened {
.sortable-handler {
visibility: visible;
opacity: 1;
}
.item-inner, .item-link .item-inner {
padding-right: 35px;
}
.item-link .item-inner, .item-link .item-title-row {
background-image: none;
}
}
&.sortable-sorting {
li {
.transition(300ms);
}
}
li.sorting {
z-index: 50;
background: rgba(255,255,255,0.8);
box-shadow: 0px 2px 8px rgba(0,0,0,0.6);
.transition(0ms);
.item-inner {
.hairline-remove(bottom);
}
}
// Last-childs
li {
&:last-child {
.list-button {
.hairline-remove(bottom);
}
}
&:last-child, &:last-child li:last-child {
.item-inner {
.hairline-remove(bottom);
}
}
li:last-child, &:last-child li {
.item-inner {
.hairline(bottom, @listBlockBorderColor);
}
}
}
.no-hairlines();
.no-hairlines-between()
}

Some files were not shown because too many files have changed in this diff Show more