Site Skeleton
13
css/style.css
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
.wrapper {
|
||||||
|
min-height: 100%;
|
||||||
|
height: 100%;
|
||||||
|
margin: 100 auto -120px; /* the bottom margin is the negative value of the footer's height */
|
||||||
|
}
|
||||||
|
.footer, .push {
|
||||||
|
height: 40px; /* .push must be the same height as .footer */
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcenter {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
125
index.html
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>UTPass</title>
|
||||||
|
<!-- Font Awesome -->
|
||||||
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css">
|
||||||
|
<!-- Bootstrap core CSS -->
|
||||||
|
<link href="mdb/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<!-- Material Design Bootstrap -->
|
||||||
|
<link href="mdb/css/mdb.min.css" rel="stylesheet">
|
||||||
|
<!-- Your custom styles -->
|
||||||
|
<link href="css/style.css" rel="stylesheet">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!--Main Navigation-->
|
||||||
|
<header>
|
||||||
|
|
||||||
|
<!-- Navbar -->
|
||||||
|
<nav class="navbar fixed-top navbar-expand-lg navbar-light white scrolling-navbar" id="button_menu">
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<!-- Brand -->
|
||||||
|
<a class="navbar-brand waves-effect" href="#">
|
||||||
|
<strong class="blue-text">UTPass</strong>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<!-- Collapse -->
|
||||||
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
|
||||||
|
aria-expanded="false" aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<!-- Links -->
|
||||||
|
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||||
|
|
||||||
|
<!-- Left -->
|
||||||
|
<ul class="navbar-nav mr-auto" id="menu">
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- Right -->
|
||||||
|
<ul class="navbar-nav nav-flex-icons">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<!-- Navbar -->
|
||||||
|
|
||||||
|
</header>
|
||||||
|
<!--Main Navigation-->
|
||||||
|
|
||||||
|
<!--Wrapper layout-->
|
||||||
|
<div class="wrapper">
|
||||||
|
<!--Main layout-->
|
||||||
|
<main class="mt-5 pt-5">
|
||||||
|
<!-- container-->
|
||||||
|
<div class="container" id="projects">
|
||||||
|
<!--Section: Jumbotron-->
|
||||||
|
<section class="card blue-gradient wow fadeIn" id="intro">
|
||||||
|
|
||||||
|
<!-- Content -->
|
||||||
|
<div class="card-body text-white text-center py-5 px-5 my-5">
|
||||||
|
|
||||||
|
<h1 class="mb-4">
|
||||||
|
<strong><p class="text-center mb-5">Under Construction :)</p></strong>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<!-- Content -->
|
||||||
|
</section>
|
||||||
|
<!--Section: Jumbotron-->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- container-->
|
||||||
|
|
||||||
|
</main>
|
||||||
|
<!--Main layout-->
|
||||||
|
|
||||||
|
<div class="push"></div>
|
||||||
|
</div>
|
||||||
|
<!--Wrapper layout-->
|
||||||
|
|
||||||
|
<!--Footer-->
|
||||||
|
<footer class="page-footer footer text-center font-small mdb-color darken-2 mt-4 wow fadeIn fixed-bottom">
|
||||||
|
|
||||||
|
<!-- hr class="my-2" -->
|
||||||
|
|
||||||
|
<!-- Social icons
|
||||||
|
<div class="pb-1">
|
||||||
|
</div>
|
||||||
|
<div class="pb-1">
|
||||||
|
</div>
|
||||||
|
Social icons -->
|
||||||
|
|
||||||
|
<!--Copyright-->
|
||||||
|
<div class="footer-copyright py-2 ">
|
||||||
|
<a href="https://qrouland.com" target="#">utpass.qrouland.com</a>
|
||||||
|
</div>
|
||||||
|
<!--/.Copyright-->
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
<!--/.Footer-->
|
||||||
|
|
||||||
|
<!-- SCRIPTS -->
|
||||||
|
<!-- JQuery -->
|
||||||
|
<script type="text/javascript" src="mdb/js/jquery-3.4.1.min.js"></script>
|
||||||
|
<!-- Bootstrap tooltips -->
|
||||||
|
<script type="text/javascript" src="mdb/js/popper.min.js"></script>
|
||||||
|
<!-- Bootstrap core JavaScript -->
|
||||||
|
<script type="text/javascript" src="mdb/js/bootstrap.min.js"></script>
|
||||||
|
<!-- MDB core JavaScript -->
|
||||||
|
<script type="text/javascript" src="mdb/js/mdb.min.js"></script>
|
||||||
|
<!-- Initializations -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
// Animations initialization
|
||||||
|
new WOW().init();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
BIN
mdb/License.pdf
Normal file
26
mdb/README.txt
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
Material Design for Bootstrap
|
||||||
|
|
||||||
|
Version: MDB Free 4.8.9
|
||||||
|
|
||||||
|
Documentation:
|
||||||
|
https://mdbootstrap.com/
|
||||||
|
|
||||||
|
Getting started:
|
||||||
|
https://mdbootstrap.com/docs/jquery/getting-started/download/
|
||||||
|
|
||||||
|
Tutorials:
|
||||||
|
MDB-Bootstrap: https://mdbootstrap.com/education/bootstrap/
|
||||||
|
MDB-Wordpress: https://mdbootstrap.com/education/wordpress/
|
||||||
|
|
||||||
|
Templates:
|
||||||
|
https://mdbootstrap.com/templates/
|
||||||
|
|
||||||
|
License:
|
||||||
|
https://mdbootstrap.com/general/license/
|
||||||
|
|
||||||
|
Support:
|
||||||
|
https://mdbootstrap.com/forums/forum/support/
|
||||||
|
|
||||||
|
Contact:
|
||||||
|
office@mdbootstrap.com
|
||||||
|
|
BIN
mdb/Useful_Resources.pdf
Normal file
109
mdb/css/addons/datatables-select.css
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
/*
|
||||||
|
* MDBootstrap integration with Datatables
|
||||||
|
* Learn more: https://mdbootstrap.com/docs/jquery/tables/datatables/
|
||||||
|
* About MDBootstrap: https://mdbootstrap.com/
|
||||||
|
*
|
||||||
|
* This combined file was created taking that code from this webstie:
|
||||||
|
* https://cdn.datatables.net/select/1.2.7/css/select.dataTables.min.css
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* To rebuild or modify this file with the latest versions of the included
|
||||||
|
* software please visit:
|
||||||
|
* https://datatables.net/download/#bs4/dt-1.10.18
|
||||||
|
*
|
||||||
|
* Included libraries:
|
||||||
|
* DataTables 1.10.18
|
||||||
|
*/
|
||||||
|
table.dataTable tbody > tr.selected,
|
||||||
|
table.dataTable tbody > tr > .selected {
|
||||||
|
background-color: #B0BED9; }
|
||||||
|
|
||||||
|
table.dataTable.stripe tbody > tr.odd.selected,
|
||||||
|
table.dataTable.stripe tbody > tr.odd > .selected, table.dataTable.display tbody > tr.odd.selected,
|
||||||
|
table.dataTable.display tbody > tr.odd > .selected {
|
||||||
|
background-color: #acbad4; }
|
||||||
|
|
||||||
|
table.dataTable.hover tbody > tr.selected:hover,
|
||||||
|
table.dataTable.hover tbody > tr > .selected:hover, table.dataTable.display tbody > tr.selected:hover,
|
||||||
|
table.dataTable.display tbody > tr > .selected:hover {
|
||||||
|
background-color: #aab7d1; }
|
||||||
|
|
||||||
|
table.dataTable.order-column tbody > tr.selected > .sorting_1, table.dataTable.order-column tbody > tr.selected > .sorting_2, table.dataTable.order-column tbody > tr.selected > .sorting_3, table.dataTable.display tbody > tr.selected > .sorting_1, table.dataTable.display tbody > tr.selected > .sorting_2, table.dataTable.display tbody > tr.selected > .sorting_3 {
|
||||||
|
background-color: #acbad5; }
|
||||||
|
|
||||||
|
table.dataTable.order-column tbody > tr > .selected, table.dataTable.display tbody > tr > .selected {
|
||||||
|
background-color: #acbad5; }
|
||||||
|
|
||||||
|
table.dataTable.display tbody > tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_1 {
|
||||||
|
background-color: #a6b4cd; }
|
||||||
|
|
||||||
|
table.dataTable.display tbody > tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_2 {
|
||||||
|
background-color: #a8b5cf; }
|
||||||
|
|
||||||
|
table.dataTable.display tbody > tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_3 {
|
||||||
|
background-color: #a9b7d1; }
|
||||||
|
|
||||||
|
table.dataTable.display tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_1 {
|
||||||
|
background-color: #acbad5; }
|
||||||
|
|
||||||
|
table.dataTable.display tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_2 {
|
||||||
|
background-color: #aebcd6; }
|
||||||
|
|
||||||
|
table.dataTable.display tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_3 {
|
||||||
|
background-color: #afbdd8; }
|
||||||
|
|
||||||
|
table.dataTable.display tbody > tr.odd > .selected, table.dataTable.order-column.stripe tbody > tr.odd > .selected {
|
||||||
|
background-color: #a6b4cd; }
|
||||||
|
|
||||||
|
table.dataTable.display tbody > tr.even > .selected, table.dataTable.order-column.stripe tbody > tr.even > .selected {
|
||||||
|
background-color: #acbad5; }
|
||||||
|
|
||||||
|
table.dataTable.display tbody > tr.selected:hover > .sorting_1, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_1 {
|
||||||
|
background-color: #a2aec7; }
|
||||||
|
|
||||||
|
table.dataTable.display tbody > tr.selected:hover > .sorting_2, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_2 {
|
||||||
|
background-color: #a3b0c9; }
|
||||||
|
|
||||||
|
table.dataTable.display tbody > tr.selected:hover > .sorting_3, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_3 {
|
||||||
|
background-color: #a5b2cb; }
|
||||||
|
|
||||||
|
table.dataTable.display tbody > tr:hover > .selected, table.dataTable.display tbody > tr > .selected:hover, table.dataTable.order-column.hover tbody > tr:hover > .selected, table.dataTable.order-column.hover tbody > tr > .selected:hover {
|
||||||
|
background-color: #a2aec7; }
|
||||||
|
|
||||||
|
table.dataTable tbody td.select-checkbox, table.dataTable tbody th.select-checkbox {
|
||||||
|
position: relative; }
|
||||||
|
|
||||||
|
table.dataTable tbody td.select-checkbox:before, table.dataTable tbody td.select-checkbox:after, table.dataTable tbody th.select-checkbox:before, table.dataTable tbody th.select-checkbox:after {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 1.2em;
|
||||||
|
left: 50%;
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box; }
|
||||||
|
|
||||||
|
table.dataTable tbody td.select-checkbox:before,
|
||||||
|
table.dataTable tbody th.select-checkbox:before {
|
||||||
|
content: ' ';
|
||||||
|
margin-top: 4px;
|
||||||
|
margin-left: -6px;
|
||||||
|
border: 1px solid black;
|
||||||
|
-webkit-border-radius: 3px;
|
||||||
|
border-radius: 3px; }
|
||||||
|
|
||||||
|
table.dataTable tr.selected td.select-checkbox:after,
|
||||||
|
table.dataTable tr.selected th.select-checkbox:after {
|
||||||
|
content: '\2714';
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-left: -4px;
|
||||||
|
text-align: center;
|
||||||
|
text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9; }
|
||||||
|
|
||||||
|
div.dataTables_wrapper span.select-info, div.dataTables_wrapper span.select-item {
|
||||||
|
margin-left: 0.5em; }
|
||||||
|
|
||||||
|
@media screen and (max-width: 640px) {
|
||||||
|
div.dataTables_wrapper span.select-info, div.dataTables_wrapper span.select-item {
|
||||||
|
margin-left: 0;
|
||||||
|
display: block; } }
|
1
mdb/css/addons/datatables-select.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
table.dataTable tbody>tr.selected,table.dataTable tbody>tr>.selected{background-color:#B0BED9}table.dataTable.display tbody>tr.odd.selected,table.dataTable.display tbody>tr.odd>.selected,table.dataTable.stripe tbody>tr.odd.selected,table.dataTable.stripe tbody>tr.odd>.selected{background-color:#acbad4}table.dataTable.display tbody>tr.selected:hover,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.hover tbody>tr.selected:hover,table.dataTable.hover tbody>tr>.selected:hover{background-color:#aab7d1}table.dataTable.display tbody>tr.selected>.sorting_1,table.dataTable.display tbody>tr.selected>.sorting_2,table.dataTable.display tbody>tr.selected>.sorting_3,table.dataTable.display tbody>tr>.selected,table.dataTable.order-column tbody>tr.selected>.sorting_1,table.dataTable.order-column tbody>tr.selected>.sorting_2,table.dataTable.order-column tbody>tr.selected>.sorting_3,table.dataTable.order-column tbody>tr>.selected{background-color:#acbad5}table.dataTable.display tbody>tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody>tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody>tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody>tr.odd>.selected,table.dataTable.order-column.stripe tbody>tr.odd>.selected{background-color:#a6b4cd}table.dataTable.display tbody>tr.even>.selected,table.dataTable.order-column.stripe tbody>tr.even>.selected{background-color:#acbad5}table.dataTable.display tbody>tr.selected:hover>.sorting_1,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody>tr.selected:hover>.sorting_2,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody>tr.selected:hover>.sorting_3,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_3{background-color:#a5b2cb}table.dataTable.display tbody>tr:hover>.selected,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.order-column.hover tbody>tr:hover>.selected,table.dataTable.order-column.hover tbody>tr>.selected:hover{background-color:#a2aec7}table.dataTable tbody td.select-checkbox,table.dataTable tbody th.select-checkbox{position:relative}table.dataTable tbody td.select-checkbox:after,table.dataTable tbody td.select-checkbox:before,table.dataTable tbody th.select-checkbox:after,table.dataTable tbody th.select-checkbox:before{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;-webkit-box-sizing:border-box;box-sizing:border-box}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody th.select-checkbox:before{content:' ';margin-top:4px;margin-left:-6px;border:1px solid #000;-webkit-border-radius:3px;border-radius:3px}table.dataTable tr.selected td.select-checkbox:after,table.dataTable tr.selected th.select-checkbox:after{content:'\2714';margin-top:0;margin-left:-4px;text-align:center;text-shadow:1px 1px #B0BED9,-1px -1px #B0BED9,1px -1px #B0BED9,-1px 1px #B0BED9}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:.5em}@media screen and (max-width:640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}
|
150
mdb/css/addons/datatables.css
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
/*
|
||||||
|
* MDBootstrap integration with Datatables
|
||||||
|
* Learn more: https://mdbootstrap.com/docs/jquery/tables/datatables/
|
||||||
|
* About MDBootstrap: https://mdbootstrap.com/
|
||||||
|
*
|
||||||
|
* This combined file was created by the DataTables downloader builder:
|
||||||
|
* https://datatables.net/download
|
||||||
|
*
|
||||||
|
* To rebuild or modify this file with the latest versions of the included
|
||||||
|
* software please visit:
|
||||||
|
* https://datatables.net/download/#bs4/dt-1.10.18
|
||||||
|
*
|
||||||
|
* Included libraries:
|
||||||
|
* DataTables 1.10.18
|
||||||
|
*/
|
||||||
|
table.dataTable thead {
|
||||||
|
cursor: pointer; }
|
||||||
|
table.dataTable thead > tr > th:active,
|
||||||
|
table.dataTable thead > tr > td:active {
|
||||||
|
outline: none; }
|
||||||
|
|
||||||
|
div.dataTables_wrapper div.dataTables_length.d-flex.flex-row label {
|
||||||
|
margin-top: 1.2rem;
|
||||||
|
margin-right: 1rem; }
|
||||||
|
|
||||||
|
div.dataTables_wrapper div.dataTables_length.d-flex.flex-row .select-wrapper.mdb-select span,
|
||||||
|
div.dataTables_wrapper div.dataTables_length.d-flex.flex-row .select-wrapper.mdb-select .select-dropdown {
|
||||||
|
margin-top: 1rem; }
|
||||||
|
|
||||||
|
div.dataTables_wrapper div.dataTables_length label, div.dataTables_wrapper div.dataTables_filter label {
|
||||||
|
text-align: left;
|
||||||
|
font-weight: normal;
|
||||||
|
padding-top: .5rem;
|
||||||
|
padding-bottom: .5rem; }
|
||||||
|
|
||||||
|
div.dataTables_wrapper div.dataTables_length select,
|
||||||
|
div.dataTables_wrapper div.dataTables_length input {
|
||||||
|
width: auto; }
|
||||||
|
|
||||||
|
div.dataTables_wrapper div.dataTables_filter {
|
||||||
|
text-align: right; }
|
||||||
|
div.dataTables_wrapper div.dataTables_filter select,
|
||||||
|
div.dataTables_wrapper div.dataTables_filter input {
|
||||||
|
width: auto; }
|
||||||
|
div.dataTables_wrapper div.dataTables_filter input {
|
||||||
|
margin-left: .5rem;
|
||||||
|
display: inline-block; }
|
||||||
|
|
||||||
|
div.dataTables_wrapper div.dataTables_info, div.dataTables_wrapper div.dataTables_paginate {
|
||||||
|
font-weight: normal;
|
||||||
|
padding-top: 1rem;
|
||||||
|
padding-bottom: 1rem; }
|
||||||
|
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate {
|
||||||
|
text-align: right;
|
||||||
|
margin: 0; }
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
|
||||||
|
-webkit-box-pack: end;
|
||||||
|
-webkit-justify-content: flex-end;
|
||||||
|
-ms-flex-pack: end;
|
||||||
|
justify-content: flex-end; }
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item.active .page-link:focus {
|
||||||
|
background-color: #4285f4; }
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item .page-link:focus {
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
box-shadow: none; }
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
div.dataTables_wrapper div .dataTables_length,
|
||||||
|
div.dataTables_wrapper div .dataTables_filter,
|
||||||
|
div.dataTables_wrapper div .dataTables_info,
|
||||||
|
div.dataTables_wrapper div .dataTables_paginate ul.pagination {
|
||||||
|
text-align: center;
|
||||||
|
-webkit-box-pack: center;
|
||||||
|
-webkit-justify-content: center;
|
||||||
|
-ms-flex-pack: center;
|
||||||
|
justify-content: center; } }
|
||||||
|
|
||||||
|
.bs-select select {
|
||||||
|
display: inline-block !important; }
|
||||||
|
|
||||||
|
table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,
|
||||||
|
table.dataTable thead > tr > td.sorting_asc,
|
||||||
|
table.dataTable thead > tr > td.sorting_desc,
|
||||||
|
table.dataTable thead > tr > td.sorting {
|
||||||
|
padding-right: 30px; }
|
||||||
|
|
||||||
|
table.dataTable thead > tr > th:active,
|
||||||
|
table.dataTable thead > tr > td:active {
|
||||||
|
outline: none; }
|
||||||
|
|
||||||
|
table.dataTable thead .sorting,
|
||||||
|
table.dataTable thead .sorting_asc,
|
||||||
|
table.dataTable thead .sorting_desc,
|
||||||
|
table.dataTable thead .sorting_asc_disabled,
|
||||||
|
table.dataTable thead .sorting_desc_disabled {
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative; }
|
||||||
|
|
||||||
|
table.dataTable thead .sorting:before, table.dataTable thead .sorting:after,
|
||||||
|
table.dataTable thead .sorting_asc:before,
|
||||||
|
table.dataTable thead .sorting_asc:after,
|
||||||
|
table.dataTable thead .sorting_desc:before,
|
||||||
|
table.dataTable thead .sorting_desc:after,
|
||||||
|
table.dataTable thead .sorting_asc_disabled:before,
|
||||||
|
table.dataTable thead .sorting_asc_disabled:after,
|
||||||
|
table.dataTable thead .sorting_desc_disabled:before,
|
||||||
|
table.dataTable thead .sorting_desc_disabled:after {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0.9em;
|
||||||
|
display: block;
|
||||||
|
opacity: 0.3; }
|
||||||
|
|
||||||
|
table.dataTable thead .sorting:before,
|
||||||
|
table.dataTable thead .sorting_asc:before,
|
||||||
|
table.dataTable thead .sorting_desc:before,
|
||||||
|
table.dataTable thead .sorting_asc_disabled:before,
|
||||||
|
table.dataTable thead .sorting_desc_disabled:before {
|
||||||
|
right: 1em;
|
||||||
|
content: "\f0de"; }
|
||||||
|
|
||||||
|
table.dataTable thead .sorting:after,
|
||||||
|
table.dataTable thead .sorting_asc:after,
|
||||||
|
table.dataTable thead .sorting_desc:after,
|
||||||
|
table.dataTable thead .sorting_asc_disabled:after,
|
||||||
|
table.dataTable thead .sorting_desc_disabled:after {
|
||||||
|
content: "\f0dd";
|
||||||
|
right: 16px; }
|
||||||
|
|
||||||
|
table.dataTable thead .sorting:before,
|
||||||
|
table.dataTable thead .sorting_asc:before,
|
||||||
|
table.dataTable thead .sorting_desc:before,
|
||||||
|
table.dataTable thead .sorting_asc_disabled:before,
|
||||||
|
table.dataTable thead .sorting_desc_disabled:before,
|
||||||
|
table.dataTable thead .sorting:after,
|
||||||
|
table.dataTable thead .sorting_asc:after,
|
||||||
|
table.dataTable thead .sorting_desc:after,
|
||||||
|
table.dataTable thead .sorting_asc_disabled:after,
|
||||||
|
table.dataTable thead .sorting_desc_disabled:after {
|
||||||
|
font-family: 'Font Awesome\ 5 Free';
|
||||||
|
font-weight: 900;
|
||||||
|
font-size: 1rem; }
|
||||||
|
|
||||||
|
table.dataTable thead .sorting_asc:before,
|
||||||
|
table.dataTable thead .sorting_desc:after {
|
||||||
|
opacity: 1; }
|
||||||
|
|
||||||
|
table.dataTable thead .sorting_asc_disabled:before,
|
||||||
|
table.dataTable thead .sorting_desc_disabled:after {
|
||||||
|
opacity: 0; }
|
1
mdb/css/addons/datatables.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter select,div.dataTables_wrapper div.dataTables_length input,div.dataTables_wrapper div.dataTables_length select{width:auto}table.dataTable thead{cursor:pointer}div.dataTables_wrapper div.dataTables_length.d-flex.flex-row label{margin-top:1.2rem;margin-right:1rem}div.dataTables_wrapper div.dataTables_length.d-flex.flex-row .select-wrapper.mdb-select .select-dropdown,div.dataTables_wrapper div.dataTables_length.d-flex.flex-row .select-wrapper.mdb-select span{margin-top:1rem}div.dataTables_wrapper div.dataTables_filter label,div.dataTables_wrapper div.dataTables_length label{text-align:left;font-weight:400;padding-top:.5rem;padding-bottom:.5rem}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5rem;display:inline-block}div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{font-weight:400;padding-top:1rem;padding-bottom:1rem}div.dataTables_wrapper div.dataTables_paginate{text-align:right;margin:0}div.dataTables_wrapper div.dataTables_paginate ul.pagination{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item.active .page-link:focus{background-color:#4285f4}div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item .page-link:focus{-webkit-box-shadow:none;box-shadow:none}@media (max-width:767px){div.dataTables_wrapper div .dataTables_filter,div.dataTables_wrapper div .dataTables_info,div.dataTables_wrapper div .dataTables_length,div.dataTables_wrapper div .dataTables_paginate ul.pagination{text-align:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}}.bs-select select{display:inline-block!important}table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc{padding-right:30px}table.dataTable thead>tr>td:active,table.dataTable thead>tr>th:active{outline:0}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc_disabled:after,table.dataTable thead .sorting_desc_disabled:before{position:absolute;bottom:.9em;display:block;opacity:.3;font-family:'Font Awesome\ 5 Free';font-weight:900;font-size:1rem}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"\f0de"}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_desc_disabled:after{content:"\f0dd";right:16px}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0}
|
32
mdb/css/addons/directives.css
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
.opacity-0 {
|
||||||
|
opacity: 0; }
|
||||||
|
|
||||||
|
.opacity-10 {
|
||||||
|
opacity: 0.1; }
|
||||||
|
|
||||||
|
.opacity-20 {
|
||||||
|
opacity: 0.2; }
|
||||||
|
|
||||||
|
.opacity-30 {
|
||||||
|
opacity: 0.3; }
|
||||||
|
|
||||||
|
.opacity-40 {
|
||||||
|
opacity: 0.4; }
|
||||||
|
|
||||||
|
.opacity-50 {
|
||||||
|
opacity: 0.5; }
|
||||||
|
|
||||||
|
.opacity-60 {
|
||||||
|
opacity: 0.6; }
|
||||||
|
|
||||||
|
.opacity-70 {
|
||||||
|
opacity: 0.7; }
|
||||||
|
|
||||||
|
.opacity-80 {
|
||||||
|
opacity: 0.8; }
|
||||||
|
|
||||||
|
.opacity-90 {
|
||||||
|
opacity: 0.9; }
|
||||||
|
|
||||||
|
.opacity-100 {
|
||||||
|
opacity: 1; }
|
1
mdb/css/addons/directives.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-20{opacity:.2}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}
|
1036
mdb/css/addons/flag.css
Normal file
9
mdb/css/addons/flag.min.css
vendored
Normal file
23
mdb/css/addons/rating.css
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
.mdb-rating .rate-popover {
|
||||||
|
color: grey; }
|
||||||
|
|
||||||
|
.mdb-rating .live {
|
||||||
|
color: black; }
|
||||||
|
|
||||||
|
.mdb-rating .oneStar {
|
||||||
|
color: #44370f; }
|
||||||
|
|
||||||
|
.mdb-rating .twoStars {
|
||||||
|
color: #96781e; }
|
||||||
|
|
||||||
|
.mdb-rating .threeStars {
|
||||||
|
color: #e2b52e; }
|
||||||
|
|
||||||
|
.mdb-rating .fourStars {
|
||||||
|
color: #f1ba12; }
|
||||||
|
|
||||||
|
.mdb-rating .fiveStars {
|
||||||
|
color: #f3cb06; }
|
||||||
|
|
||||||
|
.mdb-rating .amber-text {
|
||||||
|
color: #ffc107 !important; }
|
1
mdb/css/addons/rating.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.mdb-rating .rate-popover{color:grey}.mdb-rating .live{color:#000}.mdb-rating .oneStar{color:#44370f}.mdb-rating .twoStars{color:#96781e}.mdb-rating .threeStars{color:#e2b52e}.mdb-rating .fourStars{color:#f1ba12}.mdb-rating .fiveStars{color:#f3cb06}.mdb-rating .amber-text{color:#ffc107!important}
|
62
mdb/css/addons/zmd.hierarchical-display.css
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
/*!
|
||||||
|
* Material Design Hierarchical Display by Sergey Kupletsky (@zavoloklom) - https://github.com/zavoloklom/material-design-hierarchical-display/
|
||||||
|
* License - https://github.com/zavoloklom/material-design-hierarchical-display/blob/master/LICENSE (MIT License)
|
||||||
|
*/
|
||||||
|
.zmd-hierarchical-display {
|
||||||
|
visibility: hidden; }
|
||||||
|
.zmd-hierarchical-display.in {
|
||||||
|
visibility: visible; }
|
||||||
|
|
||||||
|
.zmd-hierarchical-displaying {
|
||||||
|
visibility: visible; }
|
||||||
|
|
||||||
|
.animation {
|
||||||
|
-webkit-animation-duration: 1s;
|
||||||
|
animation-duration: 1s;
|
||||||
|
-webkit-animation-fill-mode: both;
|
||||||
|
animation-fill-mode: both; }
|
||||||
|
|
||||||
|
.animation.zoomedIn,
|
||||||
|
.animation.zoomedOut {
|
||||||
|
-webkit-animation-timing-function: cubic-bezier(0.55, 0, 0.1, 1);
|
||||||
|
animation-timing-function: cubic-bezier(0.55, 0, 0.1, 1); }
|
||||||
|
|
||||||
|
@-webkit-keyframes zoomedIn {
|
||||||
|
from {
|
||||||
|
-webkit-transform: scale(0);
|
||||||
|
transform: scale(0); }
|
||||||
|
to {
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
transform: scale(1); } }
|
||||||
|
|
||||||
|
@keyframes zoomedIn {
|
||||||
|
from {
|
||||||
|
-webkit-transform: scale(0);
|
||||||
|
transform: scale(0); }
|
||||||
|
to {
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
transform: scale(1); } }
|
||||||
|
|
||||||
|
@-webkit-keyframes zoomedOut {
|
||||||
|
from {
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
transform: scale(1); }
|
||||||
|
to {
|
||||||
|
-webkit-transform: scale(0);
|
||||||
|
transform: scale(0); } }
|
||||||
|
|
||||||
|
@keyframes zoomedOut {
|
||||||
|
from {
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
transform: scale(1); }
|
||||||
|
to {
|
||||||
|
-webkit-transform: scale(0);
|
||||||
|
transform: scale(0); } }
|
||||||
|
|
||||||
|
.zoomedIn {
|
||||||
|
-webkit-animation-name: zoomedIn;
|
||||||
|
animation-name: zoomedIn; }
|
||||||
|
|
||||||
|
.zoomedOut {
|
||||||
|
-webkit-animation-name: zoomedOut;
|
||||||
|
animation-name: zoomedOut; }
|
4
mdb/css/addons/zmd.hierarchical-display.min.css
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
/*!
|
||||||
|
* Material Design Hierarchical Display by Sergey Kupletsky (@zavoloklom) - https://github.com/zavoloklom/material-design-hierarchical-display/
|
||||||
|
* License - https://github.com/zavoloklom/material-design-hierarchical-display/blob/master/LICENSE (MIT License)
|
||||||
|
*/.zmd-hierarchical-display{visibility:hidden}.zmd-hierarchical-display.in{visibility:visible}.zmd-hierarchical-displaying{visibility:visible}.animation{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animation.zoomedIn,.animation.zoomedOut{-webkit-animation-timing-function:cubic-bezier(.55,0,.1,1);animation-timing-function:cubic-bezier(.55,0,.1,1)}@-webkit-keyframes zoomedIn{from{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes zoomedIn{from{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomedOut{from{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(0);transform:scale(0)}}@keyframes zoomedOut{from{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(0);transform:scale(0)}}.zoomedIn{-webkit-animation-name:zoomedIn;animation-name:zoomedIn}.zoomedOut{-webkit-animation-name:zoomedOut;animation-name:zoomedOut}
|
10038
mdb/css/bootstrap.css
vendored
Normal file
7
mdb/css/bootstrap.min.css
vendored
Normal file
8464
mdb/css/mdb.css
Normal file
6144
mdb/css/mdb.lite.css
Normal file
38
mdb/css/mdb.lite.min.css
vendored
Normal file
44
mdb/css/mdb.min.css
vendored
Normal file
2324
mdb/css/modules/animations-extended.css
Normal file
7
mdb/css/modules/animations-extended.min.css
vendored
Normal file
0
mdb/css/style.min.css
vendored
Normal file
BIN
mdb/font/roboto/Roboto-Bold.eot
Normal file
BIN
mdb/font/roboto/Roboto-Bold.ttf
Normal file
BIN
mdb/font/roboto/Roboto-Bold.woff
Normal file
BIN
mdb/font/roboto/Roboto-Bold.woff2
Normal file
BIN
mdb/font/roboto/Roboto-Light.eot
Normal file
BIN
mdb/font/roboto/Roboto-Light.ttf
Normal file
BIN
mdb/font/roboto/Roboto-Light.woff
Normal file
BIN
mdb/font/roboto/Roboto-Light.woff2
Normal file
BIN
mdb/font/roboto/Roboto-Medium.eot
Normal file
BIN
mdb/font/roboto/Roboto-Medium.ttf
Normal file
BIN
mdb/font/roboto/Roboto-Medium.woff
Normal file
BIN
mdb/font/roboto/Roboto-Medium.woff2
Normal file
BIN
mdb/font/roboto/Roboto-Regular.eot
Normal file
BIN
mdb/font/roboto/Roboto-Regular.ttf
Normal file
BIN
mdb/font/roboto/Roboto-Regular.woff
Normal file
BIN
mdb/font/roboto/Roboto-Regular.woff2
Normal file
BIN
mdb/font/roboto/Roboto-Thin.eot
Normal file
BIN
mdb/font/roboto/Roboto-Thin.ttf
Normal file
BIN
mdb/font/roboto/Roboto-Thin.woff
Normal file
BIN
mdb/font/roboto/Roboto-Thin.woff2
Normal file
BIN
mdb/img/flags.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
mdb/img/lightbox/default-skin.png
Normal file
After Width: | Height: | Size: 547 B |
1
mdb/img/lightbox/default-skin.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg width="264" height="88" viewBox="0 0 264 88" xmlns="http://www.w3.org/2000/svg"><title>default-skin 2</title><g fill="none" fill-rule="evenodd"><g><path d="M67.002 59.5v3.768c-6.307.84-9.184 5.75-10.002 9.732 2.22-2.83 5.564-5.098 10.002-5.098V71.5L73 65.585 67.002 59.5z" id="Shape" fill="#fff"/><g fill="#fff"><path d="M13 29v-5h2v3h3v2h-5zM13 15h5v2h-3v3h-2v-5zM31 15v5h-2v-3h-3v-2h5zM31 29h-5v-2h3v-3h2v5z" id="Shape"/></g><g fill="#fff"><path d="M62 24v5h-2v-3h-3v-2h5zM62 20h-5v-2h3v-3h2v5zM70 20v-5h2v3h3v2h-5zM70 24h5v2h-3v3h-2v-5z"/></g><path d="M20.586 66l-5.656-5.656 1.414-1.414L22 64.586l5.656-5.656 1.414 1.414L23.414 66l5.656 5.656-1.414 1.414L22 67.414l-5.656 5.656-1.414-1.414L20.586 66z" fill="#fff"/><path d="M111.785 65.03L110 63.5l3-3.5h-10v-2h10l-3-3.5 1.785-1.468L117 59l-5.215 6.03z" fill="#fff"/><path d="M152.215 65.03L154 63.5l-3-3.5h10v-2h-10l3-3.5-1.785-1.468L147 59l5.215 6.03z" fill="#fff"/><g><path id="Rectangle-11" fill="#fff" d="M160.957 28.543l-3.25-3.25-1.413 1.414 3.25 3.25z"/><path d="M152.5 27c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5-5.5 2.462-5.5 5.5 2.462 5.5 5.5 5.5z" id="Oval-1" stroke="#fff" stroke-width="1.5"/><path fill="#fff" d="M150 21h5v1h-5z"/></g><g><path d="M116.957 28.543l-1.414 1.414-3.25-3.25 1.414-1.414 3.25 3.25z" fill="#fff"/><path d="M108.5 27c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5-5.5 2.462-5.5 5.5 2.462 5.5 5.5 5.5z" stroke="#fff" stroke-width="1.5"/><path fill="#fff" d="M106 21h5v1h-5z"/><path fill="#fff" d="M109.043 19.008l-.085 5-1-.017.085-5z"/></g></g></g></svg>
|
After Width: | Height: | Size: 1.5 KiB |
BIN
mdb/img/lightbox/preloader.gif
Normal file
After Width: | Height: | Size: 866 B |
BIN
mdb/img/overlays/01.png
Normal file
After Width: | Height: | Size: 211 B |
BIN
mdb/img/overlays/02.png
Normal file
After Width: | Height: | Size: 213 B |
BIN
mdb/img/overlays/03.png
Normal file
After Width: | Height: | Size: 209 B |
BIN
mdb/img/overlays/04.png
Normal file
After Width: | Height: | Size: 211 B |
BIN
mdb/img/overlays/05.png
Normal file
After Width: | Height: | Size: 213 B |
BIN
mdb/img/overlays/06.png
Normal file
After Width: | Height: | Size: 211 B |
BIN
mdb/img/overlays/07.png
Normal file
After Width: | Height: | Size: 215 B |
BIN
mdb/img/overlays/08.png
Normal file
After Width: | Height: | Size: 146 B |
BIN
mdb/img/overlays/09.png
Normal file
After Width: | Height: | Size: 137 B |
BIN
mdb/img/sample.jpg
Normal file
After Width: | Height: | Size: 200 KiB |
4
mdb/img/svg/arrow_left.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg fill="#FFFFFF" height="36" viewBox="0 0 24 24" width="36" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"/>
|
||||||
|
<path d="M0-.5h24v24H0z" fill="none"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 218 B |
4
mdb/img/svg/arrow_right.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg fill="#FFFFFF" height="36" viewBox="0 0 24 24" width="36" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"/>
|
||||||
|
<path d="M0-.25h24v24H0z" fill="none"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 217 B |
BIN
mdb/img/svg/flags.png
Normal file
After Width: | Height: | Size: 28 KiB |
46
mdb/index.html
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Material Design Bootstrap</title>
|
||||||
|
<!-- Font Awesome -->
|
||||||
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css">
|
||||||
|
<!-- Bootstrap core CSS -->
|
||||||
|
<link href="css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<!-- Material Design Bootstrap -->
|
||||||
|
<link href="css/mdb.min.css" rel="stylesheet">
|
||||||
|
<!-- Your custom styles (optional) -->
|
||||||
|
<link href="css/style.css" rel="stylesheet">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- Start your project here-->
|
||||||
|
<div style="height: 100vh">
|
||||||
|
<div class="flex-center flex-column">
|
||||||
|
|
||||||
|
<h1 class="text-hide animated fadeIn mb-4"
|
||||||
|
style="background-image: url('https://mdbootstrap.com/img/logo/mdb-transparent-250px.png'); width: 250px; height: 90px;">
|
||||||
|
MDBootstrap</h1>
|
||||||
|
<h5 class="animated fadeIn mb-3">Thank you for using our product. We're glad you're with us.</h5>
|
||||||
|
|
||||||
|
<p class="animated fadeIn text-muted">MDB Team</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start your project here-->
|
||||||
|
|
||||||
|
<!-- SCRIPTS -->
|
||||||
|
<!-- JQuery -->
|
||||||
|
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
|
||||||
|
<!-- Bootstrap tooltips -->
|
||||||
|
<script type="text/javascript" src="js/popper.min.js"></script>
|
||||||
|
<!-- Bootstrap core JavaScript -->
|
||||||
|
<script type="text/javascript" src="js/bootstrap.min.js"></script>
|
||||||
|
<!-- MDB core JavaScript -->
|
||||||
|
<script type="text/javascript" src="js/mdb.min.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
1180
mdb/js/addons/datatables-select.js
Normal file
5
mdb/js/addons/datatables-select.min.js
vendored
Normal file
15500
mdb/js/addons/datatables.js
Normal file
3
mdb/js/addons/datatables.min.js
vendored
Normal file
7
mdb/js/addons/imagesloaded.pkgd.min.js
vendored
Normal file
176
mdb/js/addons/jquery.zmd.hierarchical-display.js
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
/* ========================================================================
|
||||||
|
* Zavoloklom Material Design: jquery.zmd.hierarchical-display.js
|
||||||
|
* http://zavoloklom.github.io/material-design-hierarchical-display/
|
||||||
|
* ========================================================================
|
||||||
|
* Copyright 2014 Zavoloklom.
|
||||||
|
* Licensed under MIT (https://github.com/zavoloklom/material-design-hierarchical-display/blob/master/LICENSE)
|
||||||
|
* ======================================================================== */
|
||||||
|
|
||||||
|
(function ($) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// CLASS DEFINITION
|
||||||
|
// ======================
|
||||||
|
var HDisplay = function (element, options) {
|
||||||
|
this.$element = $(element);
|
||||||
|
this.$children = this.$element.children();
|
||||||
|
this.options = $.extend({}, HDisplay.DEFAULTS, options);
|
||||||
|
this._time = HDisplay.TRANSITION_DURATION * this.options.speed;
|
||||||
|
|
||||||
|
this.init();
|
||||||
|
if (this.options.debug === true) this._debug();
|
||||||
|
};
|
||||||
|
|
||||||
|
HDisplay.VERSION = '1.0.1';
|
||||||
|
|
||||||
|
HDisplay.TRANSITION_DURATION = 300;
|
||||||
|
|
||||||
|
HDisplay.DEFAULTS = {
|
||||||
|
action: 'show',
|
||||||
|
speed: 5,
|
||||||
|
animationIn: 'zoomedIn',
|
||||||
|
animationOut: 'zoomedOut',
|
||||||
|
debug: false
|
||||||
|
};
|
||||||
|
|
||||||
|
HDisplay.prototype.init = function () {
|
||||||
|
var self = this;
|
||||||
|
var parentElement = this.$element;
|
||||||
|
var children = this.$children;
|
||||||
|
var options = this.options;
|
||||||
|
var time = this._time;
|
||||||
|
var elementOffset, calculatedOffset, elemDelay;
|
||||||
|
|
||||||
|
parentElement.addClass('zmd-hierarchical-display');
|
||||||
|
|
||||||
|
children.each(function () {
|
||||||
|
elementOffset = $(this).position();
|
||||||
|
calculatedOffset = elementOffset.left * 0.8 + elementOffset.top;
|
||||||
|
elemDelay = parseFloat(calculatedOffset / time).toFixed(2);
|
||||||
|
$(this)
|
||||||
|
.css("-webkit-animation-delay", elemDelay + 's')
|
||||||
|
.css("animation-delay", elemDelay + 's');
|
||||||
|
});
|
||||||
|
|
||||||
|
this._delay = elemDelay;
|
||||||
|
|
||||||
|
// Call complete function after animation on last children element ends
|
||||||
|
children.last().on('webkitAnimationEnd animationend', function(){
|
||||||
|
if ($(this).hasClass(options.animationOut)) {self._complete('hidden');}
|
||||||
|
if ($(this).hasClass(options.animationIn)) {self._complete('shown');}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
HDisplay.prototype.show = function () {
|
||||||
|
var parentElement = this.$element;
|
||||||
|
var children = this.$children;
|
||||||
|
var options = this.options;
|
||||||
|
|
||||||
|
if (parentElement.hasClass('in') || parentElement.hasClass('zmd-hierarchical-displaying')) return;
|
||||||
|
|
||||||
|
this._removeAnimations();
|
||||||
|
|
||||||
|
parentElement.trigger($.Event('show.zmd.hierarchicalDisplay'));
|
||||||
|
|
||||||
|
this._addAnimation(options.animationIn);
|
||||||
|
};
|
||||||
|
|
||||||
|
HDisplay.prototype.hide = function () {
|
||||||
|
var parentElement = this.$element;
|
||||||
|
var children = this.$children;
|
||||||
|
var options = this.options;
|
||||||
|
|
||||||
|
if (parentElement.css('visibility') === 'hidden' || parentElement.hasClass('zmd-hierarchical-displaying')) return;
|
||||||
|
|
||||||
|
this._removeAnimations();
|
||||||
|
|
||||||
|
parentElement.trigger($.Event('hide.zmd.hierarchicalDisplay'));
|
||||||
|
|
||||||
|
this._addAnimation(options.animationOut);
|
||||||
|
};
|
||||||
|
|
||||||
|
HDisplay.prototype.toggle = function () {
|
||||||
|
if (this.$element.hasClass('in')) {return this.hide();}
|
||||||
|
return this.show();
|
||||||
|
};
|
||||||
|
|
||||||
|
HDisplay.prototype._removeAnimations = function () {
|
||||||
|
var options = this.options;
|
||||||
|
this.$children.each(function () {
|
||||||
|
$(this)
|
||||||
|
.removeClass(options.animationIn)
|
||||||
|
.removeClass(options.animationOut);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
HDisplay.prototype._addAnimation = function (animation) {
|
||||||
|
this.$element.addClass('zmd-hierarchical-displaying');
|
||||||
|
this.$children.each(function () {
|
||||||
|
$(this)
|
||||||
|
.addClass(animation)
|
||||||
|
.addClass('animation');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
HDisplay.prototype._complete = function (eventName) {
|
||||||
|
this.$element
|
||||||
|
.removeClass('zmd-hierarchical-displaying')
|
||||||
|
.toggleClass('in')
|
||||||
|
.trigger($.Event(eventName+'.zmd.hierarchicalDisplay'));
|
||||||
|
};
|
||||||
|
|
||||||
|
HDisplay.prototype._debug = function () {
|
||||||
|
$(document)
|
||||||
|
.on('show.zmd.hierarchicalDisplay', function (e) {
|
||||||
|
console.log('Event "show.zmd.hierarchicalDisplay". For more information see:');
|
||||||
|
console.log(e);
|
||||||
|
})
|
||||||
|
.on('shown.zmd.hierarchicalDisplay', function (e) {
|
||||||
|
console.log('Event "shown.zmd.hierarchicalDisplay". For more information see:');
|
||||||
|
console.log(e);
|
||||||
|
})
|
||||||
|
.on('hide.zmd.hierarchicalDisplay', function (e) {
|
||||||
|
console.log('Event "hide.zmd.hierarchicalDisplay". For more information see:');
|
||||||
|
console.log(e);
|
||||||
|
})
|
||||||
|
.on('hidden.zmd.hierarchicalDisplay', function (e) {
|
||||||
|
console.log('Event "hidden.zmd.hierarchicalDisplay". For more information see:');
|
||||||
|
console.log(e);
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// PLUGIN DEFINITION
|
||||||
|
// =======================
|
||||||
|
function Plugin(settings) {
|
||||||
|
return this.each(function () {
|
||||||
|
var $this = $(this);
|
||||||
|
var data = $this.data('zmd.hierarchicalDisplay');
|
||||||
|
var options = $.extend({}, HDisplay.DEFAULTS, $this.data(), typeof settings === 'object' && settings);
|
||||||
|
|
||||||
|
if (!data) {$this.data('zmd.hierarchicalDisplay', (data = new HDisplay(this, options)));}
|
||||||
|
if (typeof settings === 'string') {return data[settings]();}
|
||||||
|
if (options.action in data) {return data[options.action]();}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$.fn.hierarchicalDisplay = Plugin;
|
||||||
|
$.fn.hierarchicalDisplay.Constructor = HDisplay;
|
||||||
|
|
||||||
|
// DATA-API
|
||||||
|
// ==============
|
||||||
|
$(document).on('ready', function () {
|
||||||
|
$('[data-animation="hierarchical-display"]').each(function () {
|
||||||
|
Plugin.call($(this));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
$(document).on('click', '[data-toggle="hierarchical-display"]', function (e) {
|
||||||
|
var $this = $(this);
|
||||||
|
var $target = $($this.attr('data-target') || $this.attr('href'));
|
||||||
|
|
||||||
|
if ($this.is('a')) e.preventDefault();
|
||||||
|
|
||||||
|
Plugin.call($target, 'toggle');
|
||||||
|
});
|
||||||
|
|
||||||
|
})(jQuery);
|
1
mdb/js/addons/jquery.zmd.hierarchical-display.min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
(function(i){"use strict";function t(t){return this.each(function(){var a=i(this),e=a.data("zmd.hierarchicalDisplay"),o=i.extend({},n.DEFAULTS,a.data(),"object"==typeof t&&t);return e||a.data("zmd.hierarchicalDisplay",e=new n(this,o)),"string"==typeof t?e[t]():o.action in e?e[o.action]():void 0})}var n=function(t,a){this.$element=i(t),this.$children=this.$element.children(),this.options=i.extend({},n.DEFAULTS,a),this._time=n.TRANSITION_DURATION*this.options.speed,this.init(),!0===this.options.debug&&this._debug()};n.VERSION="1.0.1",n.TRANSITION_DURATION=300,n.DEFAULTS={action:"show",speed:5,animationIn:"zoomedIn",animationOut:"zoomedOut",debug:!1},n.prototype.init=function(){var t,n,a,e=this,o=this.$element,s=this.$children,h=this.options,l=this._time;o.addClass("zmd-hierarchical-display"),s.each(function(){t=i(this).position(),n=.8*t.left+t.top,a=parseFloat(n/l).toFixed(2),i(this).css("-webkit-animation-delay",a+"s").css("animation-delay",a+"s")}),this._delay=a,s.last().on("webkitAnimationEnd animationend",function(){i(this).hasClass(h.animationOut)&&e._complete("hidden"),i(this).hasClass(h.animationIn)&&e._complete("shown")})},n.prototype.show=function(){var t=this.$element,n=(this.$children,this.options);t.hasClass("in")||t.hasClass("zmd-hierarchical-displaying")||(this._removeAnimations(),t.trigger(i.Event("show.zmd.hierarchicalDisplay")),this._addAnimation(n.animationIn))},n.prototype.hide=function(){var t=this.$element,n=(this.$children,this.options);"hidden"===t.css("visibility")||t.hasClass("zmd-hierarchical-displaying")||(this._removeAnimations(),t.trigger(i.Event("hide.zmd.hierarchicalDisplay")),this._addAnimation(n.animationOut))},n.prototype.toggle=function(){return this.$element.hasClass("in")?this.hide():this.show()},n.prototype._removeAnimations=function(){var t=this.options;this.$children.each(function(){i(this).removeClass(t.animationIn).removeClass(t.animationOut)})},n.prototype._addAnimation=function(t){this.$element.addClass("zmd-hierarchical-displaying"),this.$children.each(function(){i(this).addClass(t).addClass("animation")})},n.prototype._complete=function(t){this.$element.removeClass("zmd-hierarchical-displaying").toggleClass("in").trigger(i.Event(t+".zmd.hierarchicalDisplay"))},n.prototype._debug=function(){i(document).on("show.zmd.hierarchicalDisplay",function(i){console.log('Event "show.zmd.hierarchicalDisplay". For more information see:'),console.log(i)}).on("shown.zmd.hierarchicalDisplay",function(i){console.log('Event "shown.zmd.hierarchicalDisplay". For more information see:'),console.log(i)}).on("hide.zmd.hierarchicalDisplay",function(i){console.log('Event "hide.zmd.hierarchicalDisplay". For more information see:'),console.log(i)}).on("hidden.zmd.hierarchicalDisplay",function(i){console.log('Event "hidden.zmd.hierarchicalDisplay". For more information see:'),console.log(i)})},i.fn.hierarchicalDisplay=t,i.fn.hierarchicalDisplay.Constructor=n,i(document).on("ready",function(){i('[data-animation="hierarchical-display"]').each(function(){t.call(i(this))})}),i(document).on("click",'[data-toggle="hierarchical-display"]',function(n){var a=i(this),e=i(a.attr("data-target")||a.attr("href"));a.is("a")&&n.preventDefault(),t.call(e,"toggle")})})(jQuery);
|
9
mdb/js/addons/masonry.pkgd.min.js
vendored
Normal file
31
mdb/js/addons/progressBar.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
(function ($) {
|
||||||
|
$.fn.progressBar = function (givenValue) {
|
||||||
|
const $this = $(this);
|
||||||
|
|
||||||
|
function init(selector) {
|
||||||
|
const progressValue = selector.children().attr('aria-valuenow');
|
||||||
|
selector.children().width(`${progressValue}%`);
|
||||||
|
selector.children().html('<span></span>');
|
||||||
|
$this.hasClass('md-progress') ? selector.children().children().addClass('md-progress-bar-text') : selector.children().children().addClass('progress-bar-text');
|
||||||
|
(progressValue !== 100) ? selector.children().children().text(`${progressValue}%`) : selector.children().children().html('<i class="fas fa-check"></i>');
|
||||||
|
}
|
||||||
|
|
||||||
|
function set(selector, value) {
|
||||||
|
selector.children().removeClass('success fail active');
|
||||||
|
selector.children().attr('aria-valuenow', value);
|
||||||
|
init(selector);
|
||||||
|
if (value > 100) {
|
||||||
|
return false;
|
||||||
|
} else if (value === 100) {
|
||||||
|
selector.children().addClass('success');
|
||||||
|
} else if (value < 30) {
|
||||||
|
selector.children().addClass('fail');
|
||||||
|
} else {
|
||||||
|
selector.children().addClass('active');
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
set($this, givenValue);
|
||||||
|
};
|
||||||
|
}(jQuery));
|
4
mdb/js/addons/progressBar.min.js
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
(function($){$.fn.progressBar=function(givenValue){const $this=$(this);function init(selector){const progressValue=selector.children().attr('aria-valuenow');selector.children().width(`${progressValue}%`);selector.children().html('<span></span>');$this.hasClass('md-progress')?selector.children().children().addClass('md-progress-bar-text'):selector.children().children().addClass('progress-bar-text');(progressValue!==100)?selector.children().children().text(`${progressValue}%`):selector.children().children().html('<i class="fas fa-check"></i>')}
|
||||||
|
function set(selector,value){selector.children().removeClass('success fail active');selector.children().attr('aria-valuenow',value);init(selector);if(value>100){return!1}else if(value===100){selector.children().addClass('success')}else if(value<30){selector.children().addClass('fail')}else{selector.children().addClass('active')}
|
||||||
|
return!0}
|
||||||
|
set($this,givenValue)}}(jQuery))
|
121
mdb/js/addons/rating.js
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
(function ($) {
|
||||||
|
$.fn.mdbRate = function () {
|
||||||
|
var $stars;
|
||||||
|
// Custom whitelist to allow for using HTML tags in popover content
|
||||||
|
var myDefaultWhiteList = $.fn.tooltip.Constructor.Default.whiteList
|
||||||
|
myDefaultWhiteList.textarea = [];
|
||||||
|
myDefaultWhiteList.button = [];
|
||||||
|
|
||||||
|
var $container = $(this);
|
||||||
|
|
||||||
|
var titles = ['Very bad', 'Poor', 'OK', 'Good', 'Excellent'];
|
||||||
|
|
||||||
|
for (var i = 0; i < 5; i++) {
|
||||||
|
$container.append(`<i class="py-2 px-1 rate-popover" data-index="${i}" data-html="true" data-toggle="popover"
|
||||||
|
data-placement="top" title="${titles[i]}"></i>`);
|
||||||
|
}
|
||||||
|
|
||||||
|
$stars = $container.children();
|
||||||
|
|
||||||
|
if ($container.hasClass('rating-faces')) {
|
||||||
|
$stars.addClass('far fa-meh-blank');
|
||||||
|
} else if ($container.hasClass('empty-stars')) {
|
||||||
|
$stars.addClass('far fa-star');
|
||||||
|
} else {
|
||||||
|
$stars.addClass('fas fa-star');
|
||||||
|
}
|
||||||
|
|
||||||
|
$stars.on('mouseover', function () {
|
||||||
|
var index = $(this).attr('data-index');
|
||||||
|
markStarsAsActive(index);
|
||||||
|
});
|
||||||
|
|
||||||
|
function markStarsAsActive(index) {
|
||||||
|
unmarkActive();
|
||||||
|
|
||||||
|
for (var i = 0; i <= index; i++) {
|
||||||
|
|
||||||
|
if ($container.hasClass('rating-faces')) {
|
||||||
|
$($stars.get(i)).removeClass('fa-meh-blank');
|
||||||
|
$($stars.get(i)).addClass('live');
|
||||||
|
|
||||||
|
switch (index) {
|
||||||
|
case '0':
|
||||||
|
$($stars.get(i)).addClass('fa-angry');
|
||||||
|
break;
|
||||||
|
case '1':
|
||||||
|
$($stars.get(i)).addClass('fa-frown');
|
||||||
|
break;
|
||||||
|
case '2':
|
||||||
|
$($stars.get(i)).addClass('fa-meh');
|
||||||
|
break;
|
||||||
|
case '3':
|
||||||
|
$($stars.get(i)).addClass('fa-smile');
|
||||||
|
break;
|
||||||
|
case '4':
|
||||||
|
$($stars.get(i)).addClass('fa-laugh');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if ($container.hasClass('empty-stars')) {
|
||||||
|
$($stars.get(i)).addClass('fas');
|
||||||
|
switch (index) {
|
||||||
|
case '0':
|
||||||
|
$($stars.get(i)).addClass('oneStar');
|
||||||
|
break;
|
||||||
|
case '1':
|
||||||
|
$($stars.get(i)).addClass('twoStars');
|
||||||
|
break;
|
||||||
|
case '2':
|
||||||
|
$($stars.get(i)).addClass('threeStars');
|
||||||
|
break;
|
||||||
|
case '3':
|
||||||
|
$($stars.get(i)).addClass('fourStars');
|
||||||
|
break;
|
||||||
|
case '4':
|
||||||
|
$($stars.get(i)).addClass('fiveStars');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$($stars.get(i)).addClass('amber-text');
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function unmarkActive() {
|
||||||
|
$stars.parent().hasClass('rating-faces') ? $stars.addClass('fa-meh-blank') : $stars;
|
||||||
|
$container.hasClass('empty-stars') ? $stars.removeClass('fas') : $container;
|
||||||
|
$stars.removeClass('fa-angry fa-frown fa-meh fa-smile fa-laugh live oneStar twoStars threeStars fourStars fiveStars amber-text');
|
||||||
|
}
|
||||||
|
|
||||||
|
$stars.on('click', function () {
|
||||||
|
$stars.popover('hide');
|
||||||
|
});
|
||||||
|
|
||||||
|
// Submit, you can add some extra custom code here
|
||||||
|
// ex. to send the information to the server
|
||||||
|
$container.on('click', '#voteSubmitButton', function () {
|
||||||
|
$stars.popover('hide');
|
||||||
|
});
|
||||||
|
|
||||||
|
// Cancel, just close the popover
|
||||||
|
$container.on('click', '#closePopoverButton', function () {
|
||||||
|
$stars.popover('hide');
|
||||||
|
});
|
||||||
|
|
||||||
|
if ($container.hasClass('feedback')) {
|
||||||
|
|
||||||
|
$(function () {
|
||||||
|
$stars.popover({
|
||||||
|
// Append popover to #rateMe to allow handling form inside the popover
|
||||||
|
container: $container,
|
||||||
|
// Custom content for popover
|
||||||
|
content: `<div class="my-0 py-0"> <textarea type="text" style="font-size: 0.78rem" class="md-textarea form-control py-0" placeholder="Write us what can we improve" rows="3"></textarea> <button id="voteSubmitButton" type="submit" class="btn btn-sm btn-primary">Submit!</button> <button id="closePopoverButton" class="btn btn-flat btn-sm">Close</button> </div>`
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
$stars.tooltip();
|
||||||
|
}
|
||||||
|
})(jQuery);
|
8
mdb/js/addons/rating.min.js
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
(function($){$.fn.mdbRate=function(){var $stars;var myDefaultWhiteList=$.fn.tooltip.Constructor.Default.whiteList
|
||||||
|
myDefaultWhiteList.textarea=[];myDefaultWhiteList.button=[];var $container=$(this);var titles=['Very bad','Poor','OK','Good','Excellent'];for(var i=0;i<5;i++){$container.append(`<i class="py-2 px-1 rate-popover" data-index="${i}" data-html="true" data-toggle="popover"
|
||||||
|
data-placement="top" title="${titles[i]}"></i>`)}
|
||||||
|
$stars=$container.children();if($container.hasClass('rating-faces')){$stars.addClass('far fa-meh-blank')}else if($container.hasClass('empty-stars')){$stars.addClass('far fa-star')}else{$stars.addClass('fas fa-star')}
|
||||||
|
$stars.on('mouseover',function(){var index=$(this).attr('data-index');markStarsAsActive(index)});function markStarsAsActive(index){unmarkActive();for(var i=0;i<=index;i++){if($container.hasClass('rating-faces')){$($stars.get(i)).removeClass('fa-meh-blank');$($stars.get(i)).addClass('live');switch(index){case '0':$($stars.get(i)).addClass('fa-angry');break;case '1':$($stars.get(i)).addClass('fa-frown');break;case '2':$($stars.get(i)).addClass('fa-meh');break;case '3':$($stars.get(i)).addClass('fa-smile');break;case '4':$($stars.get(i)).addClass('fa-laugh');break}}else if($container.hasClass('empty-stars')){$($stars.get(i)).addClass('fas');switch(index){case '0':$($stars.get(i)).addClass('oneStar');break;case '1':$($stars.get(i)).addClass('twoStars');break;case '2':$($stars.get(i)).addClass('threeStars');break;case '3':$($stars.get(i)).addClass('fourStars');break;case '4':$($stars.get(i)).addClass('fiveStars');break}}else{$($stars.get(i)).addClass('amber-text')}}}
|
||||||
|
function unmarkActive(){$stars.parent().hasClass('rating-faces')?$stars.addClass('fa-meh-blank'):$stars;$container.hasClass('empty-stars')?$stars.removeClass('fas'):$container;$stars.removeClass('fa-angry fa-frown fa-meh fa-smile fa-laugh live oneStar twoStars threeStars fourStars fiveStars amber-text')}
|
||||||
|
$stars.on('click',function(){$stars.popover('hide')});$container.on('click','#voteSubmitButton',function(){$stars.popover('hide')});$container.on('click','#closePopoverButton',function(){$stars.popover('hide')});if($container.hasClass('feedback')){$(function(){$stars.popover({container:$container,content:`<div class="my-0 py-0"> <textarea type="text" style="font-size: 0.78rem" class="md-textarea form-control py-0" placeholder="Write us what can we improve" rows="3"></textarea> <button id="voteSubmitButton" type="submit" class="btn btn-sm btn-primary">Submit!</button> <button id="closePopoverButton" class="btn btn-flat btn-sm">Close</button> </div>`})})}
|
||||||
|
$stars.tooltip()}})(jQuery)
|
4435
mdb/js/bootstrap.js
vendored
Normal file
7
mdb/js/bootstrap.min.js
vendored
Normal file
2
mdb/js/jquery-3.4.1.min.js
vendored
Normal file
15986
mdb/js/mdb.js
Normal file
1
mdb/js/mdb.min.js
vendored
Normal file
173
mdb/js/modules/bs-custom-file-input.js
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
/*!
|
||||||
|
* bsCustomFileInput v1.3.2 (https://github.com/Johann-S/bs-custom-file-input)
|
||||||
|
* Copyright 2018 - 2019 Johann-S <johann.servoire@gmail.com>
|
||||||
|
* Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)
|
||||||
|
*/
|
||||||
|
(function (global, factory) {
|
||||||
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||||
|
typeof define === 'function' && define.amd ? define(factory) :
|
||||||
|
(global = global || self, global.bsCustomFileInput = factory());
|
||||||
|
}(this, function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var Selector = {
|
||||||
|
CUSTOMFILE: '.custom-file input[type="file"]',
|
||||||
|
CUSTOMFILELABEL: '.custom-file-label',
|
||||||
|
FORM: 'form',
|
||||||
|
INPUT: 'input'
|
||||||
|
};
|
||||||
|
|
||||||
|
var textNodeType = 3;
|
||||||
|
|
||||||
|
var getDefaultText = function getDefaultText(input) {
|
||||||
|
var defaultText = '';
|
||||||
|
var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);
|
||||||
|
|
||||||
|
if (label) {
|
||||||
|
defaultText = label.innerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
return defaultText;
|
||||||
|
};
|
||||||
|
|
||||||
|
var findFirstChildNode = function findFirstChildNode(element) {
|
||||||
|
if (element.childNodes.length > 0) {
|
||||||
|
var childNodes = [].slice.call(element.childNodes);
|
||||||
|
|
||||||
|
for (var i = 0; i < childNodes.length; i++) {
|
||||||
|
var node = childNodes[i];
|
||||||
|
|
||||||
|
if (node.nodeType !== textNodeType) {
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return element;
|
||||||
|
};
|
||||||
|
|
||||||
|
var restoreDefaultText = function restoreDefaultText(input) {
|
||||||
|
var defaultText = input.bsCustomFileInput.defaultText;
|
||||||
|
var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);
|
||||||
|
|
||||||
|
if (label) {
|
||||||
|
var element = findFirstChildNode(label);
|
||||||
|
element.innerHTML = defaultText;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var fileApi = !!window.File;
|
||||||
|
var FAKE_PATH = 'fakepath';
|
||||||
|
var FAKE_PATH_SEPARATOR = '\\';
|
||||||
|
|
||||||
|
var getSelectedFiles = function getSelectedFiles(input) {
|
||||||
|
if (input.hasAttribute('multiple') && fileApi) {
|
||||||
|
return [].slice.call(input.files).map(function (file) {
|
||||||
|
return file.name;
|
||||||
|
}).join(', ');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input.value.indexOf(FAKE_PATH) !== -1) {
|
||||||
|
var splittedValue = input.value.split(FAKE_PATH_SEPARATOR);
|
||||||
|
return splittedValue[splittedValue.length - 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
return input.value;
|
||||||
|
};
|
||||||
|
|
||||||
|
function handleInputChange() {
|
||||||
|
var label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL);
|
||||||
|
|
||||||
|
if (label) {
|
||||||
|
var element = findFirstChildNode(label);
|
||||||
|
var inputValue = getSelectedFiles(this);
|
||||||
|
|
||||||
|
if (inputValue.length) {
|
||||||
|
element.innerHTML = inputValue;
|
||||||
|
} else {
|
||||||
|
restoreDefaultText(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleFormReset() {
|
||||||
|
var customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function (input) {
|
||||||
|
return !!input.bsCustomFileInput;
|
||||||
|
});
|
||||||
|
|
||||||
|
for (var i = 0, len = customFileList.length; i < len; i++) {
|
||||||
|
restoreDefaultText(customFileList[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var customProperty = 'bsCustomFileInput';
|
||||||
|
var Event = {
|
||||||
|
FORMRESET: 'reset',
|
||||||
|
INPUTCHANGE: 'change'
|
||||||
|
};
|
||||||
|
var bsCustomFileInput = {
|
||||||
|
init: function init(inputSelector, formSelector) {
|
||||||
|
if (inputSelector === void 0) {
|
||||||
|
inputSelector = Selector.CUSTOMFILE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (formSelector === void 0) {
|
||||||
|
formSelector = Selector.FORM;
|
||||||
|
}
|
||||||
|
|
||||||
|
var customFileInputList = [].slice.call(document.querySelectorAll(inputSelector));
|
||||||
|
var formList = [].slice.call(document.querySelectorAll(formSelector));
|
||||||
|
|
||||||
|
for (var i = 0, len = customFileInputList.length; i < len; i++) {
|
||||||
|
var input = customFileInputList[i];
|
||||||
|
Object.defineProperty(input, customProperty, {
|
||||||
|
value: {
|
||||||
|
defaultText: getDefaultText(input)
|
||||||
|
},
|
||||||
|
writable: true
|
||||||
|
});
|
||||||
|
handleInputChange.call(input);
|
||||||
|
input.addEventListener(Event.INPUTCHANGE, handleInputChange);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var _i = 0, _len = formList.length; _i < _len; _i++) {
|
||||||
|
formList[_i].addEventListener(Event.FORMRESET, handleFormReset);
|
||||||
|
|
||||||
|
Object.defineProperty(formList[_i], customProperty, {
|
||||||
|
value: true,
|
||||||
|
writable: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
destroy: function destroy() {
|
||||||
|
var formList = [].slice.call(document.querySelectorAll(Selector.FORM)).filter(function (form) {
|
||||||
|
return !!form.bsCustomFileInput;
|
||||||
|
});
|
||||||
|
var customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function (input) {
|
||||||
|
return !!input.bsCustomFileInput;
|
||||||
|
});
|
||||||
|
|
||||||
|
for (var i = 0, len = customFileInputList.length; i < len; i++) {
|
||||||
|
var input = customFileInputList[i];
|
||||||
|
restoreDefaultText(input);
|
||||||
|
input[customProperty] = undefined;
|
||||||
|
input.removeEventListener(Event.INPUTCHANGE, handleInputChange);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var _i2 = 0, _len2 = formList.length; _i2 < _len2; _i2++) {
|
||||||
|
formList[_i2].removeEventListener(Event.FORMRESET, handleFormReset);
|
||||||
|
|
||||||
|
formList[_i2][customProperty] = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return bsCustomFileInput;
|
||||||
|
|
||||||
|
}));
|
||||||
|
//# sourceMappingURL=bs-custom-file-input.js.map
|
||||||
|
|
||||||
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
|
||||||
|
bsCustomFileInput.init()
|
||||||
|
});
|
14456
mdb/js/modules/chart.js
Normal file
27
mdb/js/modules/enhanced-modals.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
Enhanced Bootstrap Modals
|
||||||
|
https://mdbootstrap.com
|
||||||
|
office@mdbootstrap.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function($){
|
||||||
|
$('body').on('shown.bs.modal', '.modal', function() {
|
||||||
|
if(!$('.modal-backdrop').length) {
|
||||||
|
|
||||||
|
$modal_dialog = $(this).children('.modal-dialog')
|
||||||
|
|
||||||
|
if($modal_dialog.hasClass('modal-side')) {
|
||||||
|
$(this).addClass('modal-scrolling');
|
||||||
|
$('body').addClass('scrollable');
|
||||||
|
}
|
||||||
|
|
||||||
|
if($modal_dialog.hasClass('modal-frame')) {
|
||||||
|
$(this).addClass('modal-content-clickable');
|
||||||
|
$('body').addClass('scrollable');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('body').on('hidden.bs.modal', '.modal', function() {
|
||||||
|
$('body').removeClass('scrollable');
|
||||||
|
});
|
||||||
|
})(jQuery);
|
173
mdb/js/modules/forms-free.js
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
var _this = void 0;
|
||||||
|
|
||||||
|
(function ($) {
|
||||||
|
var inputSelector = "".concat(['text', 'password', 'email', 'url', 'tel', 'number', 'search', 'search-md'].map(function (selector) {
|
||||||
|
return "input[type=".concat(selector, "]");
|
||||||
|
}).join(', '), ", textarea");
|
||||||
|
var textAreaSelector = '.materialize-textarea';
|
||||||
|
|
||||||
|
var updateTextFields = function updateTextFields($input) {
|
||||||
|
var $labelAndIcon = $input.siblings('label, i');
|
||||||
|
var hasValue = $input.val().length;
|
||||||
|
var hasPlaceholder = $input.attr('placeholder');
|
||||||
|
var addOrRemove = "".concat(hasValue || hasPlaceholder ? 'add' : 'remove', "Class");
|
||||||
|
$labelAndIcon[addOrRemove]('active');
|
||||||
|
};
|
||||||
|
|
||||||
|
var validateField = function validateField($input) {
|
||||||
|
if ($input.hasClass('validate')) {
|
||||||
|
var value = $input.val();
|
||||||
|
var noValue = !value.length;
|
||||||
|
var isValid = !$input[0].validity.badInput;
|
||||||
|
|
||||||
|
if (noValue && isValid) {
|
||||||
|
$input.removeClass('valid').removeClass('invalid');
|
||||||
|
} else {
|
||||||
|
var valid = $input.is(':valid');
|
||||||
|
var length = Number($input.attr('length')) || 0;
|
||||||
|
|
||||||
|
if (valid && (!length || length > value.length)) {
|
||||||
|
$input.removeClass('invalid').addClass('valid');
|
||||||
|
} else {
|
||||||
|
$input.removeClass('valid').addClass('invalid');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var textAreaAutoResize = function textAreaAutoResize() {
|
||||||
|
var $textarea = $(_this);
|
||||||
|
|
||||||
|
if ($textarea.val().length) {
|
||||||
|
var $hiddenDiv = $('.hiddendiv');
|
||||||
|
var fontFamily = $textarea.css('font-family');
|
||||||
|
var fontSize = $textarea.css('font-size');
|
||||||
|
|
||||||
|
if (fontSize) {
|
||||||
|
$hiddenDiv.css('font-size', fontSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fontFamily) {
|
||||||
|
$hiddenDiv.css('font-family', fontFamily);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($textarea.attr('wrap') === 'off') {
|
||||||
|
$hiddenDiv.css('overflow-wrap', 'normal').css('white-space', 'pre');
|
||||||
|
}
|
||||||
|
|
||||||
|
$hiddenDiv.text("".concat($textarea.val(), "\n"));
|
||||||
|
var content = $hiddenDiv.html().replace(/\n/g, '<br>');
|
||||||
|
$hiddenDiv.html(content); // When textarea is hidden, width goes crazy.
|
||||||
|
// Approximate with half of window size
|
||||||
|
|
||||||
|
$hiddenDiv.css('width', $textarea.is(':visible') ? $textarea.width() : $(window).width() / 2);
|
||||||
|
$textarea.css('height', $hiddenDiv.height());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$(inputSelector).each(function (index, input) {
|
||||||
|
var $this = $(input);
|
||||||
|
var $labelAndIcon = $this.siblings('label, i');
|
||||||
|
updateTextFields($this);
|
||||||
|
var isValid = input.validity.badInput;
|
||||||
|
|
||||||
|
if (isValid) {
|
||||||
|
$labelAndIcon.addClass('active');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$(document).on('focus', inputSelector, function (e) {
|
||||||
|
$(e.target).siblings('label, i').addClass('active');
|
||||||
|
});
|
||||||
|
$(document).on('blur', inputSelector, function (e) {
|
||||||
|
var $this = $(e.target);
|
||||||
|
var noValue = !$this.val();
|
||||||
|
var invalid = !e.target.validity.badInput;
|
||||||
|
var noPlaceholder = $this.attr('placeholder') === undefined;
|
||||||
|
|
||||||
|
if (noValue && invalid && noPlaceholder) {
|
||||||
|
$this.siblings('label, i').removeClass('active');
|
||||||
|
}
|
||||||
|
|
||||||
|
validateField($this);
|
||||||
|
});
|
||||||
|
$(document).on('change', inputSelector, function (e) {
|
||||||
|
var $this = $(e.target);
|
||||||
|
updateTextFields($this);
|
||||||
|
validateField($this);
|
||||||
|
});
|
||||||
|
$('input[autofocus]').siblings('label, i').addClass('active');
|
||||||
|
$(document).on('reset', function (e) {
|
||||||
|
var $formReset = $(e.target);
|
||||||
|
|
||||||
|
if ($formReset.is('form')) {
|
||||||
|
var $formInputs = $formReset.find(inputSelector);
|
||||||
|
$formInputs.removeClass('valid').removeClass('invalid').each(function (index, input) {
|
||||||
|
var $this = $(input);
|
||||||
|
var noDefaultValue = !$this.val();
|
||||||
|
var noPlaceholder = !$this.attr('placeholder');
|
||||||
|
|
||||||
|
if (noDefaultValue && noPlaceholder) {
|
||||||
|
$this.siblings('label, i').removeClass('active');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$formReset.find('select.initialized').each(function (index, select) {
|
||||||
|
var $select = $(select);
|
||||||
|
var $visibleInput = $select.siblings('input.select-dropdown');
|
||||||
|
var defaultValue = $select.children('[selected]').val();
|
||||||
|
$select.val(defaultValue);
|
||||||
|
$visibleInput.val(defaultValue);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
var $text = $('.md-textarea-auto');
|
||||||
|
|
||||||
|
if ($text.length) {
|
||||||
|
var observe;
|
||||||
|
|
||||||
|
if (window.attachEvent) {
|
||||||
|
observe = function observe(element, event, handler) {
|
||||||
|
element.attachEvent("on".concat(event), handler);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
observe = function observe(element, event, handler) {
|
||||||
|
element.addEventListener(event, handler, false);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
$text.each(function () {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
function resize() {
|
||||||
|
self.style.height = 'auto';
|
||||||
|
self.style.height = "".concat(self.scrollHeight, "px");
|
||||||
|
}
|
||||||
|
|
||||||
|
function delayedResize() {
|
||||||
|
window.setTimeout(resize, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
observe(self, 'change', resize);
|
||||||
|
observe(self, 'cut', delayedResize);
|
||||||
|
observe(self, 'paste', delayedResize);
|
||||||
|
observe(self, 'drop', delayedResize);
|
||||||
|
observe(self, 'keydown', delayedResize);
|
||||||
|
resize();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
init();
|
||||||
|
var $body = $('body');
|
||||||
|
|
||||||
|
if (!$('.hiddendiv').first().length) {
|
||||||
|
var $hiddenDiv = $('<div class="hiddendiv common"></div>');
|
||||||
|
$body.append($hiddenDiv);
|
||||||
|
}
|
||||||
|
|
||||||
|
$(textAreaSelector).each(textAreaAutoResize);
|
||||||
|
$body.on('keyup keydown', textAreaSelector, textAreaAutoResize);
|
||||||
|
})(jQuery);
|
205
mdb/js/modules/jquery.easing.js
Normal file
@ -0,0 +1,205 @@
|
|||||||
|
/*
|
||||||
|
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
|
||||||
|
*
|
||||||
|
* Uses the built in easing capabilities added In jQuery 1.1
|
||||||
|
* to offer multiple easing options
|
||||||
|
*
|
||||||
|
* TERMS OF USE - jQuery Easing
|
||||||
|
*
|
||||||
|
* Open source under the BSD License.
|
||||||
|
*
|
||||||
|
* Copyright © 2008 George McGinley Smith
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* Neither the name of the author nor the names of contributors may be used to endorse
|
||||||
|
* or promote products derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||||
|
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
// t: current time, b: begInnIng value, c: change In value, d: duration
|
||||||
|
jQuery.easing['jswing'] = jQuery.easing['swing'];
|
||||||
|
|
||||||
|
jQuery.extend( jQuery.easing,
|
||||||
|
{
|
||||||
|
def: 'easeOutQuad',
|
||||||
|
swing: function (x, t, b, c, d) {
|
||||||
|
//alert(jQuery.easing.default);
|
||||||
|
return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
|
||||||
|
},
|
||||||
|
easeInQuad: function (x, t, b, c, d) {
|
||||||
|
return c*(t/=d)*t + b;
|
||||||
|
},
|
||||||
|
easeOutQuad: function (x, t, b, c, d) {
|
||||||
|
return -c *(t/=d)*(t-2) + b;
|
||||||
|
},
|
||||||
|
easeInOutQuad: function (x, t, b, c, d) {
|
||||||
|
if ((t/=d/2) < 1) return c/2*t*t + b;
|
||||||
|
return -c/2 * ((--t)*(t-2) - 1) + b;
|
||||||
|
},
|
||||||
|
easeInCubic: function (x, t, b, c, d) {
|
||||||
|
return c*(t/=d)*t*t + b;
|
||||||
|
},
|
||||||
|
easeOutCubic: function (x, t, b, c, d) {
|
||||||
|
return c*((t=t/d-1)*t*t + 1) + b;
|
||||||
|
},
|
||||||
|
easeInOutCubic: function (x, t, b, c, d) {
|
||||||
|
if ((t/=d/2) < 1) return c/2*t*t*t + b;
|
||||||
|
return c/2*((t-=2)*t*t + 2) + b;
|
||||||
|
},
|
||||||
|
easeInQuart: function (x, t, b, c, d) {
|
||||||
|
return c*(t/=d)*t*t*t + b;
|
||||||
|
},
|
||||||
|
easeOutQuart: function (x, t, b, c, d) {
|
||||||
|
return -c * ((t=t/d-1)*t*t*t - 1) + b;
|
||||||
|
},
|
||||||
|
easeInOutQuart: function (x, t, b, c, d) {
|
||||||
|
if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
|
||||||
|
return -c/2 * ((t-=2)*t*t*t - 2) + b;
|
||||||
|
},
|
||||||
|
easeInQuint: function (x, t, b, c, d) {
|
||||||
|
return c*(t/=d)*t*t*t*t + b;
|
||||||
|
},
|
||||||
|
easeOutQuint: function (x, t, b, c, d) {
|
||||||
|
return c*((t=t/d-1)*t*t*t*t + 1) + b;
|
||||||
|
},
|
||||||
|
easeInOutQuint: function (x, t, b, c, d) {
|
||||||
|
if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
|
||||||
|
return c/2*((t-=2)*t*t*t*t + 2) + b;
|
||||||
|
},
|
||||||
|
easeInSine: function (x, t, b, c, d) {
|
||||||
|
return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
|
||||||
|
},
|
||||||
|
easeOutSine: function (x, t, b, c, d) {
|
||||||
|
return c * Math.sin(t/d * (Math.PI/2)) + b;
|
||||||
|
},
|
||||||
|
easeInOutSine: function (x, t, b, c, d) {
|
||||||
|
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
|
||||||
|
},
|
||||||
|
easeInExpo: function (x, t, b, c, d) {
|
||||||
|
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
|
||||||
|
},
|
||||||
|
easeOutExpo: function (x, t, b, c, d) {
|
||||||
|
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
|
||||||
|
},
|
||||||
|
easeInOutExpo: function (x, t, b, c, d) {
|
||||||
|
if (t==0) return b;
|
||||||
|
if (t==d) return b+c;
|
||||||
|
if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
|
||||||
|
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
|
||||||
|
},
|
||||||
|
easeInCirc: function (x, t, b, c, d) {
|
||||||
|
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
|
||||||
|
},
|
||||||
|
easeOutCirc: function (x, t, b, c, d) {
|
||||||
|
return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
|
||||||
|
},
|
||||||
|
easeInOutCirc: function (x, t, b, c, d) {
|
||||||
|
if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
|
||||||
|
return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
|
||||||
|
},
|
||||||
|
easeInElastic: function (x, t, b, c, d) {
|
||||||
|
var s=1.70158;var p=0;var a=c;
|
||||||
|
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
|
||||||
|
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
||||||
|
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
||||||
|
return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
|
||||||
|
},
|
||||||
|
easeOutElastic: function (x, t, b, c, d) {
|
||||||
|
var s=1.70158;var p=0;var a=c;
|
||||||
|
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
|
||||||
|
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
||||||
|
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
||||||
|
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
|
||||||
|
},
|
||||||
|
easeInOutElastic: function (x, t, b, c, d) {
|
||||||
|
var s=1.70158;var p=0;var a=c;
|
||||||
|
if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
|
||||||
|
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
||||||
|
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
||||||
|
if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
|
||||||
|
return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
|
||||||
|
},
|
||||||
|
easeInBack: function (x, t, b, c, d, s) {
|
||||||
|
if (s == undefined) s = 1.70158;
|
||||||
|
return c*(t/=d)*t*((s+1)*t - s) + b;
|
||||||
|
},
|
||||||
|
easeOutBack: function (x, t, b, c, d, s) {
|
||||||
|
if (s == undefined) s = 1.70158;
|
||||||
|
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
|
||||||
|
},
|
||||||
|
easeInOutBack: function (x, t, b, c, d, s) {
|
||||||
|
if (s == undefined) s = 1.70158;
|
||||||
|
if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
|
||||||
|
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
|
||||||
|
},
|
||||||
|
easeInBounce: function (x, t, b, c, d) {
|
||||||
|
return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
|
||||||
|
},
|
||||||
|
easeOutBounce: function (x, t, b, c, d) {
|
||||||
|
if ((t/=d) < (1/2.75)) {
|
||||||
|
return c*(7.5625*t*t) + b;
|
||||||
|
} else if (t < (2/2.75)) {
|
||||||
|
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
|
||||||
|
} else if (t < (2.5/2.75)) {
|
||||||
|
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
|
||||||
|
} else {
|
||||||
|
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
easeInOutBounce: function (x, t, b, c, d) {
|
||||||
|
if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
|
||||||
|
return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* TERMS OF USE - EASING EQUATIONS
|
||||||
|
*
|
||||||
|
* Open source under the BSD License.
|
||||||
|
*
|
||||||
|
* Copyright © 2001 Robert Penner
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* Neither the name of the author nor the names of contributors may be used to endorse
|
||||||
|
* or promote products derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||||
|
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
*/
|
16
mdb/js/modules/scrolling-navbar.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
(function ($) {
|
||||||
|
var SCROLLING_NAVBAR_OFFSET_TOP = 50;
|
||||||
|
$(window).on('scroll', function () {
|
||||||
|
var $navbar = $('.navbar');
|
||||||
|
|
||||||
|
if ($navbar.length) {
|
||||||
|
if ($navbar.offset().top > SCROLLING_NAVBAR_OFFSET_TOP) {
|
||||||
|
$('.scrolling-navbar').addClass('top-nav-collapse');
|
||||||
|
} else {
|
||||||
|
$('.scrolling-navbar').removeClass('top-nav-collapse');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})(jQuery);
|
67
mdb/js/modules/treeview.js
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
(function ($) {
|
||||||
|
$.fn.mdbTreeview = function () {
|
||||||
|
var $this = $(this);
|
||||||
|
|
||||||
|
if ($this.hasClass('treeview')) {
|
||||||
|
var $toggler = $this.find('.rotate');
|
||||||
|
$.each($toggler, function (e) {
|
||||||
|
$($toggler[e]).off('click');
|
||||||
|
$($toggler[e]).on('click', function () {
|
||||||
|
var $this = $(this);
|
||||||
|
$this.siblings('.nested').toggleClass('active');
|
||||||
|
$this.toggleClass('down');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this.hasClass('treeview-animated')) {
|
||||||
|
var $elements = $this.find('.treeview-animated-element');
|
||||||
|
var $closed = $this.find('.closed');
|
||||||
|
$this.find('.nested').hide();
|
||||||
|
$closed.off('click');
|
||||||
|
$closed.on('click', function () {
|
||||||
|
var $this = $(this);
|
||||||
|
var $target = $this.siblings('.nested');
|
||||||
|
var $pointer = $this.children('.fa-angle-right');
|
||||||
|
$this.toggleClass('open');
|
||||||
|
$pointer.toggleClass('down');
|
||||||
|
!$target.hasClass('active') ? $target.addClass('active').slideDown() : $target.removeClass('active').slideUp();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$elements.off('click');
|
||||||
|
$elements.on('click', function () {
|
||||||
|
var $this = $(this);
|
||||||
|
$this.hasClass('opened') ? $this.removeClass('opened') : ($elements.removeClass('opened'), $this.addClass('opened'));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this.hasClass('treeview-colorful')) {
|
||||||
|
var _$elements = $this.find('.treeview-colorful-element');
|
||||||
|
|
||||||
|
var $header = $this.find('.treeview-colorful-items-header');
|
||||||
|
$this.find('.nested').hide();
|
||||||
|
$header.off('click');
|
||||||
|
$header.on('click', function () {
|
||||||
|
var $this = $(this);
|
||||||
|
var $target = $this.siblings('.nested');
|
||||||
|
var $pointerPlus = $this.children('.fa-plus-circle');
|
||||||
|
var $pointerMinus = $this.children('.fa-minus-circle');
|
||||||
|
$this.toggleClass('open');
|
||||||
|
$pointerPlus.removeClass('fa-plus-circle');
|
||||||
|
$pointerPlus.addClass('fa-minus-circle');
|
||||||
|
$pointerMinus.removeClass('fa-minus-circle');
|
||||||
|
$pointerMinus.addClass('fa-plus-circle');
|
||||||
|
!$target.hasClass('active') ? $target.addClass('active').slideDown() : $target.removeClass('active').slideUp();
|
||||||
|
});
|
||||||
|
|
||||||
|
_$elements.off('click');
|
||||||
|
|
||||||
|
_$elements.on('click', function () {
|
||||||
|
var $this = $(this);
|
||||||
|
$this.hasClass('opened') ? _$elements.removeClass('opened') : (_$elements.removeClass('opened'), $this.addClass('opened'));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})(jQuery);
|
5
mdb/js/modules/velocity.js
Normal file
5
mdb/js/modules/velocity.min.js
vendored
Normal file
609
mdb/js/modules/waves.js
Normal file
@ -0,0 +1,609 @@
|
|||||||
|
/*!
|
||||||
|
* Waves v0.7.6
|
||||||
|
* http://fian.my.id/Waves
|
||||||
|
*
|
||||||
|
* Copyright 2014-2018 Alfiana E. Sibuea and other contributors
|
||||||
|
* Released under the MIT license
|
||||||
|
* https://github.com/fians/Waves/blob/master/LICENSE
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
(function (window, factory) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// AMD. Register as an anonymous module. Wrap in function so we have access
|
||||||
|
// to root via `this`.
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
define([], function () {
|
||||||
|
window.Waves = factory.call(window);
|
||||||
|
return window.Waves;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Node. Does not work with strict CommonJS, but only CommonJS-like
|
||||||
|
// environments that support module.exports, like Node.
|
||||||
|
else if (typeof exports === 'object') {
|
||||||
|
module.exports = factory.call(window);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Browser globals.
|
||||||
|
else {
|
||||||
|
window.Waves = factory.call(window);
|
||||||
|
}
|
||||||
|
})(typeof window === 'object' ? window : this, function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var Waves = Waves || {};
|
||||||
|
var $$ = document.querySelectorAll.bind(document);
|
||||||
|
var toString = Object.prototype.toString;
|
||||||
|
var isTouchAvailable = 'ontouchstart' in window;
|
||||||
|
|
||||||
|
|
||||||
|
// Find exact position of element
|
||||||
|
function isWindow(obj) {
|
||||||
|
return obj !== null && obj === obj.window;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getWindow(elem) {
|
||||||
|
return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isObject(value) {
|
||||||
|
var type = typeof value;
|
||||||
|
return type === 'function' || type === 'object' && !!value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isDOMNode(obj) {
|
||||||
|
return isObject(obj) && obj.nodeType > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getWavesElements(nodes) {
|
||||||
|
var stringRepr = toString.call(nodes);
|
||||||
|
|
||||||
|
if (stringRepr === '[object String]') {
|
||||||
|
return $$(nodes);
|
||||||
|
} else if (isObject(nodes) && /^\[object (Array|HTMLCollection|NodeList|Object)\]$/.test(stringRepr) && nodes.hasOwnProperty('length')) {
|
||||||
|
return nodes;
|
||||||
|
} else if (isDOMNode(nodes)) {
|
||||||
|
return [nodes];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
function offset(elem) {
|
||||||
|
var docElem, win,
|
||||||
|
box = {
|
||||||
|
top: 0,
|
||||||
|
left: 0
|
||||||
|
},
|
||||||
|
doc = elem && elem.ownerDocument;
|
||||||
|
|
||||||
|
docElem = doc.documentElement;
|
||||||
|
|
||||||
|
if (typeof elem.getBoundingClientRect !== typeof undefined) {
|
||||||
|
box = elem.getBoundingClientRect();
|
||||||
|
}
|
||||||
|
win = getWindow(doc);
|
||||||
|
return {
|
||||||
|
top: box.top + win.pageYOffset - docElem.clientTop,
|
||||||
|
left: box.left + win.pageXOffset - docElem.clientLeft
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function convertStyle(styleObj) {
|
||||||
|
var style = '';
|
||||||
|
|
||||||
|
for (var prop in styleObj) {
|
||||||
|
if (styleObj.hasOwnProperty(prop)) {
|
||||||
|
style += (prop + ':' + styleObj[prop] + ';');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return style;
|
||||||
|
}
|
||||||
|
|
||||||
|
var Effect = {
|
||||||
|
|
||||||
|
// Effect duration
|
||||||
|
duration: 750,
|
||||||
|
|
||||||
|
// Effect delay (check for scroll before showing effect)
|
||||||
|
delay: 200,
|
||||||
|
|
||||||
|
show: function (e, element, velocity) {
|
||||||
|
|
||||||
|
// Disable right click
|
||||||
|
if (e.button === 2) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
element = element || this;
|
||||||
|
|
||||||
|
// Create ripple
|
||||||
|
var ripple = document.createElement('div');
|
||||||
|
ripple.className = 'waves-ripple waves-rippling';
|
||||||
|
element.appendChild(ripple);
|
||||||
|
|
||||||
|
// Get click coordinate and element width
|
||||||
|
var pos = offset(element);
|
||||||
|
var relativeY = 0;
|
||||||
|
var relativeX = 0;
|
||||||
|
// Support for touch devices
|
||||||
|
if ('touches' in e && e.touches.length) {
|
||||||
|
relativeY = (e.touches[0].pageY - pos.top);
|
||||||
|
relativeX = (e.touches[0].pageX - pos.left);
|
||||||
|
}
|
||||||
|
//Normal case
|
||||||
|
else {
|
||||||
|
relativeY = (e.pageY - pos.top);
|
||||||
|
relativeX = (e.pageX - pos.left);
|
||||||
|
}
|
||||||
|
// Support for synthetic events
|
||||||
|
relativeX = relativeX >= 0 ? relativeX : 0;
|
||||||
|
relativeY = relativeY >= 0 ? relativeY : 0;
|
||||||
|
|
||||||
|
var scale = 'scale(' + ((element.clientWidth / 100) * 3) + ')';
|
||||||
|
var translate = 'translate(0,0)';
|
||||||
|
|
||||||
|
if (velocity) {
|
||||||
|
translate = 'translate(' + (velocity.x) + 'px, ' + (velocity.y) + 'px)';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Attach data to element
|
||||||
|
ripple.setAttribute('data-hold', Date.now());
|
||||||
|
ripple.setAttribute('data-x', relativeX);
|
||||||
|
ripple.setAttribute('data-y', relativeY);
|
||||||
|
ripple.setAttribute('data-scale', scale);
|
||||||
|
ripple.setAttribute('data-translate', translate);
|
||||||
|
|
||||||
|
// Set ripple position
|
||||||
|
var rippleStyle = {
|
||||||
|
top: relativeY + 'px',
|
||||||
|
left: relativeX + 'px'
|
||||||
|
};
|
||||||
|
|
||||||
|
ripple.classList.add('waves-notransition');
|
||||||
|
ripple.setAttribute('style', convertStyle(rippleStyle));
|
||||||
|
ripple.classList.remove('waves-notransition');
|
||||||
|
|
||||||
|
// Scale the ripple
|
||||||
|
rippleStyle['-webkit-transform'] = scale + ' ' + translate;
|
||||||
|
rippleStyle['-moz-transform'] = scale + ' ' + translate;
|
||||||
|
rippleStyle['-ms-transform'] = scale + ' ' + translate;
|
||||||
|
rippleStyle['-o-transform'] = scale + ' ' + translate;
|
||||||
|
rippleStyle.transform = scale + ' ' + translate;
|
||||||
|
rippleStyle.opacity = '1';
|
||||||
|
|
||||||
|
var duration = e.type === 'mousemove' ? 2500 : Effect.duration;
|
||||||
|
rippleStyle['-webkit-transition-duration'] = duration + 'ms';
|
||||||
|
rippleStyle['-moz-transition-duration'] = duration + 'ms';
|
||||||
|
rippleStyle['-o-transition-duration'] = duration + 'ms';
|
||||||
|
rippleStyle['transition-duration'] = duration + 'ms';
|
||||||
|
|
||||||
|
ripple.setAttribute('style', convertStyle(rippleStyle));
|
||||||
|
},
|
||||||
|
|
||||||
|
hide: function (e, element) {
|
||||||
|
element = element || this;
|
||||||
|
|
||||||
|
var ripples = element.getElementsByClassName('waves-rippling');
|
||||||
|
|
||||||
|
for (var i = 0, len = ripples.length; i < len; i++) {
|
||||||
|
removeRipple(e, element, ripples[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isTouchAvailable) {
|
||||||
|
element.removeEventListener('touchend', Effect.hide);
|
||||||
|
element.removeEventListener('touchcancel', Effect.hide);
|
||||||
|
}
|
||||||
|
|
||||||
|
element.removeEventListener('mouseup', Effect.hide);
|
||||||
|
element.removeEventListener('mouseleave', Effect.hide);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Collection of wrapper for HTML element that only have single tag
|
||||||
|
* like <input> and <img>
|
||||||
|
*/
|
||||||
|
var TagWrapper = {
|
||||||
|
|
||||||
|
// Wrap <input> tag so it can perform the effect
|
||||||
|
input: function (element) {
|
||||||
|
|
||||||
|
var parent = element.parentNode;
|
||||||
|
|
||||||
|
// If input already have parent just pass through
|
||||||
|
if (parent.tagName.toLowerCase() === 'span' && parent.classList.contains('waves-effect')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put element class and style to the specified parent
|
||||||
|
var wrapper = document.createElement('span');
|
||||||
|
wrapper.className = 'waves-input-wrapper';
|
||||||
|
// element.className = 'waves-button-input';
|
||||||
|
|
||||||
|
// Put element as child
|
||||||
|
parent.replaceChild(wrapper, element);
|
||||||
|
wrapper.appendChild(element);
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
// Wrap <img> tag so it can perform the effect
|
||||||
|
img: function (element) {
|
||||||
|
|
||||||
|
var parent = element.parentNode;
|
||||||
|
|
||||||
|
// If input already have parent just pass through
|
||||||
|
if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put element as child
|
||||||
|
var wrapper = document.createElement('i');
|
||||||
|
parent.replaceChild(wrapper, element);
|
||||||
|
wrapper.appendChild(element);
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hide the effect and remove the ripple. Must be
|
||||||
|
* a separate function to pass the JSLint...
|
||||||
|
*/
|
||||||
|
function removeRipple(e, el, ripple) {
|
||||||
|
|
||||||
|
// Check if the ripple still exist
|
||||||
|
if (!ripple) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ripple.classList.remove('waves-rippling');
|
||||||
|
|
||||||
|
var relativeX = ripple.getAttribute('data-x');
|
||||||
|
var relativeY = ripple.getAttribute('data-y');
|
||||||
|
var scale = ripple.getAttribute('data-scale');
|
||||||
|
var translate = ripple.getAttribute('data-translate');
|
||||||
|
|
||||||
|
// Get delay beetween mousedown and mouse leave
|
||||||
|
var diff = Date.now() - Number(ripple.getAttribute('data-hold'));
|
||||||
|
var delay = 350 - diff;
|
||||||
|
|
||||||
|
if (delay < 0) {
|
||||||
|
delay = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.type === 'mousemove') {
|
||||||
|
delay = 150;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fade out ripple after delay
|
||||||
|
var duration = e.type === 'mousemove' ? 2500 : Effect.duration;
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
|
||||||
|
var style = {
|
||||||
|
top: relativeY + 'px',
|
||||||
|
left: relativeX + 'px',
|
||||||
|
opacity: '0',
|
||||||
|
|
||||||
|
// Duration
|
||||||
|
'-webkit-transition-duration': duration + 'ms',
|
||||||
|
'-moz-transition-duration': duration + 'ms',
|
||||||
|
'-o-transition-duration': duration + 'ms',
|
||||||
|
'transition-duration': duration + 'ms',
|
||||||
|
'-webkit-transform': scale + ' ' + translate,
|
||||||
|
'-moz-transform': scale + ' ' + translate,
|
||||||
|
'-ms-transform': scale + ' ' + translate,
|
||||||
|
'-o-transform': scale + ' ' + translate,
|
||||||
|
'transform': scale + ' ' + translate
|
||||||
|
};
|
||||||
|
|
||||||
|
ripple.setAttribute('style', convertStyle(style));
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
try {
|
||||||
|
el.removeChild(ripple);
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}, duration);
|
||||||
|
|
||||||
|
}, delay);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disable mousedown event for 500ms during and after touch
|
||||||
|
*/
|
||||||
|
var TouchHandler = {
|
||||||
|
|
||||||
|
/* uses an integer rather than bool so there's no issues with
|
||||||
|
* needing to clear timeouts if another touch event occurred
|
||||||
|
* within the 500ms. Cannot mouseup between touchstart and
|
||||||
|
* touchend, nor in the 500ms after touchend. */
|
||||||
|
touches: 0,
|
||||||
|
|
||||||
|
allowEvent: function (e) {
|
||||||
|
|
||||||
|
var allow = true;
|
||||||
|
|
||||||
|
if (/^(mousedown|mousemove)$/.test(e.type) && TouchHandler.touches) {
|
||||||
|
allow = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return allow;
|
||||||
|
},
|
||||||
|
registerEvent: function (e) {
|
||||||
|
var eType = e.type;
|
||||||
|
|
||||||
|
if (eType === 'touchstart') {
|
||||||
|
|
||||||
|
TouchHandler.touches += 1; // push
|
||||||
|
|
||||||
|
} else if (/^(touchend|touchcancel)$/.test(eType)) {
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
if (TouchHandler.touches) {
|
||||||
|
TouchHandler.touches -= 1; // pop after 500ms
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delegated click handler for .waves-effect element.
|
||||||
|
* returns null when .waves-effect element not in "click tree"
|
||||||
|
*/
|
||||||
|
function getWavesEffectElement(e) {
|
||||||
|
|
||||||
|
if (TouchHandler.allowEvent(e) === false) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var element = null;
|
||||||
|
var target = e.target || e.srcElement;
|
||||||
|
|
||||||
|
while (target.parentElement) {
|
||||||
|
if ((!(target instanceof SVGElement)) && target.classList.contains('waves-effect')) {
|
||||||
|
element = target;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
target = target.parentElement;
|
||||||
|
}
|
||||||
|
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bubble the click and show effect if .waves-effect elem was found
|
||||||
|
*/
|
||||||
|
function showEffect(e) {
|
||||||
|
|
||||||
|
// Disable effect if element has "disabled" property on it
|
||||||
|
// In some cases, the event is not triggered by the current element
|
||||||
|
// if (e.target.getAttribute('disabled') !== null) {
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
var element = getWavesEffectElement(e);
|
||||||
|
|
||||||
|
if (element !== null) {
|
||||||
|
|
||||||
|
// Make it sure the element has either disabled property, disabled attribute or 'disabled' class
|
||||||
|
if (element.disabled || element.getAttribute('disabled') || element.classList.contains('disabled')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
TouchHandler.registerEvent(e);
|
||||||
|
|
||||||
|
if (e.type === 'touchstart' && Effect.delay) {
|
||||||
|
|
||||||
|
var hidden = false;
|
||||||
|
|
||||||
|
var timer = setTimeout(function () {
|
||||||
|
timer = null;
|
||||||
|
Effect.show(e, element);
|
||||||
|
}, Effect.delay);
|
||||||
|
|
||||||
|
var hideEffect = function (hideEvent) {
|
||||||
|
|
||||||
|
// if touch hasn't moved, and effect not yet started: start effect now
|
||||||
|
if (timer) {
|
||||||
|
clearTimeout(timer);
|
||||||
|
timer = null;
|
||||||
|
Effect.show(e, element);
|
||||||
|
}
|
||||||
|
if (!hidden) {
|
||||||
|
hidden = true;
|
||||||
|
Effect.hide(hideEvent, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
removeListeners();
|
||||||
|
};
|
||||||
|
|
||||||
|
var touchMove = function (moveEvent) {
|
||||||
|
if (timer) {
|
||||||
|
clearTimeout(timer);
|
||||||
|
timer = null;
|
||||||
|
}
|
||||||
|
hideEffect(moveEvent);
|
||||||
|
|
||||||
|
removeListeners();
|
||||||
|
};
|
||||||
|
|
||||||
|
element.addEventListener('touchmove', touchMove, false);
|
||||||
|
element.addEventListener('touchend', hideEffect, false);
|
||||||
|
element.addEventListener('touchcancel', hideEffect, false);
|
||||||
|
|
||||||
|
var removeListeners = function () {
|
||||||
|
element.removeEventListener('touchmove', touchMove);
|
||||||
|
element.removeEventListener('touchend', hideEffect);
|
||||||
|
element.removeEventListener('touchcancel', hideEffect);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
|
||||||
|
Effect.show(e, element);
|
||||||
|
|
||||||
|
if (isTouchAvailable) {
|
||||||
|
element.addEventListener('touchend', Effect.hide, false);
|
||||||
|
element.addEventListener('touchcancel', Effect.hide, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
element.addEventListener('mouseup', Effect.hide, false);
|
||||||
|
element.addEventListener('mouseleave', Effect.hide, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Waves.init = function (options) {
|
||||||
|
var body = document.body;
|
||||||
|
|
||||||
|
options = options || {};
|
||||||
|
|
||||||
|
if ('duration' in options) {
|
||||||
|
Effect.duration = options.duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('delay' in options) {
|
||||||
|
Effect.delay = options.delay;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isTouchAvailable) {
|
||||||
|
body.addEventListener('touchstart', showEffect, false);
|
||||||
|
body.addEventListener('touchcancel', TouchHandler.registerEvent, false);
|
||||||
|
body.addEventListener('touchend', TouchHandler.registerEvent, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
body.addEventListener('mousedown', showEffect, false);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attach Waves to dynamically loaded inputs, or add .waves-effect and other
|
||||||
|
* waves classes to a set of elements. Set drag to true if the ripple mouseover
|
||||||
|
* or skimming effect should be applied to the elements.
|
||||||
|
*/
|
||||||
|
Waves.attach = function (elements, classes) {
|
||||||
|
|
||||||
|
elements = getWavesElements(elements);
|
||||||
|
|
||||||
|
if (toString.call(classes) === '[object Array]') {
|
||||||
|
classes = classes.join(' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
classes = classes ? ' ' + classes : '';
|
||||||
|
|
||||||
|
var element, tagName;
|
||||||
|
|
||||||
|
for (var i = 0, len = elements.length; i < len; i++) {
|
||||||
|
|
||||||
|
element = elements[i];
|
||||||
|
tagName = element.tagName.toLowerCase();
|
||||||
|
|
||||||
|
if (['input', 'img'].indexOf(tagName) !== -1) {
|
||||||
|
TagWrapper[tagName](element);
|
||||||
|
element = element.parentElement;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (element.className.indexOf('waves-effect') === -1) {
|
||||||
|
element.className += ' waves-effect' + classes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cause a ripple to appear in an element via code.
|
||||||
|
*/
|
||||||
|
Waves.ripple = function (elements, options) {
|
||||||
|
elements = getWavesElements(elements);
|
||||||
|
var elementsLen = elements.length;
|
||||||
|
|
||||||
|
options = options || {};
|
||||||
|
options.wait = options.wait || 0;
|
||||||
|
options.position = options.position || null; // default = centre of element
|
||||||
|
|
||||||
|
|
||||||
|
if (elementsLen) {
|
||||||
|
var element, pos, off, centre = {},
|
||||||
|
i = 0;
|
||||||
|
var mousedown = {
|
||||||
|
type: 'mousedown',
|
||||||
|
button: 1
|
||||||
|
};
|
||||||
|
var hideRipple = function (mouseup, element) {
|
||||||
|
return function () {
|
||||||
|
Effect.hide(mouseup, element);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
for (; i < elementsLen; i++) {
|
||||||
|
element = elements[i];
|
||||||
|
pos = options.position || {
|
||||||
|
x: element.clientWidth / 2,
|
||||||
|
y: element.clientHeight / 2
|
||||||
|
};
|
||||||
|
|
||||||
|
off = offset(element);
|
||||||
|
centre.x = off.left + pos.x;
|
||||||
|
centre.y = off.top + pos.y;
|
||||||
|
|
||||||
|
mousedown.pageX = centre.x;
|
||||||
|
mousedown.pageY = centre.y;
|
||||||
|
|
||||||
|
Effect.show(mousedown, element);
|
||||||
|
|
||||||
|
if (options.wait >= 0 && options.wait !== null) {
|
||||||
|
var mouseup = {
|
||||||
|
type: 'mouseup',
|
||||||
|
button: 1
|
||||||
|
};
|
||||||
|
|
||||||
|
setTimeout(hideRipple(mouseup, element), options.wait);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove all ripples from an element.
|
||||||
|
*/
|
||||||
|
Waves.calm = function (elements) {
|
||||||
|
elements = getWavesElements(elements);
|
||||||
|
var mouseup = {
|
||||||
|
type: 'mouseup',
|
||||||
|
button: 1
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var i = 0, len = elements.length; i < len; i++) {
|
||||||
|
Effect.hide(mouseup, elements[i]);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deprecated API fallback
|
||||||
|
*/
|
||||||
|
Waves.displayEffect = function (options) {
|
||||||
|
console.error('Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect');
|
||||||
|
Waves.init(options);
|
||||||
|
};
|
||||||
|
|
||||||
|
return Waves;
|
||||||
|
});
|
||||||
|
$(document).ready(function () {
|
||||||
|
//Initialization
|
||||||
|
Waves.attach('.btn:not(.btn-flat), .btn-floating', ['waves-light']);
|
||||||
|
Waves.attach('.btn-flat', ['waves-effect']);
|
||||||
|
Waves.attach('.chip', ['waves-effect']);
|
||||||
|
Waves.attach('.view a .mask', ['waves-light']);
|
||||||
|
Waves.attach('.waves-light', ['waves-light']);
|
||||||
|
Waves.attach('.navbar-nav a:not(.navbar-brand), .nav-icons li a, .nav-tabs .nav-item:not(.dropdown)', ['waves-light']);
|
||||||
|
Waves.attach('.pager li a', ['waves-light']);
|
||||||
|
Waves.attach('.pagination .page-item .page-link', ['waves-effect']);
|
||||||
|
Waves.init();
|
||||||
|
});
|
208
mdb/js/modules/wow.js
Normal file
@ -0,0 +1,208 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var WOW;
|
||||||
|
|
||||||
|
(function ($) {
|
||||||
|
|
||||||
|
WOW = function WOW() {
|
||||||
|
|
||||||
|
return {
|
||||||
|
|
||||||
|
init: function init() {
|
||||||
|
|
||||||
|
var animationName = [];
|
||||||
|
|
||||||
|
var once = 1;
|
||||||
|
|
||||||
|
function mdbWow() {
|
||||||
|
|
||||||
|
var windowHeight = window.innerHeight;
|
||||||
|
var scroll = window.scrollY;
|
||||||
|
|
||||||
|
$('.wow').each(function () {
|
||||||
|
|
||||||
|
if ($(this).css('visibility') == 'visible') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (windowHeight + scroll - 100 > getOffset(this) && scroll < getOffset(this) || windowHeight + scroll - 100 > getOffset(this) + $(this).height() && scroll < getOffset(this) + $(this).height() || windowHeight + scroll == $(document).height() && getOffset(this) + 100 > $(document).height()) {
|
||||||
|
|
||||||
|
var index = $(this).index('.wow');
|
||||||
|
|
||||||
|
var delay = $(this).attr('data-wow-delay');
|
||||||
|
|
||||||
|
if (delay) {
|
||||||
|
|
||||||
|
delay = $(this).attr('data-wow-delay').slice(0, -1
|
||||||
|
|
||||||
|
);
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
var timeout = parseFloat(delay) * 1000;
|
||||||
|
|
||||||
|
$(self).addClass('animated');
|
||||||
|
$(self).css({
|
||||||
|
'visibility': 'visible'
|
||||||
|
});
|
||||||
|
$(self).css({
|
||||||
|
'animation-delay': delay
|
||||||
|
});
|
||||||
|
$(self).css({
|
||||||
|
'animation-name': animationName[index]
|
||||||
|
});
|
||||||
|
|
||||||
|
var removeTime = $(this).css('animation-duration').slice(0, -1) * 1000;
|
||||||
|
|
||||||
|
if ($(this).attr('data-wow-delay')) {
|
||||||
|
|
||||||
|
removeTime += $(this).attr('data-wow-delay').slice(0, -1) * 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
|
||||||
|
$(self).removeClass('animated');
|
||||||
|
}, removeTime);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$(this).addClass('animated');
|
||||||
|
$(this).css({
|
||||||
|
'visibility': 'visible'
|
||||||
|
});
|
||||||
|
$(this).css({
|
||||||
|
'animation-name': animationName[index]
|
||||||
|
});
|
||||||
|
|
||||||
|
var removeTime = $(this).css('animation-duration').slice(0, -1) * 1000;
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
|
||||||
|
$(self).removeClass('animated');
|
||||||
|
}, removeTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function appear() {
|
||||||
|
|
||||||
|
$('.wow').each(function () {
|
||||||
|
|
||||||
|
var index = $(this).index('.wow');
|
||||||
|
|
||||||
|
var delay = $(this).attr('data-wow-delay');
|
||||||
|
|
||||||
|
if (delay) {
|
||||||
|
|
||||||
|
delay = $(this).attr('data-wow-delay').slice(0, -1);
|
||||||
|
|
||||||
|
var timeout = parseFloat(delay) * 1000;
|
||||||
|
|
||||||
|
$(this).addClass('animated');
|
||||||
|
$(this).css({
|
||||||
|
'visibility': 'visible'
|
||||||
|
});
|
||||||
|
$(this).css({
|
||||||
|
'animation-delay': delay + 's'
|
||||||
|
});
|
||||||
|
$(this).css({
|
||||||
|
'animation-name': animationName[index]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$(this).addClass('animated');
|
||||||
|
$(this).css({
|
||||||
|
'visibility': 'visible'
|
||||||
|
});
|
||||||
|
$(this).css({
|
||||||
|
'animation-name': animationName[index]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function hide() {
|
||||||
|
|
||||||
|
var windowHeight = window.innerHeight;
|
||||||
|
var scroll = window.scrollY;
|
||||||
|
|
||||||
|
$('.wow.animated').each(function () {
|
||||||
|
|
||||||
|
if (windowHeight + scroll - 100 > getOffset(this) && scroll > getOffset(this) + 100 || windowHeight + scroll - 100 < getOffset(this) && scroll < getOffset(this) + 100 || getOffset(this) + $(this).height > $(document).height() - 100) {
|
||||||
|
|
||||||
|
$(this).removeClass('animated');
|
||||||
|
$(this).css({
|
||||||
|
'animation-name': 'none'
|
||||||
|
});
|
||||||
|
$(this).css({
|
||||||
|
'visibility': 'hidden'
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
|
||||||
|
var removeTime = $(this).css('animation-duration').slice(0, -1) * 1000;
|
||||||
|
|
||||||
|
if ($(this).attr('data-wow-delay')) {
|
||||||
|
|
||||||
|
removeTime += $(this).attr('data-wow-delay').slice(0, -1) * 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
|
||||||
|
$(self).removeClass('animated');
|
||||||
|
}, removeTime);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
mdbWow();
|
||||||
|
|
||||||
|
once--;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getOffset(elem) {
|
||||||
|
|
||||||
|
var box = elem.getBoundingClientRect();
|
||||||
|
|
||||||
|
var body = document.body;
|
||||||
|
var docEl = document.documentElement;
|
||||||
|
|
||||||
|
var scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;
|
||||||
|
|
||||||
|
var clientTop = docEl.clientTop || body.clientTop || 0;
|
||||||
|
|
||||||
|
var top = box.top + scrollTop - clientTop;
|
||||||
|
|
||||||
|
return Math.round(top);
|
||||||
|
}
|
||||||
|
|
||||||
|
$('.wow').each(function () {
|
||||||
|
|
||||||
|
$(this).css({
|
||||||
|
'visibility': 'hidden'
|
||||||
|
});
|
||||||
|
animationName[$(this).index('.wow')] = $(this).css('animation-name');
|
||||||
|
$(this).css({
|
||||||
|
'animation-name': 'none'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$(window).scroll(function () {
|
||||||
|
|
||||||
|
if (once) {
|
||||||
|
|
||||||
|
hide();
|
||||||
|
} else {
|
||||||
|
|
||||||
|
mdbWow();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
appear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})(jQuery);
|
5
mdb/js/popper.min.js
vendored
Normal file
1
mdb/scss/_custom-styles.scss
Normal file
@ -0,0 +1 @@
|
|||||||
|
// Your custom styles
|
1
mdb/scss/_custom-variables.scss
Normal file
@ -0,0 +1 @@
|
|||||||
|
// Your custom variables
|
151
mdb/scss/addons/_datatables-select.scss
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
/*
|
||||||
|
* MDBootstrap integration with Datatables
|
||||||
|
* Learn more: https://mdbootstrap.com/docs/jquery/tables/datatables/
|
||||||
|
* About MDBootstrap: https://mdbootstrap.com/
|
||||||
|
*
|
||||||
|
* This combined file was created taking that code from this webstie:
|
||||||
|
* https://cdn.datatables.net/select/1.2.7/css/select.dataTables.min.css
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* To rebuild or modify this file with the latest versions of the included
|
||||||
|
* software please visit:
|
||||||
|
* https://datatables.net/download/#bs4/dt-1.10.18
|
||||||
|
*
|
||||||
|
* Included libraries:
|
||||||
|
* DataTables 1.10.18
|
||||||
|
*/
|
||||||
|
|
||||||
|
table {
|
||||||
|
&.dataTable {
|
||||||
|
tbody > tr {
|
||||||
|
&.selected,
|
||||||
|
> .selected {
|
||||||
|
background-color: #b0bed9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.stripe, &.display {
|
||||||
|
tbody > tr.odd {
|
||||||
|
&.selected,
|
||||||
|
> .selected {
|
||||||
|
background-color: #acbad4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.hover, &.display {
|
||||||
|
tbody > tr {
|
||||||
|
&.selected:hover,
|
||||||
|
> .selected:hover {
|
||||||
|
background-color: #aab7d1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.order-column, &.display {
|
||||||
|
tbody > tr {
|
||||||
|
&.selected > {
|
||||||
|
.sorting_1, .sorting_2, .sorting_3 {
|
||||||
|
background-color: #acbad5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
> .selected {
|
||||||
|
background-color: #acbad5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.display, &.order-column.stripe {
|
||||||
|
tbody > tr {
|
||||||
|
&.odd.selected > .sorting_1 {
|
||||||
|
background-color: #a6b4cd;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.display tbody > tr.odd.selected > .sorting_2, &.order-column.stripe tbody > tr.odd.selected > .sorting_2 {
|
||||||
|
background-color: #a8b5cf;
|
||||||
|
}
|
||||||
|
&.display tbody > tr.odd.selected > .sorting_3, &.order-column.stripe tbody > tr.odd.selected > .sorting_3 {
|
||||||
|
background-color: #a9b7d1;
|
||||||
|
}
|
||||||
|
&.display tbody > tr.even.selected > .sorting_1, &.order-column.stripe tbody > tr.even.selected > .sorting_1 {
|
||||||
|
background-color: #acbad5;
|
||||||
|
}
|
||||||
|
&.display tbody > tr.even.selected > .sorting_2, &.order-column.stripe tbody > tr.even.selected > .sorting_2 {
|
||||||
|
background-color: #aebcd6;
|
||||||
|
}
|
||||||
|
&.display tbody > tr.even.selected > .sorting_3, &.order-column.stripe tbody > tr.even.selected > .sorting_3 {
|
||||||
|
background-color: #afbdd8;
|
||||||
|
}
|
||||||
|
&.display tbody > tr.odd > .selected, &.order-column.stripe tbody > tr.odd > .selected {
|
||||||
|
background-color: #a6b4cd;
|
||||||
|
}
|
||||||
|
&.display tbody > tr.even > .selected, &.order-column.stripe tbody > tr.even > .selected {
|
||||||
|
background-color: #acbad5;
|
||||||
|
}
|
||||||
|
&.display tbody > tr.selected:hover > .sorting_1, &.order-column.hover tbody > tr.selected:hover > .sorting_1 {
|
||||||
|
background-color: #a2aec7;
|
||||||
|
}
|
||||||
|
&.display tbody > tr.selected:hover > .sorting_2, &.order-column.hover tbody > tr.selected:hover > .sorting_2 {
|
||||||
|
background-color: #a3b0c9;
|
||||||
|
}
|
||||||
|
&.display tbody > tr.selected:hover > .sorting_3, &.order-column.hover tbody > tr.selected:hover > .sorting_3 {
|
||||||
|
background-color: #a5b2cb;
|
||||||
|
}
|
||||||
|
&.display, &.order-column.hover {
|
||||||
|
tbody > tr {
|
||||||
|
&:hover > .selected, > .selected:hover {
|
||||||
|
background-color: #a2aec7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tbody {
|
||||||
|
td.select-checkbox, th.select-checkbox {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
td, th {
|
||||||
|
&.select-checkbox {
|
||||||
|
&:before,
|
||||||
|
&:after {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 1.2em;
|
||||||
|
left: 50%;
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
td.select-checkbox:before,
|
||||||
|
th.select-checkbox:before {
|
||||||
|
content: ' ';
|
||||||
|
margin-top: 4px;
|
||||||
|
margin-left: -6px;
|
||||||
|
border: 1px solid black;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tr.selected {
|
||||||
|
td.select-checkbox:after,
|
||||||
|
th.select-checkbox:after {
|
||||||
|
content: '\2714';
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-left: -4px;
|
||||||
|
text-align: center;
|
||||||
|
text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_wrapper span {
|
||||||
|
&.select-info, &.select-item {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 640px) {
|
||||||
|
div.dataTables_wrapper span {
|
||||||
|
&.select-info, &.select-item {
|
||||||
|
margin-left: 0;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
157
mdb/scss/addons/_datatables.scss
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
/*
|
||||||
|
* MDBootstrap integration with Datatables
|
||||||
|
* Learn more: https://mdbootstrap.com/docs/jquery/tables/datatables/
|
||||||
|
* About MDBootstrap: https://mdbootstrap.com/
|
||||||
|
*
|
||||||
|
* This combined file was created by the DataTables downloader builder:
|
||||||
|
* https://datatables.net/download
|
||||||
|
*
|
||||||
|
* To rebuild or modify this file with the latest versions of the included
|
||||||
|
* software please visit:
|
||||||
|
* https://datatables.net/download/#bs4/dt-1.10.18
|
||||||
|
*
|
||||||
|
* Included libraries:
|
||||||
|
* DataTables 1.10.18
|
||||||
|
*/
|
||||||
|
|
||||||
|
table.dataTable thead {
|
||||||
|
cursor: pointer;
|
||||||
|
> tr > {
|
||||||
|
th:active, td:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_wrapper div {
|
||||||
|
&.dataTables_length {
|
||||||
|
&.d-flex.flex-row {
|
||||||
|
label {
|
||||||
|
margin-top: 1.2rem;
|
||||||
|
margin-right: 1rem;
|
||||||
|
}
|
||||||
|
.select-wrapper.mdb-select {
|
||||||
|
span, .select-dropdown {
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.dataTables_length,
|
||||||
|
&.dataTables_filter {
|
||||||
|
label {
|
||||||
|
text-align: left;
|
||||||
|
font-weight: normal;
|
||||||
|
padding-top: .5rem;
|
||||||
|
padding-bottom: .5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.dataTables_length {
|
||||||
|
select, input {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.dataTables_filter {
|
||||||
|
select,
|
||||||
|
input {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
margin-left: .5rem;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
&.dataTables_info,
|
||||||
|
&.dataTables_paginate {
|
||||||
|
font-weight: normal;
|
||||||
|
padding-top: 1rem;
|
||||||
|
padding-bottom: 1rem;
|
||||||
|
}
|
||||||
|
&.dataTables_paginate {
|
||||||
|
text-align: right;
|
||||||
|
margin: 0;
|
||||||
|
ul.pagination {
|
||||||
|
-webkit-box-pack: end;
|
||||||
|
-webkit-justify-content: flex-end;
|
||||||
|
-ms-flex-pack: end;
|
||||||
|
justify-content: flex-end;
|
||||||
|
.page-item {
|
||||||
|
&.active .page-link:focus {
|
||||||
|
background-color: #4285f4;
|
||||||
|
}
|
||||||
|
.page-link:focus {
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
div.dataTables_wrapper div {
|
||||||
|
.dataTables_length, .dataTables_filter, .dataTables_info, .dataTables_paginate ul.pagination {
|
||||||
|
text-align: center;
|
||||||
|
-webkit-box-pack: center;
|
||||||
|
-webkit-justify-content: center;
|
||||||
|
-ms-flex-pack: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bs-select select {
|
||||||
|
display: inline-block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable thead {
|
||||||
|
> tr > {
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
&.sorting_asc, &.sorting_desc, &.sorting {
|
||||||
|
padding-right: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
th:active, td:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.sorting, .sorting_asc, .sorting_desc, .sorting_asc_disabled, .sorting_desc_disabled {
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.sorting,
|
||||||
|
.sorting_asc,
|
||||||
|
.sorting_desc,
|
||||||
|
.sorting_asc_disabled,
|
||||||
|
.sorting_desc_disabled {
|
||||||
|
&:before, &:after {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0.9em;
|
||||||
|
display: block;
|
||||||
|
opacity: 0.3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.sorting:before, .sorting_asc:before, .sorting_desc:before, .sorting_asc_disabled:before, .sorting_desc_disabled:before {
|
||||||
|
right: 1em;
|
||||||
|
content: "\f0de";
|
||||||
|
}
|
||||||
|
.sorting:after, .sorting_asc:after, .sorting_desc:after, .sorting_asc_disabled:after, .sorting_desc_disabled:after {
|
||||||
|
content: "\f0dd";
|
||||||
|
right: 16px;
|
||||||
|
}
|
||||||
|
.sorting:before, .sorting_asc:before, .sorting_desc:before, .sorting_asc_disabled:before, .sorting_desc_disabled:before,
|
||||||
|
.sorting:after, .sorting_asc:after, .sorting_desc:after, .sorting_asc_disabled:after, .sorting_desc_disabled:after {
|
||||||
|
font-family: 'Font Awesome\ 5 Free';
|
||||||
|
font-weight: 900;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sorting_asc:before, .sorting_desc:after {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.sorting_asc_disabled:before, .sorting_desc_disabled:after {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
6
mdb/scss/addons/_directives.scss
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
// Optional directives
|
||||||
|
@each $key in (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100) {
|
||||||
|
.opacity-#{$key} {
|
||||||
|
opacity: $key * .01;
|
||||||
|
}
|
||||||
|
}
|
1034
mdb/scss/addons/_flags.scss
Normal file
46
mdb/scss/addons/_hierarchical-display.scss
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
.zmd-hierarchical-display {
|
||||||
|
visibility: hidden;
|
||||||
|
&.in {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.zmd-hierarchical-displaying {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation {
|
||||||
|
animation-duration: 1s;
|
||||||
|
animation-fill-mode: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation.zoomedIn,
|
||||||
|
.animation.zoomedOut {
|
||||||
|
animation-timing-function: cubic-bezier(.55, 0, .1, 1); // "Swift Out" easing curve
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes zoomedIn {
|
||||||
|
from {
|
||||||
|
transform: scale(0);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes zoomedOut {
|
||||||
|
from {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: scale(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.zoomedIn {
|
||||||
|
animation-name: zoomedIn;
|
||||||
|
}
|
||||||
|
|
||||||
|
.zoomedOut {
|
||||||
|
animation-name: zoomedOut;
|
||||||
|
}
|
||||||
|
|