Add Material Design for Public and Admin
BIN
resources/theme/material-dashboard/.DS_Store
vendored
Normal file
84
resources/theme/material-dashboard/CHANGELOG.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# Change Log
|
||||
|
||||
## [2.1.0] 2018-11-13
|
||||
### Improvements, BugFixing
|
||||
- Changes for responsive devices
|
||||
- Improvements and BugFixing for documentation
|
||||
- Change versions on CSS and JS files
|
||||
- DataTable responsive fixes
|
||||
- Example Pages small establishments
|
||||
- Pro Documentation integrated in Free Version
|
||||
- New page - Error Page 404
|
||||
- Eliminated extra CSS and JS
|
||||
|
||||
## [2.0.2] 2018-06-21
|
||||
### BugFixing
|
||||
- Multilevel dropdown integration
|
||||
- Small changes for responsive devices
|
||||
- Fixed-plugin in user archive integration
|
||||
- Speed optimizations
|
||||
- Documentation errors fixed
|
||||
- Gulp compiling of the SASS files
|
||||
- Change versions on CSS and JS files
|
||||
- Small changes for components
|
||||
|
||||
## [2.0.1] 2018-03-21
|
||||
### BugFixing
|
||||
- Fixed validation inputs
|
||||
- Fixed SweetAlert
|
||||
- Navbar dropdown fixed on mobile responsive
|
||||
|
||||
## [2.0.0] 2018-03-15
|
||||
### Bootstrap 4 update
|
||||
- Core base code on Bootstrap 4
|
||||
- Documentation code base written from scratch
|
||||
- Speed optimizations
|
||||
- Class changes :
|
||||
.card-block to .card-body
|
||||
.navbar-toggleable-* to .navbar-expand-*
|
||||
.hidden-*-down to .d-none .d-*-block
|
||||
.hidden-*-up to .d-*-none
|
||||
.checkbox to .form-check
|
||||
.radio to .form-check
|
||||
- more class changes here: https://getbootstrap.com/docs/4.0/migration/
|
||||
- Bug fixes for responsive devices
|
||||
- Small changes for components
|
||||
|
||||
## [1.2.1] 2017-11-17
|
||||
### RTL Support
|
||||
- added new page with `RTL Support`
|
||||
|
||||
### BugFixing
|
||||
- SweetAlert fixed on IE and browser console fixed error
|
||||
- Replaced `es6-promise-auto.min.js` library with `core.js` (CDN script)
|
||||
- `Chartist.js` fixed error from browser console
|
||||
- `PerfectScrollbar` fixed on IE
|
||||
|
||||
|
||||
## [1.2.0] 2017-09-05
|
||||
### BugFixing, Plugin Change
|
||||
- Added a new Sidebar-menu ( the old one was replaced ) and a new color for the Sidebar-menu `red` with `white` the active color
|
||||
- Plugins that were updated to the latest versions:
|
||||
- jquery.min.js `3.2.1`
|
||||
- es6-promise-auto.min.js `4.1.1`
|
||||
- noUiSlider.min.js `10.0.0`
|
||||
- chartist.min.js `0.11.0`
|
||||
- fullcalendar.min.js `3.5.0`
|
||||
- jquery.bootstrap-wizard.js `1.4.2`
|
||||
- jquery.select-bootstrap.js `1.12.2`
|
||||
- Added `Arrive.js` library for elements that are inserted dinamically
|
||||
- Removed `jquery.mobile-1.4.5.min.js` library because this it's not compatible with jquery 3+
|
||||
- Added version in CSS and JS links
|
||||
- Bug Fixes
|
||||
|
||||
## [1.1.0] 2016-11-17
|
||||
### BugFixing, Plugin Change
|
||||
- Fix bug on main panel > content while you use the Sidebar Mini
|
||||
- Replaced select plugin with a more complex select `bootstrap-select`
|
||||
- Added File Input library by Jasny
|
||||
- change filter colors for example pages
|
||||
- fix Charts responsive issue when switching from Desktop to Mobile
|
||||
- added `PerfectScrollbar` just for Windows, fix problem in MacOs and Ubuntu
|
||||
|
||||
## [1.0.0] 2016-11-03
|
||||
### Initial Release
|
||||
185
resources/theme/material-dashboard/README.md
Normal file
@@ -0,0 +1,185 @@
|
||||
# [Material Dashboard PRO](https://creativetimofficial.github.io/material-dashboard-pro/examples/dashboard.html) [](https://twitter.com/home?status=Material%20Dashboard,%20a%20free%20Material%20Bootstrap%204%20Admin%20Template%20%E2%9D%A4%EF%B8%8F%20https%3A//bit.ly/2Lyat1Y%20%23bootstrap%20%23material%20%23design%20%23developers%20%23freebie%20%20via%20%40CreativeTim)
|
||||
|
||||
|
||||
 [](https://github.com/creativetimofficial/ct-material-dashboard-pro/issues?q=is%3Aopen+is%3Aissue) [](https://github.com/creativetimofficial/ct-material-dashboard-pro/issues?q=is%3Aissue+is%3Aclosed) [](https://gitter.im/creative-tim-general/Lobby) [](https://discord.gg/E4aHAQy)
|
||||
|
||||
|
||||

|
||||
|
||||
Material Dashboard PRO is a Premium Material Bootstrap 4 Admin with a fresh, new design inspired by Google's Material Design. It is based on the popular Bootstrap 4 framework and comes packed with multiple third-party plugins. All components are built to fit perfectly with each other, while aligning to the material concepts.
|
||||
|
||||
Material Dashboard PRO makes use of light, surface and movement. The general layout resembles sheets of paper following multiple layers, so that the depth and order is obvious. Inside the archive you will find multiple example pages on how to use all components. And, of course, every element is documented.
|
||||
|
||||
This dashboard is the bigger version for the [Material Dashboard](https://www.creative-tim.com/product/material-dashboard), which is available for free download. We have created the PRO version based on the feedback we received from people using the demo. We tried to keep it as lean as possible, but provide all the necessary tools for developing a complex product. The result is a powerful dashboard that can easily help you build admin panels, CRMs or content management systems.
|
||||
|
||||
|
||||
Material Dashboard PRO has the same line of design as the Material Kit PRO, so they go together quite good. If you think you will need more landing and example pages, be sure to check it out. If you love material design, you'll probably enjoy using these products!
|
||||
|
||||
|
||||
#### Special thanks
|
||||
During the development of this dashboard, we have used many existing resources from awesome developers. We want to thank them for providing their tools open source:
|
||||
- [Robert McIntosh](https://github.com/mouse0270/bootstrap-notify) for the notification system.
|
||||
- [Chartist](https://gionkunz.github.io/chartist-js/) for the wonderful charts
|
||||
- [Tristan Edwards](https://twitter.com/t4t5) for the [Sweet Alert2](https://sweetalert2.github.io/)
|
||||
- [Eonasdan](https://github.com/Eonasdan) for the - [DateTimPicker](https://eonasdan.github.io/bootstrap-datetimepicker/)
|
||||
- Kirill Lebedev for [jVector Maps](http://jvectormap.com/)
|
||||
- [Vincent Gabriel](https://twitter.com/gabrielva) for the - [Bootstrap Wizard](http://vinceg.github.io/twitter-bootstrap-wizard/)
|
||||
|
||||
|
||||
Let us know your thoughts below. And good luck with development!
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
* [Versions](#versions)
|
||||
* [Demo](#demo)
|
||||
* [Quick Start](#quick-start)
|
||||
* [Documentation](#documentation)
|
||||
* [File Structure](#file-structure)
|
||||
* [Browser Support](#browser-support)
|
||||
* [Resources](#resources)
|
||||
* [Reporting Issues](#reporting-issues)
|
||||
* [Technical Support or Questions](#technical-support-or-questions)
|
||||
* [Licensing](#licensing)
|
||||
* [Useful Links](#useful-links)
|
||||
|
||||
|
||||
|
||||
## Versions
|
||||
|
||||
[<img src="https://s3.amazonaws.com/creativetim_bucket/github/html.png" width="60" height="60" />](https://www.creative-tim.com/product/material-dashboard-pro)[<img src="https://s3.amazonaws.com/creativetim_bucket/github/react.svg" width="60" height="60" />](https://www.creative-tim.com/product/material-dashboard-pro-react)[<img src="https://s3.amazonaws.com/creativetim_bucket/github/vuejs.png" width="60" height="60" />](https://www.creative-tim.com/product/vue-material-dashboard-pro)[<img src="https://s3.amazonaws.com/creativetim_bucket/github/angular.png" width="60" height="60" />](https://www.creative-tim.com/product/material-dashboard-pro-angular2)
|
||||
|
||||
|
||||
|
||||
| HTML | React | Vue | Angular |
|
||||
| --- | --- | --- | --- |
|
||||
| [![Material Dashboard PRO HTML]()](https://www.creative-tim.com/product/material-dashboard-pro) | [![Material Dashboard PRO React]()](https://www.creative-tim.com/product/material-dashboard-pro-react) | [![Vue Material Dashboard PRO]()](https://www.creative-tim.com/product/vue-material-dashboard-pro) | [![Material Dashboard PRO Angular]()](https://www.creative-tim.com/product/material-dashboard-pro-angular2)
|
||||
|
||||
|
||||
|
||||
## Demo
|
||||
|
||||
- [Start page](https://creativetimofficial.github.io/material-dashboard-pro/examples/dashboard.html)
|
||||
- [User profile page](https://demos.creative-tim.com/material-dashboard-pro/examples/pages/user.html)
|
||||
- [Tables page ](https://demos.creative-tim.com/material-dashboard-pro/examples/tables/extended.html)
|
||||
- [Maps Page](https://demos.creative-tim.com/material-dashboard-pro/examples/maps/google.html)
|
||||
- [Notifications page](https://demos.creative-tim.com/material-dashboard-pro/examples/components/notifications.html)
|
||||
|
||||
[View More](https://creativetimofficial.github.io/material-dashboard-pro/examples/dashboard.html).
|
||||
|
||||
|
||||
## Quick start
|
||||
|
||||
- Buy from [Creative Tim](https://www.creative-tim.com/product/material-dashboard-pro)
|
||||
|
||||
|
||||
## Documentation
|
||||
The documentation for the Material Dashboard PRO is hosted at our [website](https://demos.creative-tim.com/material-dashboard-pro/docs/2.1/getting-started/introduction.html).
|
||||
|
||||
|
||||
## File Structure
|
||||
Within the download you'll find the following directories and files:
|
||||
|
||||
```
|
||||
material-dashboard-pro/
|
||||
├── CHANGELOG.md
|
||||
├── README.md
|
||||
├── assets/
|
||||
│ ├── css/
|
||||
│ │ ├── material-dashboard.css
|
||||
│ │ ├── material-dashboard.css.map
|
||||
│ │ ├── material-dashboard.min.css
|
||||
│ ├── demo/
|
||||
│ │ ├── demo.css
|
||||
│ │ └── demo.js
|
||||
│ ├── img/
|
||||
│ ├── js/
|
||||
│ │ ├── core/
|
||||
│ │ │ ├── bootstrap-material-design.min.js
|
||||
│ │ │ ├── jquery.min.js
|
||||
│ │ │ └── popper.min.js
|
||||
│ │ ├── material-dashboard.js
|
||||
│ │ ├── material-dashboard.js.map
|
||||
│ │ ├── material-dashboard.min.js
|
||||
│ │ └── plugins/
|
||||
│ └── scss/
|
||||
│ ├── material-dashboard/
|
||||
│ └── material-dashboard.scss
|
||||
├── docs
|
||||
│ └── documentation.html
|
||||
├── examples
|
||||
│ ├── dashboard.html
|
||||
│ ├── calendar.html
|
||||
│ ├── charts.html
|
||||
│ ├── components/
|
||||
│ ├── forms/
|
||||
│ ├── maps/
|
||||
│ ├── pages/
|
||||
│ ├── tables/
|
||||
│ └── widgets.html
|
||||
├── gulpfile.js
|
||||
├── package.json
|
||||
└── template.html
|
||||
|
||||
```
|
||||
|
||||
|
||||
## Browser Support
|
||||
|
||||
At present, we officially aim to support the last two versions of the following browsers:
|
||||
|
||||
<img src="https://s3.amazonaws.com/creativetim_bucket/github/browser/chrome.png" width="64" height="64"> <img src="https://s3.amazonaws.com/creativetim_bucket/github/browser/firefox.png" width="64" height="64"> <img src="https://s3.amazonaws.com/creativetim_bucket/github/browser/edge.png" width="64" height="64"> <img src="https://s3.amazonaws.com/creativetim_bucket/github/browser/safari.png" width="64" height="64"> <img src="https://s3.amazonaws.com/creativetim_bucket/github/browser/opera.png" width="64" height="64">
|
||||
|
||||
|
||||
|
||||
## Resources
|
||||
- Demo: <https://creativetimofficial.github.io/material-dashboard-pro/examples/dashboard.html>
|
||||
- Download Page: <https://www.creative-tim.com/product/material-dashboard-pro>
|
||||
- Documentation: <https://demos.creative-tim.com/material-dashboard-pro/docs/2.1/getting-started/introduction.html>
|
||||
- License Agreement: <https://www.creative-tim.com/license>
|
||||
- Support: <https://www.creative-tim.com/contact-us>
|
||||
- Issues: [Github Issues Page](https://github.com/creativetimofficial/ct-material-dashboard-pro/issues)
|
||||
- [Material Kit](https://www.creative-tim.com/product/material-kit?ref=github-md-free) - For Front End Development
|
||||
|
||||
## Reporting Issues
|
||||
|
||||
We use GitHub Issues as the official bug tracker for the Material Dashboard. Here are some advices for our users that want to report an issue:
|
||||
|
||||
1. Make sure that you are using the latest version of the Material Dashboard. Check the CHANGELOG from your dashboard on our [website](https://www.creative-tim.com/).
|
||||
2. Providing us reproducible steps for the issue will shorten the time it takes for it to be fixed.
|
||||
3. Some issues may be browser specific, so specifying in what browser you encountered the issue might help.
|
||||
|
||||
|
||||
## Technical Support or Questions
|
||||
|
||||
If you have questions or need help integrating the product please [contact us](https://www.creative-tim.com/contact-us) instead of opening an issue.
|
||||
|
||||
|
||||
|
||||
## Licensing
|
||||
|
||||
- Copyright 2018 Creative Tim (https://www.creative-tim.com/)
|
||||
|
||||
- Creative Tim [license](https://www.creative-tim.com/license)
|
||||
|
||||
|
||||
|
||||
## Useful Links
|
||||
|
||||
- [More products](https://www.creative-tim.com/bootstrap-themes) from Creative Tim
|
||||
- [Tutorials](https://www.youtube.com/channel/UCVyTG4sCw-rOvB9oHkzZD1w)
|
||||
- [Freebies](https://www.creative-tim.com/bootstrap-themes/free) from Creative Tim
|
||||
- [Affiliate Program](https://www.creative-tim.com/affiliates/new) (earn money)
|
||||
|
||||
##### Social Media
|
||||
|
||||
Twitter: <https://twitter.com/CreativeTim>
|
||||
|
||||
Facebook: <https://www.facebook.com/CreativeTim>
|
||||
|
||||
Dribbble: <https://dribbble.com/creativetim>
|
||||
|
||||
Google+: <https://plus.google.com/+CreativetimPage>
|
||||
|
||||
Instagram: <https://www.instagram.com/CreativeTimOfficial>
|
||||
|
||||
29292
resources/theme/material-dashboard/assets/css/material-dashboard.css
vendored
Normal file
38
resources/theme/material-dashboard/assets/css/material-dashboard.min.css
vendored
Normal file
1564
resources/theme/material-dashboard/assets/css/partials/dashboard/core/bootstrap/scss/bootstrap-grid.css
vendored
Normal file
@@ -0,0 +1,347 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v4.0.0 (https://getbootstrap.com)
|
||||
* Copyright 2011-2018 The Bootstrap Authors
|
||||
* Copyright 2011-2018 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
|
||||
*/
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: sans-serif;
|
||||
line-height: 1.15;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
-ms-overflow-style: scrollbar;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
@-ms-viewport {
|
||||
width: device-width;
|
||||
}
|
||||
|
||||
article,
|
||||
aside,
|
||||
dialog,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
nav,
|
||||
section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
font-size: 1rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
color: #212529;
|
||||
text-align: left;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
[tabindex="-1"]:focus {
|
||||
outline: 0 !important;
|
||||
}
|
||||
|
||||
hr {
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
abbr[title],
|
||||
abbr[data-original-title] {
|
||||
text-decoration: underline;
|
||||
text-decoration: underline dotted;
|
||||
cursor: help;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: .5rem;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #007bff;
|
||||
text-decoration: none;
|
||||
background-color: transparent;
|
||||
-webkit-text-decoration-skip: objects;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #0056b3;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a:not([href]):not([tabindex]) {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:not([href]):not([tabindex]):hover,
|
||||
a:not([href]):not([tabindex]):focus {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:not([href]):not([tabindex]):focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
-ms-overflow-style: scrollbar;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
img {
|
||||
vertical-align: middle;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: 0.75rem;
|
||||
padding-bottom: 0.75rem;
|
||||
color: #6c757d;
|
||||
text-align: left;
|
||||
caption-side: bottom;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
margin-bottom: .5rem;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus {
|
||||
outline: 1px dotted;
|
||||
outline: 5px auto -webkit-focus-ring-color;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
button,
|
||||
html [type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
input[type="date"],
|
||||
input[type="time"],
|
||||
input[type="datetime-local"],
|
||||
input[type="month"] {
|
||||
-webkit-appearance: listbox;
|
||||
}
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: .5rem;
|
||||
font-size: 1.5rem;
|
||||
line-height: inherit;
|
||||
color: inherit;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type="search"] {
|
||||
outline-offset: -2px;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
[type="search"]::-webkit-search-cancel-button,
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=bootstrap-reboot.css.map */
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "AAAA;;;;;;GAMG;ACcH;;QAES;EACP,UAAU,EAAE,UAAU;;AAGxB,IAAK;EACH,WAAW,EAAE,UAAU;EACvB,WAAW,EAAE,IAAI;EACjB,wBAAwB,EAAE,IAAI;EAC9B,oBAAoB,EAAE,IAAI;EAC1B,kBAAkB,EAAE,SAAS;EAC7B,2BAA2B,EAAE,WAAgB;;AAK7C,aAEC;EADC,KAAK,EAAE,YAAY;AAMvB,sFAAuF;EACrF,OAAO,EAAE,KAAK;;AAWhB,IAAK;EACH,MAAM,EAAE,CAAC;EACT,WAAW,EC4KiB,oJAAuB;ED3KnD,SAAS,EC8KmB,IAAI;ED7KhC,WAAW,ECqLiB,GAAmB;EDpL/C,WAAW,ECqLiB,GAAG;EDpL/B,KAAK,ECyzB6B,OAAS;EDxzB3C,UAAU,EAAE,IAAI;EAChB,gBAAgB,ECozBkB,IAAM;;AD5yB1C,qBAAsB;EACpB,OAAO,EAAE,YAAY;;AASvB,EAAG;EACD,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,OAAO;;AAanB,sBAAuB;EACrB,UAAU,EAAE,CAAC;EACb,aAAa,ECuJgB,MAAW;;AD/I1C,CAAE;EACA,UAAU,EAAE,CAAC;EACb,aAAa,ECgDa,IAAI;;ADtChC;yBAC0B;EACxB,eAAe,EAAE,SAAS;EAC1B,eAAe,EAAE,gBAAgB;EACjC,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,CAAC;;AAGlB,OAAQ;EACN,aAAa,EAAE,IAAI;EACnB,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,OAAO;;AAGtB;;EAEG;EACD,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,IAAI;;AAGrB;;;KAGM;EACJ,aAAa,EAAE,CAAC;;AAGlB,EAAG;EACD,WAAW,ECsIiB,GAAiB;;ADnI/C,EAAG;EACD,aAAa,EAAE,KAAK;EACpB,WAAW,EAAE,CAAC;;AAGhB,UAAW;EACT,MAAM,EAAE,QAAQ;;AAGlB,GAAI;EACF,UAAU,EAAE,MAAM;;AAIpB;MACO;EACL,WAAW,EAAE,MAAM;;AAIrB,KAAM;EACJ,SAAS,EAAE,GAAG;;AAQhB;GACI;EACF,QAAQ,EAAE,QAAQ;EAClB,SAAS,EAAE,GAAG;EACd,WAAW,EAAE,CAAC;EACd,cAAc,EAAE,QAAQ;;AAG1B,GAAI;EAAE,MAAM,EAAE,MAAM;;AACpB,GAAI;EAAE,GAAG,EAAE,KAAK;;AAOhB,CAAE;EACA,KAAK,EC+lB6B,OAAqB;ED9lBvD,eAAe,ECjDW,IAAI;EDkD9B,gBAAgB,EAAE,WAAW;EAC7B,4BAA4B,EAAE,OAAO;EE3LrC,OAAQ;IF8LN,KAAK,ECgb2B,OAAiB;ID/ajD,eAAe,ECrDS,SAAS;;AD+DrC,6BAA8B;EAC5B,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,IAAI;EEvMrB,wEACQ;IFyMN,KAAK,EAAE,OAAO;IACd,eAAe,EAAE,IAAI;EAGvB,mCAAQ;IACN,OAAO,EAAE,CAAC;;AAUd;;;IAGK;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAE,GAAG;;AAIhB,GAAI;EAEF,UAAU,EAAE,CAAC;EAEb,aAAa,EAAE,IAAI;EAEnB,QAAQ,EAAE,IAAI;EAGd,kBAAkB,EAAE,SAAS;;AAQ/B,MAAO;EAEL,MAAM,EAAE,QAAQ;;AAQlB,GAAI;EACF,cAAc,EAAE,MAAM;EACtB,YAAY,EAAE,IAAI;;AAGpB,cAAe;EACb,QAAQ,EAAE,MAAM;;AAQlB,KAAM;EACJ,eAAe,EAAE,QAAQ;;AAG3B,OAAQ;EACN,WAAW,ECSiB,OAAM;EDRlC,cAAc,ECQc,OAAM;EDPlC,KAAK,ECuiB6B,OAAS;EDtiB3C,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,MAAM;;AAGtB,EAAG;EAGD,UAAU,EAAE,OAAO;;AAQrB,KAAM;EAEJ,OAAO,EAAE,YAAY;EACrB,aAAa,EAAE,KAAK;;AAMtB,MAAO;EACL,aAAa,EAAE,CAAC;;AAOlB,YAAa;EACX,OAAO,EAAE,UAAU;EACnB,OAAO,EAAE,iCAAiC;;AAG5C;;;;QAIS;EACP,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,OAAO;EAClB,WAAW,EAAE,OAAO;;AAGtB;KACM;EACJ,QAAQ,EAAE,OAAO;;AAGnB;MACO;EACL,cAAc,EAAE,IAAI;;AAMtB;;;eAGgB;EACd,kBAAkB,EAAE,MAAM;;AAI5B;;;iCAGkC;EAChC,OAAO,EAAE,CAAC;EACV,YAAY,EAAE,IAAI;;AAGpB;sBACuB;EACrB,UAAU,EAAE,UAAU;EACtB,OAAO,EAAE,CAAC;;AAIZ;;;mBAGoB;EAMlB,kBAAkB,EAAE,OAAO;;AAG7B,QAAS;EACP,QAAQ,EAAE,IAAI;EAEd,MAAM,EAAE,QAAQ;;AAGlB,QAAS;EAMP,SAAS,EAAE,CAAC;EAEZ,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,CAAC;;AAKX,MAAO;EACL,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,CAAC;EACV,aAAa,EAAE,KAAK;EACpB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,OAAO;EACpB,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,MAAM;;AAGrB,QAAS;EACP,cAAc,EAAE,QAAQ;;AAI1B;0CAC2C;EACzC,MAAM,EAAE,IAAI;;AAGd,eAAgB;EAKd,cAAc,EAAE,IAAI;EACpB,kBAAkB,EAAE,IAAI;;AAO1B;0CAC2C;EACzC,kBAAkB,EAAE,IAAI;;AAQ1B,4BAA6B;EAC3B,IAAI,EAAE,OAAO;EACb,kBAAkB,EAAE,MAAM;;AAO5B,MAAO;EACL,OAAO,EAAE,YAAY;;AAGvB,OAAQ;EACN,OAAO,EAAE,SAAS;EAClB,MAAM,EAAE,OAAO;;AAGjB,QAAS;EACP,OAAO,EAAE,IAAI;;AAKf,QAAS;EACP,OAAO,EAAE,eAAe",
|
||||
"sources": ["../../../../../../scss/partials/dashboard/core/bootstrap/scss/bootstrap-reboot.scss","../../../../../../scss/partials/dashboard/core/bootstrap/scss/_reboot.scss","../../../../../../scss/partials/dashboard/core/bootstrap/scss/_variables.scss","../../../../../../scss/partials/dashboard/core/bootstrap/scss/mixins/_hover.scss"],
|
||||
"names": [],
|
||||
"file": "bootstrap-reboot.css"
|
||||
}
|
||||
8369
resources/theme/material-dashboard/assets/css/partials/dashboard/core/bootstrap/scss/bootstrap.css
vendored
Normal file
1564
resources/theme/material-dashboard/assets/css/partials/kit/core/bootstrap/scss/bootstrap-grid.css
vendored
Normal file
347
resources/theme/material-dashboard/assets/css/partials/kit/core/bootstrap/scss/bootstrap-reboot.css
vendored
Normal file
@@ -0,0 +1,347 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v4.0.0 (https://getbootstrap.com)
|
||||
* Copyright 2011-2018 The Bootstrap Authors
|
||||
* Copyright 2011-2018 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
|
||||
*/
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: sans-serif;
|
||||
line-height: 1.15;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
-ms-overflow-style: scrollbar;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
@-ms-viewport {
|
||||
width: device-width;
|
||||
}
|
||||
|
||||
article,
|
||||
aside,
|
||||
dialog,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
nav,
|
||||
section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
font-size: 1rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
color: #212529;
|
||||
text-align: left;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
[tabindex="-1"]:focus {
|
||||
outline: 0 !important;
|
||||
}
|
||||
|
||||
hr {
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
abbr[title],
|
||||
abbr[data-original-title] {
|
||||
text-decoration: underline;
|
||||
text-decoration: underline dotted;
|
||||
cursor: help;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: .5rem;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #007bff;
|
||||
text-decoration: none;
|
||||
background-color: transparent;
|
||||
-webkit-text-decoration-skip: objects;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #0056b3;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a:not([href]):not([tabindex]) {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:not([href]):not([tabindex]):hover,
|
||||
a:not([href]):not([tabindex]):focus {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:not([href]):not([tabindex]):focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
-ms-overflow-style: scrollbar;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
img {
|
||||
vertical-align: middle;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: 0.75rem;
|
||||
padding-bottom: 0.75rem;
|
||||
color: #6c757d;
|
||||
text-align: left;
|
||||
caption-side: bottom;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
margin-bottom: .5rem;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus {
|
||||
outline: 1px dotted;
|
||||
outline: 5px auto -webkit-focus-ring-color;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
button,
|
||||
html [type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
input[type="date"],
|
||||
input[type="time"],
|
||||
input[type="datetime-local"],
|
||||
input[type="month"] {
|
||||
-webkit-appearance: listbox;
|
||||
}
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: .5rem;
|
||||
font-size: 1.5rem;
|
||||
line-height: inherit;
|
||||
color: inherit;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type="search"] {
|
||||
outline-offset: -2px;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
[type="search"]::-webkit-search-cancel-button,
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=bootstrap-reboot.css.map */
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "AAAA;;;;;;GAMG;ACcH;;QAES;EACP,UAAU,EAAE,UAAU;;AAGxB,IAAK;EACH,WAAW,EAAE,UAAU;EACvB,WAAW,EAAE,IAAI;EACjB,wBAAwB,EAAE,IAAI;EAC9B,oBAAoB,EAAE,IAAI;EAC1B,kBAAkB,EAAE,SAAS;EAC7B,2BAA2B,EAAE,WAAgB;;AAK7C,aAEC;EADC,KAAK,EAAE,YAAY;AAMvB,sFAAuF;EACrF,OAAO,EAAE,KAAK;;AAWhB,IAAK;EACH,MAAM,EAAE,CAAC;EACT,WAAW,EC4KiB,oJAAuB;ED3KnD,SAAS,EC8KmB,IAAI;ED7KhC,WAAW,ECqLiB,GAAmB;EDpL/C,WAAW,ECqLiB,GAAG;EDpL/B,KAAK,ECyzB6B,OAAS;EDxzB3C,UAAU,EAAE,IAAI;EAChB,gBAAgB,ECozBkB,IAAM;;AD5yB1C,qBAAsB;EACpB,OAAO,EAAE,YAAY;;AASvB,EAAG;EACD,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,OAAO;;AAanB,sBAAuB;EACrB,UAAU,EAAE,CAAC;EACb,aAAa,ECuJgB,MAAW;;AD/I1C,CAAE;EACA,UAAU,EAAE,CAAC;EACb,aAAa,ECgDa,IAAI;;ADtChC;yBAC0B;EACxB,eAAe,EAAE,SAAS;EAC1B,eAAe,EAAE,gBAAgB;EACjC,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,CAAC;;AAGlB,OAAQ;EACN,aAAa,EAAE,IAAI;EACnB,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,OAAO;;AAGtB;;EAEG;EACD,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,IAAI;;AAGrB;;;KAGM;EACJ,aAAa,EAAE,CAAC;;AAGlB,EAAG;EACD,WAAW,ECsIiB,GAAiB;;ADnI/C,EAAG;EACD,aAAa,EAAE,KAAK;EACpB,WAAW,EAAE,CAAC;;AAGhB,UAAW;EACT,MAAM,EAAE,QAAQ;;AAGlB,GAAI;EACF,UAAU,EAAE,MAAM;;AAIpB;MACO;EACL,WAAW,EAAE,MAAM;;AAIrB,KAAM;EACJ,SAAS,EAAE,GAAG;;AAQhB;GACI;EACF,QAAQ,EAAE,QAAQ;EAClB,SAAS,EAAE,GAAG;EACd,WAAW,EAAE,CAAC;EACd,cAAc,EAAE,QAAQ;;AAG1B,GAAI;EAAE,MAAM,EAAE,MAAM;;AACpB,GAAI;EAAE,GAAG,EAAE,KAAK;;AAOhB,CAAE;EACA,KAAK,EC+lB6B,OAAqB;ED9lBvD,eAAe,ECjDW,IAAI;EDkD9B,gBAAgB,EAAE,WAAW;EAC7B,4BAA4B,EAAE,OAAO;EE3LrC,OAAQ;IF8LN,KAAK,ECgb2B,OAAiB;ID/ajD,eAAe,ECrDS,SAAS;;AD+DrC,6BAA8B;EAC5B,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,IAAI;EEvMrB,wEACQ;IFyMN,KAAK,EAAE,OAAO;IACd,eAAe,EAAE,IAAI;EAGvB,mCAAQ;IACN,OAAO,EAAE,CAAC;;AAUd;;;IAGK;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAE,GAAG;;AAIhB,GAAI;EAEF,UAAU,EAAE,CAAC;EAEb,aAAa,EAAE,IAAI;EAEnB,QAAQ,EAAE,IAAI;EAGd,kBAAkB,EAAE,SAAS;;AAQ/B,MAAO;EAEL,MAAM,EAAE,QAAQ;;AAQlB,GAAI;EACF,cAAc,EAAE,MAAM;EACtB,YAAY,EAAE,IAAI;;AAGpB,cAAe;EACb,QAAQ,EAAE,MAAM;;AAQlB,KAAM;EACJ,eAAe,EAAE,QAAQ;;AAG3B,OAAQ;EACN,WAAW,ECSiB,OAAM;EDRlC,cAAc,ECQc,OAAM;EDPlC,KAAK,ECuiB6B,OAAS;EDtiB3C,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,MAAM;;AAGtB,EAAG;EAGD,UAAU,EAAE,OAAO;;AAQrB,KAAM;EAEJ,OAAO,EAAE,YAAY;EACrB,aAAa,EAAE,KAAK;;AAMtB,MAAO;EACL,aAAa,EAAE,CAAC;;AAOlB,YAAa;EACX,OAAO,EAAE,UAAU;EACnB,OAAO,EAAE,iCAAiC;;AAG5C;;;;QAIS;EACP,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,OAAO;EAClB,WAAW,EAAE,OAAO;;AAGtB;KACM;EACJ,QAAQ,EAAE,OAAO;;AAGnB;MACO;EACL,cAAc,EAAE,IAAI;;AAMtB;;;eAGgB;EACd,kBAAkB,EAAE,MAAM;;AAI5B;;;iCAGkC;EAChC,OAAO,EAAE,CAAC;EACV,YAAY,EAAE,IAAI;;AAGpB;sBACuB;EACrB,UAAU,EAAE,UAAU;EACtB,OAAO,EAAE,CAAC;;AAIZ;;;mBAGoB;EAMlB,kBAAkB,EAAE,OAAO;;AAG7B,QAAS;EACP,QAAQ,EAAE,IAAI;EAEd,MAAM,EAAE,QAAQ;;AAGlB,QAAS;EAMP,SAAS,EAAE,CAAC;EAEZ,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,CAAC;;AAKX,MAAO;EACL,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,CAAC;EACV,aAAa,EAAE,KAAK;EACpB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,OAAO;EACpB,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,MAAM;;AAGrB,QAAS;EACP,cAAc,EAAE,QAAQ;;AAI1B;0CAC2C;EACzC,MAAM,EAAE,IAAI;;AAGd,eAAgB;EAKd,cAAc,EAAE,IAAI;EACpB,kBAAkB,EAAE,IAAI;;AAO1B;0CAC2C;EACzC,kBAAkB,EAAE,IAAI;;AAQ1B,4BAA6B;EAC3B,IAAI,EAAE,OAAO;EACb,kBAAkB,EAAE,MAAM;;AAO5B,MAAO;EACL,OAAO,EAAE,YAAY;;AAGvB,OAAQ;EACN,OAAO,EAAE,SAAS;EAClB,MAAM,EAAE,OAAO;;AAGjB,QAAS;EACP,OAAO,EAAE,IAAI;;AAKf,QAAS;EACP,OAAO,EAAE,eAAe",
|
||||
"sources": ["../../../../../../scss/partials/kit/core/bootstrap/scss/bootstrap-reboot.scss","../../../../../../scss/partials/kit/core/bootstrap/scss/_reboot.scss","../../../../../../scss/partials/kit/core/bootstrap/scss/_variables.scss","../../../../../../scss/partials/kit/core/bootstrap/scss/mixins/_hover.scss"],
|
||||
"names": [],
|
||||
"file": "bootstrap-reboot.css"
|
||||
}
|
||||
8369
resources/theme/material-dashboard/assets/css/partials/kit/core/bootstrap/scss/bootstrap.css
vendored
Normal file
56
resources/theme/material-dashboard/assets/demo/demo.css
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
.tim-row {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.tim-white-buttons {
|
||||
background-color: #777777;
|
||||
}
|
||||
|
||||
.typography-line {
|
||||
padding-left: 25%;
|
||||
margin-bottom: 35px;
|
||||
position: relative;
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.typography-line span {
|
||||
bottom: 10px;
|
||||
color: #c0c1c2;
|
||||
display: block;
|
||||
font-weight: 400;
|
||||
font-size: 13px;
|
||||
line-height: 13px;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
width: 260px;
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
.tim-row {
|
||||
padding-top: 60px;
|
||||
}
|
||||
|
||||
.tim-row h3 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.tim-typo {
|
||||
padding-left: 25%;
|
||||
margin-bottom: 40px;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.tim-typo .tim-note {
|
||||
bottom: 5px;
|
||||
color: #c0c1c2;
|
||||
display: block;
|
||||
font-weight: 400;
|
||||
font-size: 13px;
|
||||
line-height: 15px;
|
||||
left: 0;
|
||||
margin-left: 20px;
|
||||
position: absolute;
|
||||
width: 260px;
|
||||
}
|
||||
1075
resources/theme/material-dashboard/assets/demo/demo.js
vendored
Normal file
BIN
resources/theme/material-dashboard/assets/img/apple-icon.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
resources/theme/material-dashboard/assets/img/bg-pricing.jpg
Normal file
|
After Width: | Height: | Size: 708 KiB |
BIN
resources/theme/material-dashboard/assets/img/bg3.jpg
Normal file
|
After Width: | Height: | Size: 267 KiB |
BIN
resources/theme/material-dashboard/assets/img/bg9.jpg
Normal file
|
After Width: | Height: | Size: 171 KiB |
BIN
resources/theme/material-dashboard/assets/img/card-1.jpeg
Normal file
|
After Width: | Height: | Size: 228 KiB |
BIN
resources/theme/material-dashboard/assets/img/card-1.jpg
Normal file
|
After Width: | Height: | Size: 228 KiB |
BIN
resources/theme/material-dashboard/assets/img/card-2.jpeg
Normal file
|
After Width: | Height: | Size: 245 KiB |
BIN
resources/theme/material-dashboard/assets/img/card-2.jpg
Normal file
|
After Width: | Height: | Size: 245 KiB |
BIN
resources/theme/material-dashboard/assets/img/card-3.jpeg
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
resources/theme/material-dashboard/assets/img/card-3.jpg
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
resources/theme/material-dashboard/assets/img/clint-mckoy.jpg
Normal file
|
After Width: | Height: | Size: 300 KiB |
BIN
resources/theme/material-dashboard/assets/img/default-avatar.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
resources/theme/material-dashboard/assets/img/faces/avatar.jpg
Normal file
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 73 KiB |
|
After Width: | Height: | Size: 47 KiB |
BIN
resources/theme/material-dashboard/assets/img/faces/marc.jpg
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
resources/theme/material-dashboard/assets/img/favicon.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
resources/theme/material-dashboard/assets/img/flags/AU.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
resources/theme/material-dashboard/assets/img/flags/BR.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
resources/theme/material-dashboard/assets/img/flags/DE.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
resources/theme/material-dashboard/assets/img/flags/GB.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
resources/theme/material-dashboard/assets/img/flags/RO.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
resources/theme/material-dashboard/assets/img/flags/US.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
resources/theme/material-dashboard/assets/img/header-doc.jpg
Normal file
|
After Width: | Height: | Size: 906 KiB |
|
After Width: | Height: | Size: 44 KiB |
BIN
resources/theme/material-dashboard/assets/img/lock.jpg
Normal file
|
After Width: | Height: | Size: 983 KiB |
BIN
resources/theme/material-dashboard/assets/img/login.jpg
Normal file
|
After Width: | Height: | Size: 535 KiB |
BIN
resources/theme/material-dashboard/assets/img/mask.png
Normal file
|
After Width: | Height: | Size: 756 B |
BIN
resources/theme/material-dashboard/assets/img/new_logo.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
resources/theme/material-dashboard/assets/img/placeholder.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
resources/theme/material-dashboard/assets/img/product1.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
resources/theme/material-dashboard/assets/img/product2.jpg
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
resources/theme/material-dashboard/assets/img/product3.jpg
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
resources/theme/material-dashboard/assets/img/register.jpg
Normal file
|
After Width: | Height: | Size: 533 KiB |
BIN
resources/theme/material-dashboard/assets/img/sidebar-1.jpg
Normal file
|
After Width: | Height: | Size: 185 KiB |
BIN
resources/theme/material-dashboard/assets/img/sidebar-2.jpg
Normal file
|
After Width: | Height: | Size: 384 KiB |
BIN
resources/theme/material-dashboard/assets/img/sidebar-3.jpg
Normal file
|
After Width: | Height: | Size: 369 KiB |
BIN
resources/theme/material-dashboard/assets/img/sidebar-4.jpg
Normal file
|
After Width: | Height: | Size: 377 KiB |
1
resources/theme/material-dashboard/assets/js/core/bootstrap-material-design.min.js
vendored
Normal file
3240
resources/theme/material-dashboard/assets/js/core/jquery.min.js
vendored
Normal file
834
resources/theme/material-dashboard/assets/js/core/popper.min.js
vendored
Normal file
@@ -0,0 +1,834 @@
|
||||
/*
|
||||
Copyright (C) Federico Zivolo 2017
|
||||
Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
|
||||
*/
|
||||
(function(e, t) {
|
||||
'object' == typeof exports && 'undefined' != typeof module ? module.exports = t() : 'function' == typeof define && define.amd ? define(t) : e.Popper = t()
|
||||
})(this, function() {
|
||||
'use strict';
|
||||
|
||||
function e(e) {
|
||||
return e && '[object Function]' === {}.toString.call(e)
|
||||
}
|
||||
|
||||
function t(e, t) {
|
||||
if (1 !== e.nodeType) return [];
|
||||
var o = window.getComputedStyle(e, null);
|
||||
return t ? o[t] : o
|
||||
}
|
||||
|
||||
function o(e) {
|
||||
return 'HTML' === e.nodeName ? e : e.parentNode || e.host
|
||||
}
|
||||
|
||||
function n(e) {
|
||||
if (!e || -1 !== ['HTML', 'BODY', '#document'].indexOf(e.nodeName)) return window.document.body;
|
||||
var i = t(e),
|
||||
r = i.overflow,
|
||||
p = i.overflowX,
|
||||
s = i.overflowY;
|
||||
return /(auto|scroll)/.test(r + s + p) ? e : n(o(e))
|
||||
}
|
||||
|
||||
function r(e) {
|
||||
var o = e && e.offsetParent,
|
||||
i = o && o.nodeName;
|
||||
return i && 'BODY' !== i && 'HTML' !== i ? -1 !== ['TD', 'TABLE'].indexOf(o.nodeName) && 'static' === t(o, 'position') ? r(o) : o : window.document.documentElement
|
||||
}
|
||||
|
||||
function p(e) {
|
||||
var t = e.nodeName;
|
||||
return 'BODY' !== t && ('HTML' === t || r(e.firstElementChild) === e)
|
||||
}
|
||||
|
||||
function s(e) {
|
||||
return null === e.parentNode ? e : s(e.parentNode)
|
||||
}
|
||||
|
||||
function d(e, t) {
|
||||
if (!e || !e.nodeType || !t || !t.nodeType) return window.document.documentElement;
|
||||
var o = e.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_FOLLOWING,
|
||||
i = o ? e : t,
|
||||
n = o ? t : e,
|
||||
a = document.createRange();
|
||||
a.setStart(i, 0), a.setEnd(n, 0);
|
||||
var f = a.commonAncestorContainer;
|
||||
if (e !== f && t !== f || i.contains(n)) return p(f) ? f : r(f);
|
||||
var l = s(e);
|
||||
return l.host ? d(l.host, t) : d(e, s(t).host)
|
||||
}
|
||||
|
||||
function a(e) {
|
||||
var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 'top',
|
||||
o = 'top' === t ? 'scrollTop' : 'scrollLeft',
|
||||
i = e.nodeName;
|
||||
if ('BODY' === i || 'HTML' === i) {
|
||||
var n = window.document.documentElement,
|
||||
r = window.document.scrollingElement || n;
|
||||
return r[o]
|
||||
}
|
||||
return e[o]
|
||||
}
|
||||
|
||||
function f(e, t) {
|
||||
var o = 2 < arguments.length && void 0 !== arguments[2] && arguments[2],
|
||||
i = a(t, 'top'),
|
||||
n = a(t, 'left'),
|
||||
r = o ? -1 : 1;
|
||||
return e.top += i * r, e.bottom += i * r, e.left += n * r, e.right += n * r, e
|
||||
}
|
||||
|
||||
function l(e, t) {
|
||||
var o = 'x' === t ? 'Left' : 'Top',
|
||||
i = 'Left' == o ? 'Right' : 'Bottom';
|
||||
return +e['border' + o + 'Width'].split('px')[0] + +e['border' + i + 'Width'].split('px')[0]
|
||||
}
|
||||
|
||||
function m(e, t, o, i) {
|
||||
return _(t['offset' + e], o['client' + e], o['offset' + e], ie() ? o['offset' + e] + i['margin' + ('Height' === e ? 'Top' : 'Left')] + i['margin' + ('Height' === e ? 'Bottom' : 'Right')] : 0)
|
||||
}
|
||||
|
||||
function h() {
|
||||
var e = window.document.body,
|
||||
t = window.document.documentElement,
|
||||
o = ie() && window.getComputedStyle(t);
|
||||
return {
|
||||
height: m('Height', e, t, o),
|
||||
width: m('Width', e, t, o)
|
||||
}
|
||||
}
|
||||
|
||||
function c(e) {
|
||||
return se({}, e, {
|
||||
right: e.left + e.width,
|
||||
bottom: e.top + e.height
|
||||
})
|
||||
}
|
||||
|
||||
function g(e) {
|
||||
var o = {};
|
||||
if (ie()) try {
|
||||
o = e.getBoundingClientRect();
|
||||
var i = a(e, 'top'),
|
||||
n = a(e, 'left');
|
||||
o.top += i, o.left += n, o.bottom += i, o.right += n
|
||||
} catch (e) {} else o = e.getBoundingClientRect();
|
||||
var r = {
|
||||
left: o.left,
|
||||
top: o.top,
|
||||
width: o.right - o.left,
|
||||
height: o.bottom - o.top
|
||||
},
|
||||
p = 'HTML' === e.nodeName ? h() : {},
|
||||
s = p.width || e.clientWidth || r.right - r.left,
|
||||
d = p.height || e.clientHeight || r.bottom - r.top,
|
||||
f = e.offsetWidth - s,
|
||||
m = e.offsetHeight - d;
|
||||
if (f || m) {
|
||||
var g = t(e);
|
||||
f -= l(g, 'x'), m -= l(g, 'y'), r.width -= f, r.height -= m
|
||||
}
|
||||
return c(r)
|
||||
}
|
||||
|
||||
function u(e, o) {
|
||||
var i = ie(),
|
||||
r = 'HTML' === o.nodeName,
|
||||
p = g(e),
|
||||
s = g(o),
|
||||
d = n(e),
|
||||
a = t(o),
|
||||
l = +a.borderTopWidth.split('px')[0],
|
||||
m = +a.borderLeftWidth.split('px')[0],
|
||||
h = c({
|
||||
top: p.top - s.top - l,
|
||||
left: p.left - s.left - m,
|
||||
width: p.width,
|
||||
height: p.height
|
||||
});
|
||||
if (h.marginTop = 0, h.marginLeft = 0, !i && r) {
|
||||
var u = +a.marginTop.split('px')[0],
|
||||
b = +a.marginLeft.split('px')[0];
|
||||
h.top -= l - u, h.bottom -= l - u, h.left -= m - b, h.right -= m - b, h.marginTop = u, h.marginLeft = b
|
||||
}
|
||||
return (i ? o.contains(d) : o === d && 'BODY' !== d.nodeName) && (h = f(h, o)), h
|
||||
}
|
||||
|
||||
function b(e) {
|
||||
var t = window.document.documentElement,
|
||||
o = u(e, t),
|
||||
i = _(t.clientWidth, window.innerWidth || 0),
|
||||
n = _(t.clientHeight, window.innerHeight || 0),
|
||||
r = a(t),
|
||||
p = a(t, 'left'),
|
||||
s = {
|
||||
top: r - o.top + o.marginTop,
|
||||
left: p - o.left + o.marginLeft,
|
||||
width: i,
|
||||
height: n
|
||||
};
|
||||
return c(s)
|
||||
}
|
||||
|
||||
function y(e) {
|
||||
var i = e.nodeName;
|
||||
return 'BODY' === i || 'HTML' === i ? !1 : 'fixed' === t(e, 'position') || y(o(e))
|
||||
}
|
||||
|
||||
function w(e, t, i, r) {
|
||||
var p = {
|
||||
top: 0,
|
||||
left: 0
|
||||
},
|
||||
s = d(e, t);
|
||||
if ('viewport' === r) p = b(s);
|
||||
else {
|
||||
var a;
|
||||
'scrollParent' === r ? (a = n(o(e)), 'BODY' === a.nodeName && (a = window.document.documentElement)) : 'window' === r ? a = window.document.documentElement : a = r;
|
||||
var f = u(a, s);
|
||||
if ('HTML' === a.nodeName && !y(s)) {
|
||||
var l = h(),
|
||||
m = l.height,
|
||||
c = l.width;
|
||||
p.top += f.top - f.marginTop, p.bottom = m + f.top, p.left += f.left - f.marginLeft, p.right = c + f.left
|
||||
} else p = f
|
||||
}
|
||||
return p.left += i, p.top += i, p.right -= i, p.bottom -= i, p
|
||||
}
|
||||
|
||||
function v(e) {
|
||||
var t = e.width,
|
||||
o = e.height;
|
||||
return t * o
|
||||
}
|
||||
|
||||
function E(e, t, o, i, n) {
|
||||
var r = 5 < arguments.length && void 0 !== arguments[5] ? arguments[5] : 0;
|
||||
if (-1 === e.indexOf('auto')) return e;
|
||||
var p = w(o, i, r, n),
|
||||
s = {
|
||||
top: {
|
||||
width: p.width,
|
||||
height: t.top - p.top
|
||||
},
|
||||
right: {
|
||||
width: p.right - t.right,
|
||||
height: p.height
|
||||
},
|
||||
bottom: {
|
||||
width: p.width,
|
||||
height: p.bottom - t.bottom
|
||||
},
|
||||
left: {
|
||||
width: t.left - p.left,
|
||||
height: p.height
|
||||
}
|
||||
},
|
||||
d = Object.keys(s).map(function(e) {
|
||||
return se({
|
||||
key: e
|
||||
}, s[e], {
|
||||
area: v(s[e])
|
||||
})
|
||||
}).sort(function(e, t) {
|
||||
return t.area - e.area
|
||||
}),
|
||||
a = d.filter(function(e) {
|
||||
var t = e.width,
|
||||
i = e.height;
|
||||
return t >= o.clientWidth && i >= o.clientHeight
|
||||
}),
|
||||
f = 0 < a.length ? a[0].key : d[0].key,
|
||||
l = e.split('-')[1];
|
||||
return f + (l ? '-' + l : '')
|
||||
}
|
||||
|
||||
function x(e, t, o) {
|
||||
var i = d(t, o);
|
||||
return u(o, i)
|
||||
}
|
||||
|
||||
function O(e) {
|
||||
var t = window.getComputedStyle(e),
|
||||
o = parseFloat(t.marginTop) + parseFloat(t.marginBottom),
|
||||
i = parseFloat(t.marginLeft) + parseFloat(t.marginRight),
|
||||
n = {
|
||||
width: e.offsetWidth + i,
|
||||
height: e.offsetHeight + o
|
||||
};
|
||||
return n
|
||||
}
|
||||
|
||||
function L(e) {
|
||||
var t = {
|
||||
left: 'right',
|
||||
right: 'left',
|
||||
bottom: 'top',
|
||||
top: 'bottom'
|
||||
};
|
||||
return e.replace(/left|right|bottom|top/g, function(e) {
|
||||
return t[e]
|
||||
})
|
||||
}
|
||||
|
||||
function S(e, t, o) {
|
||||
o = o.split('-')[0];
|
||||
var i = O(e),
|
||||
n = {
|
||||
width: i.width,
|
||||
height: i.height
|
||||
},
|
||||
r = -1 !== ['right', 'left'].indexOf(o),
|
||||
p = r ? 'top' : 'left',
|
||||
s = r ? 'left' : 'top',
|
||||
d = r ? 'height' : 'width',
|
||||
a = r ? 'width' : 'height';
|
||||
return n[p] = t[p] + t[d] / 2 - i[d] / 2, n[s] = o === s ? t[s] - i[a] : t[L(s)], n
|
||||
}
|
||||
|
||||
function T(e, t) {
|
||||
return Array.prototype.find ? e.find(t) : e.filter(t)[0]
|
||||
}
|
||||
|
||||
function C(e, t, o) {
|
||||
if (Array.prototype.findIndex) return e.findIndex(function(e) {
|
||||
return e[t] === o
|
||||
});
|
||||
var i = T(e, function(e) {
|
||||
return e[t] === o
|
||||
});
|
||||
return e.indexOf(i)
|
||||
}
|
||||
|
||||
function N(t, o, i) {
|
||||
var n = void 0 === i ? t : t.slice(0, C(t, 'name', i));
|
||||
return n.forEach(function(t) {
|
||||
t.function && console.warn('`modifier.function` is deprecated, use `modifier.fn`!');
|
||||
var i = t.function || t.fn;
|
||||
t.enabled && e(i) && (o.offsets.popper = c(o.offsets.popper), o.offsets.reference = c(o.offsets.reference), o = i(o, t))
|
||||
}), o
|
||||
}
|
||||
|
||||
function k() {
|
||||
if (!this.state.isDestroyed) {
|
||||
var e = {
|
||||
instance: this,
|
||||
styles: {},
|
||||
attributes: {},
|
||||
flipped: !1,
|
||||
offsets: {}
|
||||
};
|
||||
e.offsets.reference = x(this.state, this.popper, this.reference), e.placement = E(this.options.placement, e.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding), e.originalPlacement = e.placement, e.offsets.popper = S(this.popper, e.offsets.reference, e.placement), e.offsets.popper.position = 'absolute', e = N(this.modifiers, e), this.state.isCreated ? this.options.onUpdate(e) : (this.state.isCreated = !0, this.options.onCreate(e))
|
||||
}
|
||||
}
|
||||
|
||||
function W(e, t) {
|
||||
return e.some(function(e) {
|
||||
var o = e.name,
|
||||
i = e.enabled;
|
||||
return i && o === t
|
||||
})
|
||||
}
|
||||
|
||||
function B(e) {
|
||||
for (var t = [!1, 'ms', 'Webkit', 'Moz', 'O'], o = e.charAt(0).toUpperCase() + e.slice(1), n = 0; n < t.length - 1; n++) {
|
||||
var i = t[n],
|
||||
r = i ? '' + i + o : e;
|
||||
if ('undefined' != typeof window.document.body.style[r]) return r
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
function D() {
|
||||
return this.state.isDestroyed = !0, W(this.modifiers, 'applyStyle') && (this.popper.removeAttribute('x-placement'), this.popper.style.left = '', this.popper.style.position = '', this.popper.style.top = '', this.popper.style[B('transform')] = ''), this.disableEventListeners(), this.options.removeOnDestroy && this.popper.parentNode.removeChild(this.popper), this
|
||||
}
|
||||
|
||||
function H(e, t, o, i) {
|
||||
var r = 'BODY' === e.nodeName,
|
||||
p = r ? window : e;
|
||||
p.addEventListener(t, o, {
|
||||
passive: !0
|
||||
}), r || H(n(p.parentNode), t, o, i), i.push(p)
|
||||
}
|
||||
|
||||
function P(e, t, o, i) {
|
||||
o.updateBound = i, window.addEventListener('resize', o.updateBound, {
|
||||
passive: !0
|
||||
});
|
||||
var r = n(e);
|
||||
return H(r, 'scroll', o.updateBound, o.scrollParents), o.scrollElement = r, o.eventsEnabled = !0, o
|
||||
}
|
||||
|
||||
function A() {
|
||||
this.state.eventsEnabled || (this.state = P(this.reference, this.options, this.state, this.scheduleUpdate))
|
||||
}
|
||||
|
||||
function M(e, t) {
|
||||
return window.removeEventListener('resize', t.updateBound), t.scrollParents.forEach(function(e) {
|
||||
e.removeEventListener('scroll', t.updateBound)
|
||||
}), t.updateBound = null, t.scrollParents = [], t.scrollElement = null, t.eventsEnabled = !1, t
|
||||
}
|
||||
|
||||
function I() {
|
||||
this.state.eventsEnabled && (window.cancelAnimationFrame(this.scheduleUpdate), this.state = M(this.reference, this.state))
|
||||
}
|
||||
|
||||
function R(e) {
|
||||
return '' !== e && !isNaN(parseFloat(e)) && isFinite(e)
|
||||
}
|
||||
|
||||
function U(e, t) {
|
||||
Object.keys(t).forEach(function(o) {
|
||||
var i = ''; - 1 !== ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(o) && R(t[o]) && (i = 'px'), e.style[o] = t[o] + i
|
||||
})
|
||||
}
|
||||
|
||||
function Y(e, t) {
|
||||
Object.keys(t).forEach(function(o) {
|
||||
var i = t[o];
|
||||
!1 === i ? e.removeAttribute(o) : e.setAttribute(o, t[o])
|
||||
})
|
||||
}
|
||||
|
||||
function F(e, t, o) {
|
||||
var i = T(e, function(e) {
|
||||
var o = e.name;
|
||||
return o === t
|
||||
}),
|
||||
n = !!i && e.some(function(e) {
|
||||
return e.name === o && e.enabled && e.order < i.order
|
||||
});
|
||||
if (!n) {
|
||||
var r = '`' + t + '`';
|
||||
console.warn('`' + o + '`' + ' modifier is required by ' + r + ' modifier in order to work, be sure to include it before ' + r + '!')
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
function j(e) {
|
||||
return 'end' === e ? 'start' : 'start' === e ? 'end' : e
|
||||
}
|
||||
|
||||
function K(e) {
|
||||
var t = 1 < arguments.length && void 0 !== arguments[1] && arguments[1],
|
||||
o = ae.indexOf(e),
|
||||
i = ae.slice(o + 1).concat(ae.slice(0, o));
|
||||
return t ? i.reverse() : i
|
||||
}
|
||||
|
||||
function q(e, t, o, i) {
|
||||
var n = e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),
|
||||
r = +n[1],
|
||||
p = n[2];
|
||||
if (!r) return e;
|
||||
if (0 === p.indexOf('%')) {
|
||||
var s;
|
||||
switch (p) {
|
||||
case '%p':
|
||||
s = o;
|
||||
break;
|
||||
case '%':
|
||||
case '%r':
|
||||
default:
|
||||
s = i;
|
||||
}
|
||||
var d = c(s);
|
||||
return d[t] / 100 * r
|
||||
}
|
||||
if ('vh' === p || 'vw' === p) {
|
||||
var a;
|
||||
return a = 'vh' === p ? _(document.documentElement.clientHeight, window.innerHeight || 0) : _(document.documentElement.clientWidth, window.innerWidth || 0), a / 100 * r
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
function G(e, t, o, i) {
|
||||
var n = [0, 0],
|
||||
r = -1 !== ['right', 'left'].indexOf(i),
|
||||
p = e.split(/(\+|\-)/).map(function(e) {
|
||||
return e.trim()
|
||||
}),
|
||||
s = p.indexOf(T(p, function(e) {
|
||||
return -1 !== e.search(/,|\s/)
|
||||
}));
|
||||
p[s] && -1 === p[s].indexOf(',') && console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');
|
||||
var d = /\s*,\s*|\s+/,
|
||||
a = -1 === s ? [p] : [p.slice(0, s).concat([p[s].split(d)[0]]), [p[s].split(d)[1]].concat(p.slice(s + 1))];
|
||||
return a = a.map(function(e, i) {
|
||||
var n = (1 === i ? !r : r) ? 'height' : 'width',
|
||||
p = !1;
|
||||
return e.reduce(function(e, t) {
|
||||
return '' === e[e.length - 1] && -1 !== ['+', '-'].indexOf(t) ? (e[e.length - 1] = t, p = !0, e) : p ? (e[e.length - 1] += t, p = !1, e) : e.concat(t)
|
||||
}, []).map(function(e) {
|
||||
return q(e, n, t, o)
|
||||
})
|
||||
}), a.forEach(function(e, t) {
|
||||
e.forEach(function(o, i) {
|
||||
R(o) && (n[t] += o * ('-' === e[i - 1] ? -1 : 1))
|
||||
})
|
||||
}), n
|
||||
}
|
||||
for (var z = Math.min, V = Math.floor, _ = Math.max, X = ['native code', '[object MutationObserverConstructor]'], Q = function(e) {
|
||||
return X.some(function(t) {
|
||||
return -1 < (e || '').toString().indexOf(t)
|
||||
})
|
||||
}, J = 'undefined' != typeof window, Z = ['Edge', 'Trident', 'Firefox'], $ = 0, ee = 0; ee < Z.length; ee += 1)
|
||||
if (J && 0 <= navigator.userAgent.indexOf(Z[ee])) {
|
||||
$ = 1;
|
||||
break
|
||||
}
|
||||
var i, te = J && Q(window.MutationObserver),
|
||||
oe = te ? function(e) {
|
||||
var t = !1,
|
||||
o = 0,
|
||||
i = document.createElement('span'),
|
||||
n = new MutationObserver(function() {
|
||||
e(), t = !1
|
||||
});
|
||||
return n.observe(i, {
|
||||
attributes: !0
|
||||
}),
|
||||
function() {
|
||||
t || (t = !0, i.setAttribute('x-index', o), ++o)
|
||||
}
|
||||
} : function(e) {
|
||||
var t = !1;
|
||||
return function() {
|
||||
t || (t = !0, setTimeout(function() {
|
||||
t = !1, e()
|
||||
}, $))
|
||||
}
|
||||
},
|
||||
ie = function() {
|
||||
return void 0 == i && (i = -1 !== navigator.appVersion.indexOf('MSIE 10')), i
|
||||
},
|
||||
ne = function(e, t) {
|
||||
if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function')
|
||||
},
|
||||
re = function() {
|
||||
function e(e, t) {
|
||||
for (var o, n = 0; n < t.length; n++) o = t[n], o.enumerable = o.enumerable || !1, o.configurable = !0, 'value' in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
|
||||
}
|
||||
return function(t, o, i) {
|
||||
return o && e(t.prototype, o), i && e(t, i), t
|
||||
}
|
||||
}(),
|
||||
pe = function(e, t, o) {
|
||||
return t in e ? Object.defineProperty(e, t, {
|
||||
value: o,
|
||||
enumerable: !0,
|
||||
configurable: !0,
|
||||
writable: !0
|
||||
}) : e[t] = o, e
|
||||
},
|
||||
se = Object.assign || function(e) {
|
||||
for (var t, o = 1; o < arguments.length; o++)
|
||||
for (var i in t = arguments[o], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
|
||||
return e
|
||||
},
|
||||
de = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'],
|
||||
ae = de.slice(3),
|
||||
fe = {
|
||||
FLIP: 'flip',
|
||||
CLOCKWISE: 'clockwise',
|
||||
COUNTERCLOCKWISE: 'counterclockwise'
|
||||
},
|
||||
le = function() {
|
||||
function t(o, i) {
|
||||
var n = this,
|
||||
r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {};
|
||||
ne(this, t), this.scheduleUpdate = function() {
|
||||
return requestAnimationFrame(n.update)
|
||||
}, this.update = oe(this.update.bind(this)), this.options = se({}, t.Defaults, r), this.state = {
|
||||
isDestroyed: !1,
|
||||
isCreated: !1,
|
||||
scrollParents: []
|
||||
}, this.reference = o.jquery ? o[0] : o, this.popper = i.jquery ? i[0] : i, this.options.modifiers = {}, Object.keys(se({}, t.Defaults.modifiers, r.modifiers)).forEach(function(e) {
|
||||
n.options.modifiers[e] = se({}, t.Defaults.modifiers[e] || {}, r.modifiers ? r.modifiers[e] : {})
|
||||
}), this.modifiers = Object.keys(this.options.modifiers).map(function(e) {
|
||||
return se({
|
||||
name: e
|
||||
}, n.options.modifiers[e])
|
||||
}).sort(function(e, t) {
|
||||
return e.order - t.order
|
||||
}), this.modifiers.forEach(function(t) {
|
||||
t.enabled && e(t.onLoad) && t.onLoad(n.reference, n.popper, n.options, t, n.state)
|
||||
}), this.update();
|
||||
var p = this.options.eventsEnabled;
|
||||
p && this.enableEventListeners(), this.state.eventsEnabled = p
|
||||
}
|
||||
return re(t, [{
|
||||
key: 'update',
|
||||
value: function() {
|
||||
return k.call(this)
|
||||
}
|
||||
}, {
|
||||
key: 'destroy',
|
||||
value: function() {
|
||||
return D.call(this)
|
||||
}
|
||||
}, {
|
||||
key: 'enableEventListeners',
|
||||
value: function() {
|
||||
return A.call(this)
|
||||
}
|
||||
}, {
|
||||
key: 'disableEventListeners',
|
||||
value: function() {
|
||||
return I.call(this)
|
||||
}
|
||||
}]), t
|
||||
}();
|
||||
return le.Utils = ('undefined' == typeof window ? global : window).PopperUtils, le.placements = de, le.Defaults = {
|
||||
placement: 'bottom',
|
||||
eventsEnabled: !0,
|
||||
removeOnDestroy: !1,
|
||||
onCreate: function() {},
|
||||
onUpdate: function() {},
|
||||
modifiers: {
|
||||
shift: {
|
||||
order: 100,
|
||||
enabled: !0,
|
||||
fn: function(e) {
|
||||
var t = e.placement,
|
||||
o = t.split('-')[0],
|
||||
i = t.split('-')[1];
|
||||
if (i) {
|
||||
var n = e.offsets,
|
||||
r = n.reference,
|
||||
p = n.popper,
|
||||
s = -1 !== ['bottom', 'top'].indexOf(o),
|
||||
d = s ? 'left' : 'top',
|
||||
a = s ? 'width' : 'height',
|
||||
f = {
|
||||
start: pe({}, d, r[d]),
|
||||
end: pe({}, d, r[d] + r[a] - p[a])
|
||||
};
|
||||
e.offsets.popper = se({}, p, f[i])
|
||||
}
|
||||
return e
|
||||
}
|
||||
},
|
||||
offset: {
|
||||
order: 200,
|
||||
enabled: !0,
|
||||
fn: function(e, t) {
|
||||
var o, i = t.offset,
|
||||
n = e.placement,
|
||||
r = e.offsets,
|
||||
p = r.popper,
|
||||
s = r.reference,
|
||||
d = n.split('-')[0];
|
||||
return o = R(+i) ? [+i, 0] : G(i, p, s, d), 'left' === d ? (p.top += o[0], p.left -= o[1]) : 'right' === d ? (p.top += o[0], p.left += o[1]) : 'top' === d ? (p.left += o[0], p.top -= o[1]) : 'bottom' === d && (p.left += o[0], p.top += o[1]), e.popper = p, e
|
||||
},
|
||||
offset: 0
|
||||
},
|
||||
preventOverflow: {
|
||||
order: 300,
|
||||
enabled: !0,
|
||||
fn: function(e, t) {
|
||||
var o = t.boundariesElement || r(e.instance.popper);
|
||||
e.instance.reference === o && (o = r(o));
|
||||
var i = w(e.instance.popper, e.instance.reference, t.padding, o);
|
||||
t.boundaries = i;
|
||||
var n = t.priority,
|
||||
p = e.offsets.popper,
|
||||
s = {
|
||||
primary: function(e) {
|
||||
var o = p[e];
|
||||
return p[e] < i[e] && !t.escapeWithReference && (o = _(p[e], i[e])), pe({}, e, o)
|
||||
},
|
||||
secondary: function(e) {
|
||||
var o = 'right' === e ? 'left' : 'top',
|
||||
n = p[o];
|
||||
return p[e] > i[e] && !t.escapeWithReference && (n = z(p[o], i[e] - ('right' === e ? p.width : p.height))), pe({}, o, n)
|
||||
}
|
||||
};
|
||||
return n.forEach(function(e) {
|
||||
var t = -1 === ['left', 'top'].indexOf(e) ? 'secondary' : 'primary';
|
||||
p = se({}, p, s[t](e))
|
||||
}), e.offsets.popper = p, e
|
||||
},
|
||||
priority: ['left', 'right', 'top', 'bottom'],
|
||||
padding: 5,
|
||||
boundariesElement: 'scrollParent'
|
||||
},
|
||||
keepTogether: {
|
||||
order: 400,
|
||||
enabled: !0,
|
||||
fn: function(e) {
|
||||
var t = e.offsets,
|
||||
o = t.popper,
|
||||
i = t.reference,
|
||||
n = e.placement.split('-')[0],
|
||||
r = V,
|
||||
p = -1 !== ['top', 'bottom'].indexOf(n),
|
||||
s = p ? 'right' : 'bottom',
|
||||
d = p ? 'left' : 'top',
|
||||
a = p ? 'width' : 'height';
|
||||
return o[s] < r(i[d]) && (e.offsets.popper[d] = r(i[d]) - o[a]), o[d] > r(i[s]) && (e.offsets.popper[d] = r(i[s])), e
|
||||
}
|
||||
},
|
||||
arrow: {
|
||||
order: 500,
|
||||
enabled: !0,
|
||||
fn: function(e, t) {
|
||||
if (!F(e.instance.modifiers, 'arrow', 'keepTogether')) return e;
|
||||
var o = t.element;
|
||||
if ('string' == typeof o) {
|
||||
if (o = e.instance.popper.querySelector(o), !o) return e;
|
||||
} else if (!e.instance.popper.contains(o)) return console.warn('WARNING: `arrow.element` must be child of its popper element!'), e;
|
||||
var i = e.placement.split('-')[0],
|
||||
n = e.offsets,
|
||||
r = n.popper,
|
||||
p = n.reference,
|
||||
s = -1 !== ['left', 'right'].indexOf(i),
|
||||
d = s ? 'height' : 'width',
|
||||
a = s ? 'top' : 'left',
|
||||
f = s ? 'left' : 'top',
|
||||
l = s ? 'bottom' : 'right',
|
||||
m = O(o)[d];
|
||||
p[l] - m < r[a] && (e.offsets.popper[a] -= r[a] - (p[l] - m)), p[a] + m > r[l] && (e.offsets.popper[a] += p[a] + m - r[l]);
|
||||
var h = p[a] + p[d] / 2 - m / 2,
|
||||
g = h - c(e.offsets.popper)[a];
|
||||
return g = _(z(r[d] - m, g), 0), e.arrowElement = o, e.offsets.arrow = {}, e.offsets.arrow[a] = Math.round(g), e.offsets.arrow[f] = '', e
|
||||
},
|
||||
element: '[x-arrow]'
|
||||
},
|
||||
flip: {
|
||||
order: 600,
|
||||
enabled: !0,
|
||||
fn: function(e, t) {
|
||||
if (W(e.instance.modifiers, 'inner')) return e;
|
||||
if (e.flipped && e.placement === e.originalPlacement) return e;
|
||||
var o = w(e.instance.popper, e.instance.reference, t.padding, t.boundariesElement),
|
||||
i = e.placement.split('-')[0],
|
||||
n = L(i),
|
||||
r = e.placement.split('-')[1] || '',
|
||||
p = [];
|
||||
switch (t.behavior) {
|
||||
case fe.FLIP:
|
||||
p = [i, n];
|
||||
break;
|
||||
case fe.CLOCKWISE:
|
||||
p = K(i);
|
||||
break;
|
||||
case fe.COUNTERCLOCKWISE:
|
||||
p = K(i, !0);
|
||||
break;
|
||||
default:
|
||||
p = t.behavior;
|
||||
}
|
||||
return p.forEach(function(s, d) {
|
||||
if (i !== s || p.length === d + 1) return e;
|
||||
i = e.placement.split('-')[0], n = L(i);
|
||||
var a = e.offsets.popper,
|
||||
f = e.offsets.reference,
|
||||
l = V,
|
||||
m = 'left' === i && l(a.right) > l(f.left) || 'right' === i && l(a.left) < l(f.right) || 'top' === i && l(a.bottom) > l(f.top) || 'bottom' === i && l(a.top) < l(f.bottom),
|
||||
h = l(a.left) < l(o.left),
|
||||
c = l(a.right) > l(o.right),
|
||||
g = l(a.top) < l(o.top),
|
||||
u = l(a.bottom) > l(o.bottom),
|
||||
b = 'left' === i && h || 'right' === i && c || 'top' === i && g || 'bottom' === i && u,
|
||||
y = -1 !== ['top', 'bottom'].indexOf(i),
|
||||
w = !!t.flipVariations && (y && 'start' === r && h || y && 'end' === r && c || !y && 'start' === r && g || !y && 'end' === r && u);
|
||||
(m || b || w) && (e.flipped = !0, (m || b) && (i = p[d + 1]), w && (r = j(r)), e.placement = i + (r ? '-' + r : ''), e.offsets.popper = se({}, e.offsets.popper, S(e.instance.popper, e.offsets.reference, e.placement)), e = N(e.instance.modifiers, e, 'flip'))
|
||||
}), e
|
||||
},
|
||||
behavior: 'flip',
|
||||
padding: 5,
|
||||
boundariesElement: 'viewport'
|
||||
},
|
||||
inner: {
|
||||
order: 700,
|
||||
enabled: !1,
|
||||
fn: function(e) {
|
||||
var t = e.placement,
|
||||
o = t.split('-')[0],
|
||||
i = e.offsets,
|
||||
n = i.popper,
|
||||
r = i.reference,
|
||||
p = -1 !== ['left', 'right'].indexOf(o),
|
||||
s = -1 === ['top', 'left'].indexOf(o);
|
||||
return n[p ? 'left' : 'top'] = r[t] - (s ? n[p ? 'width' : 'height'] : 0), e.placement = L(t), e.offsets.popper = c(n), e
|
||||
}
|
||||
},
|
||||
hide: {
|
||||
order: 800,
|
||||
enabled: !0,
|
||||
fn: function(e) {
|
||||
if (!F(e.instance.modifiers, 'hide', 'preventOverflow')) return e;
|
||||
var t = e.offsets.reference,
|
||||
o = T(e.instance.modifiers, function(e) {
|
||||
return 'preventOverflow' === e.name
|
||||
}).boundaries;
|
||||
if (t.bottom < o.top || t.left > o.right || t.top > o.bottom || t.right < o.left) {
|
||||
if (!0 === e.hide) return e;
|
||||
e.hide = !0, e.attributes['x-out-of-boundaries'] = ''
|
||||
} else {
|
||||
if (!1 === e.hide) return e;
|
||||
e.hide = !1, e.attributes['x-out-of-boundaries'] = !1
|
||||
}
|
||||
return e
|
||||
}
|
||||
},
|
||||
computeStyle: {
|
||||
order: 850,
|
||||
enabled: !0,
|
||||
fn: function(e, t) {
|
||||
var o = t.x,
|
||||
i = t.y,
|
||||
n = e.offsets.popper,
|
||||
p = T(e.instance.modifiers, function(e) {
|
||||
return 'applyStyle' === e.name
|
||||
}).gpuAcceleration;
|
||||
void 0 !== p && console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');
|
||||
var s, d, a = void 0 === p ? t.gpuAcceleration : p,
|
||||
f = r(e.instance.popper),
|
||||
l = g(f),
|
||||
m = {
|
||||
position: n.position
|
||||
},
|
||||
h = {
|
||||
left: V(n.left),
|
||||
top: V(n.top),
|
||||
bottom: V(n.bottom),
|
||||
right: V(n.right)
|
||||
},
|
||||
c = 'bottom' === o ? 'top' : 'bottom',
|
||||
u = 'right' === i ? 'left' : 'right',
|
||||
b = B('transform');
|
||||
if (d = 'bottom' == c ? -l.height + h.bottom : h.top, s = 'right' == u ? -l.width + h.right : h.left, a && b) m[b] = 'translate3d(' + s + 'px, ' + d + 'px, 0)', m[c] = 0, m[u] = 0, m.willChange = 'transform';
|
||||
else {
|
||||
var y = 'bottom' == c ? -1 : 1,
|
||||
w = 'right' == u ? -1 : 1;
|
||||
m[c] = d * y, m[u] = s * w, m.willChange = c + ', ' + u
|
||||
}
|
||||
var v = {
|
||||
"x-placement": e.placement
|
||||
};
|
||||
return e.attributes = se({}, v, e.attributes), e.styles = se({}, m, e.styles), e
|
||||
},
|
||||
gpuAcceleration: !0,
|
||||
x: 'bottom',
|
||||
y: 'right'
|
||||
},
|
||||
applyStyle: {
|
||||
order: 900,
|
||||
enabled: !0,
|
||||
fn: function(e) {
|
||||
return U(e.instance.popper, e.styles), Y(e.instance.popper, e.attributes), e.offsets.arrow && U(e.arrowElement, e.offsets.arrow), e
|
||||
},
|
||||
onLoad: function(e, t, o, i, n) {
|
||||
var r = x(n, t, e),
|
||||
p = E(o.placement, r, t, e, o.modifiers.flip.boundariesElement, o.modifiers.flip.padding);
|
||||
return t.setAttribute('x-placement', p), U(t, {
|
||||
position: 'absolute'
|
||||
}), o
|
||||
},
|
||||
gpuAcceleration: void 0
|
||||
}
|
||||
}
|
||||
}, le
|
||||
});
|
||||
817
resources/theme/material-dashboard/assets/js/material-dashboard.js
vendored
Normal file
@@ -0,0 +1,817 @@
|
||||
/*!
|
||||
|
||||
=========================================================
|
||||
* Material Dashboard PRO - v2.1.0
|
||||
=========================================================
|
||||
|
||||
* Product Page: https://www.creative-tim.com/product/material-dashboard-pro
|
||||
* Copyright 2019 Creative Tim (http://www.creative-tim.com)
|
||||
|
||||
* Designed by www.invisionapp.com Coded by www.creative-tim.com
|
||||
|
||||
=========================================================
|
||||
|
||||
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
*/
|
||||
|
||||
(function() {
|
||||
isWindows = navigator.platform.indexOf('Win') > -1 ? true : false;
|
||||
|
||||
if (isWindows) {
|
||||
// if we are on windows OS we activate the perfectScrollbar function
|
||||
$('.sidebar .sidebar-wrapper, .main-panel').perfectScrollbar();
|
||||
|
||||
$('html').addClass('perfect-scrollbar-on');
|
||||
} else {
|
||||
$('html').addClass('perfect-scrollbar-off');
|
||||
}
|
||||
})();
|
||||
|
||||
|
||||
var breakCards = true;
|
||||
|
||||
var searchVisible = 0;
|
||||
var transparent = true;
|
||||
|
||||
var transparentDemo = true;
|
||||
var fixedTop = false;
|
||||
|
||||
var mobile_menu_visible = 0,
|
||||
mobile_menu_initialized = false,
|
||||
toggle_initialized = false,
|
||||
bootstrap_nav_initialized = false;
|
||||
|
||||
var seq = 0,
|
||||
delays = 80,
|
||||
durations = 500;
|
||||
var seq2 = 0,
|
||||
delays2 = 80,
|
||||
durations2 = 500;
|
||||
|
||||
$(document).ready(function() {
|
||||
$sidebar = $('.sidebar');
|
||||
window_width = $(window).width();
|
||||
|
||||
$('body').bootstrapMaterialDesign({
|
||||
autofill: false
|
||||
});
|
||||
|
||||
md.initSidebarsCheck();
|
||||
|
||||
window_width = $(window).width();
|
||||
|
||||
// check if there is an image set for the sidebar's background
|
||||
md.checkSidebarImage();
|
||||
|
||||
md.initMinimizeSidebar();
|
||||
|
||||
// Multilevel Dropdown menu
|
||||
|
||||
$('.dropdown-menu a.dropdown-toggle').on('click', function(e) {
|
||||
var $el = $(this);
|
||||
var $parent = $(this).offsetParent(".dropdown-menu");
|
||||
if (!$(this).next().hasClass('show')) {
|
||||
$(this).parents('.dropdown-menu').first().find('.show').removeClass("show");
|
||||
}
|
||||
var $subMenu = $(this).next(".dropdown-menu");
|
||||
$subMenu.toggleClass('show');
|
||||
|
||||
$(this).closest("a").toggleClass('open');
|
||||
|
||||
$(this).parents('a.dropdown-item.dropdown.show').on('hidden.bs.dropdown', function(e) {
|
||||
$('.dropdown-menu .show').removeClass("show");
|
||||
});
|
||||
|
||||
if (!$parent.parent().hasClass('navbar-nav')) {
|
||||
$el.next().css({
|
||||
"top": $el[0].offsetTop,
|
||||
"left": $parent.outerWidth() - 4
|
||||
});
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// Activate bootstrap-select
|
||||
if ($(".selectpicker").length != 0) {
|
||||
$(".selectpicker").selectpicker();
|
||||
}
|
||||
|
||||
// Activate the tooltips
|
||||
$('[rel="tooltip"]').tooltip();
|
||||
|
||||
// Activate Popovers
|
||||
$('[data-toggle="popover"]').popover();
|
||||
|
||||
//Activate tags
|
||||
// we style the badges with our colors
|
||||
var tagClass = $('.tagsinput').data('color');
|
||||
|
||||
if ($(".tagsinput").length != 0) {
|
||||
$('.tagsinput').tagsinput();
|
||||
}
|
||||
|
||||
$('.bootstrap-tagsinput').addClass('' + tagClass + '-badge');
|
||||
|
||||
// Activate bootstrap-select
|
||||
$(".select").dropdown({
|
||||
"dropdownClass": "dropdown-menu",
|
||||
"optionClass": ""
|
||||
});
|
||||
|
||||
$('.form-control').on("focus", function() {
|
||||
$(this).parent('.input-group').addClass("input-group-focus");
|
||||
}).on("blur", function() {
|
||||
$(this).parent(".input-group").removeClass("input-group-focus");
|
||||
});
|
||||
|
||||
|
||||
if (breakCards == true) {
|
||||
// We break the cards headers if there is too much stress on them :-)
|
||||
$('[data-header-animation="true"]').each(function() {
|
||||
var $fix_button = $(this)
|
||||
var $card = $(this).parent('.card');
|
||||
|
||||
$card.find('.fix-broken-card').click(function() {
|
||||
console.log(this);
|
||||
var $header = $(this).parent().parent().siblings('.card-header, .card-header-image');
|
||||
|
||||
$header.removeClass('hinge').addClass('fadeInDown');
|
||||
|
||||
$card.attr('data-count', 0);
|
||||
|
||||
setTimeout(function() {
|
||||
$header.removeClass('fadeInDown animate');
|
||||
}, 480);
|
||||
});
|
||||
|
||||
$card.mouseenter(function() {
|
||||
var $this = $(this);
|
||||
hover_count = parseInt($this.attr('data-count'), 10) + 1 || 0;
|
||||
$this.attr("data-count", hover_count);
|
||||
|
||||
if (hover_count >= 20) {
|
||||
$(this).children('.card-header, .card-header-image').addClass('hinge animated');
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// remove class has-error for checkbox validation
|
||||
$('input[type="checkbox"][required="true"], input[type="radio"][required="true"]').on('click', function() {
|
||||
if ($(this).hasClass('error')) {
|
||||
$(this).closest('div').removeClass('has-error');
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$(document).on('click', '.navbar-toggler', function() {
|
||||
$toggle = $(this);
|
||||
|
||||
if (mobile_menu_visible == 1) {
|
||||
$('html').removeClass('nav-open');
|
||||
|
||||
$('.close-layer').remove();
|
||||
setTimeout(function() {
|
||||
$toggle.removeClass('toggled');
|
||||
}, 400);
|
||||
|
||||
mobile_menu_visible = 0;
|
||||
} else {
|
||||
setTimeout(function() {
|
||||
$toggle.addClass('toggled');
|
||||
}, 430);
|
||||
|
||||
var $layer = $('<div class="close-layer"></div>');
|
||||
|
||||
if ($('body').find('.main-panel').length != 0) {
|
||||
$layer.appendTo(".main-panel");
|
||||
|
||||
} else if (($('body').hasClass('off-canvas-sidebar'))) {
|
||||
$layer.appendTo(".wrapper-full-page");
|
||||
}
|
||||
|
||||
setTimeout(function() {
|
||||
$layer.addClass('visible');
|
||||
}, 100);
|
||||
|
||||
$layer.click(function() {
|
||||
$('html').removeClass('nav-open');
|
||||
mobile_menu_visible = 0;
|
||||
|
||||
$layer.removeClass('visible');
|
||||
|
||||
setTimeout(function() {
|
||||
$layer.remove();
|
||||
$toggle.removeClass('toggled');
|
||||
|
||||
}, 400);
|
||||
});
|
||||
|
||||
$('html').addClass('nav-open');
|
||||
mobile_menu_visible = 1;
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// activate collapse right menu when the windows is resized
|
||||
$(window).resize(function() {
|
||||
md.initSidebarsCheck();
|
||||
|
||||
// reset the seq for charts drawing animations
|
||||
seq = seq2 = 0;
|
||||
|
||||
setTimeout(function() {
|
||||
md.initDashboardPageCharts();
|
||||
}, 500);
|
||||
});
|
||||
|
||||
md = {
|
||||
misc: {
|
||||
navbar_menu_visible: 0,
|
||||
active_collapse: true,
|
||||
disabled_collapse_init: 0,
|
||||
},
|
||||
|
||||
checkSidebarImage: function() {
|
||||
$sidebar = $('.sidebar');
|
||||
image_src = $sidebar.data('image');
|
||||
|
||||
if (image_src !== undefined) {
|
||||
sidebar_container = '<div class="sidebar-background" style="background-image: url(' + image_src + ') "/>';
|
||||
$sidebar.append(sidebar_container);
|
||||
}
|
||||
},
|
||||
|
||||
showNotification: function(from, align) {
|
||||
type = ['', 'info', 'danger', 'success', 'warning', 'rose', 'primary'];
|
||||
|
||||
color = Math.floor((Math.random() * 6) + 1);
|
||||
|
||||
$.notify({
|
||||
icon: "add_alert",
|
||||
message: "Welcome to <b>Material Dashboard Pro</b> - a beautiful admin panel for every web developer."
|
||||
|
||||
}, {
|
||||
type: type[color],
|
||||
timer: 3000,
|
||||
placement: {
|
||||
from: from,
|
||||
align: align
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
initDocumentationCharts: function() {
|
||||
if ($('#dailySalesChart').length != 0 && $('#websiteViewsChart').length != 0) {
|
||||
/* ----------========== Daily Sales Chart initialization For Documentation ==========---------- */
|
||||
|
||||
dataDailySalesChart = {
|
||||
labels: ['M', 'T', 'W', 'T', 'F', 'S', 'S'],
|
||||
series: [
|
||||
[12, 17, 7, 17, 23, 18, 38]
|
||||
]
|
||||
};
|
||||
|
||||
optionsDailySalesChart = {
|
||||
lineSmooth: Chartist.Interpolation.cardinal({
|
||||
tension: 0
|
||||
}),
|
||||
low: 0,
|
||||
high: 50, // creative tim: we recommend you to set the high sa the biggest value + something for a better look
|
||||
chartPadding: {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
},
|
||||
}
|
||||
|
||||
var dailySalesChart = new Chartist.Line('#dailySalesChart', dataDailySalesChart, optionsDailySalesChart);
|
||||
|
||||
var animationHeaderChart = new Chartist.Line('#websiteViewsChart', dataDailySalesChart, optionsDailySalesChart);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
initFormExtendedDatetimepickers: function() {
|
||||
$('.datetimepicker').datetimepicker({
|
||||
icons: {
|
||||
time: "fa fa-clock-o",
|
||||
date: "fa fa-calendar",
|
||||
up: "fa fa-chevron-up",
|
||||
down: "fa fa-chevron-down",
|
||||
previous: 'fa fa-chevron-left',
|
||||
next: 'fa fa-chevron-right',
|
||||
today: 'fa fa-screenshot',
|
||||
clear: 'fa fa-trash',
|
||||
close: 'fa fa-remove'
|
||||
}
|
||||
});
|
||||
|
||||
$('.datepicker').datetimepicker({
|
||||
format: 'MM/DD/YYYY',
|
||||
icons: {
|
||||
time: "fa fa-clock-o",
|
||||
date: "fa fa-calendar",
|
||||
up: "fa fa-chevron-up",
|
||||
down: "fa fa-chevron-down",
|
||||
previous: 'fa fa-chevron-left',
|
||||
next: 'fa fa-chevron-right',
|
||||
today: 'fa fa-screenshot',
|
||||
clear: 'fa fa-trash',
|
||||
close: 'fa fa-remove'
|
||||
}
|
||||
});
|
||||
|
||||
$('.timepicker').datetimepicker({
|
||||
// format: 'H:mm', // use this format if you want the 24hours timepicker
|
||||
format: 'h:mm A', //use this format if you want the 12hours timpiecker with AM/PM toggle
|
||||
icons: {
|
||||
time: "fa fa-clock-o",
|
||||
date: "fa fa-calendar",
|
||||
up: "fa fa-chevron-up",
|
||||
down: "fa fa-chevron-down",
|
||||
previous: 'fa fa-chevron-left',
|
||||
next: 'fa fa-chevron-right',
|
||||
today: 'fa fa-screenshot',
|
||||
clear: 'fa fa-trash',
|
||||
close: 'fa fa-remove'
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
initSliders: function() {
|
||||
// Sliders for demo purpose
|
||||
var slider = document.getElementById('sliderRegular');
|
||||
|
||||
noUiSlider.create(slider, {
|
||||
start: 40,
|
||||
connect: [true, false],
|
||||
range: {
|
||||
min: 0,
|
||||
max: 100
|
||||
}
|
||||
});
|
||||
|
||||
var slider2 = document.getElementById('sliderDouble');
|
||||
|
||||
noUiSlider.create(slider2, {
|
||||
start: [20, 60],
|
||||
connect: true,
|
||||
range: {
|
||||
min: 0,
|
||||
max: 100
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
initSidebarsCheck: function() {
|
||||
if ($(window).width() <= 991) {
|
||||
if ($sidebar.length != 0) {
|
||||
md.initRightMenu();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
checkFullPageBackgroundImage: function() {
|
||||
$page = $('.full-page');
|
||||
image_src = $page.data('image');
|
||||
|
||||
if (image_src !== undefined) {
|
||||
image_container = '<div class="full-page-background" style="background-image: url(' + image_src + ') "/>'
|
||||
$page.append(image_container);
|
||||
}
|
||||
},
|
||||
|
||||
initDashboardPageCharts: function() {
|
||||
|
||||
if ($('#dailySalesChart').length != 0 || $('#completedTasksChart').length != 0 || $('#websiteViewsChart').length != 0) {
|
||||
/* ----------========== Daily Sales Chart initialization ==========---------- */
|
||||
|
||||
dataDailySalesChart = {
|
||||
labels: ['M', 'T', 'W', 'T', 'F', 'S', 'S'],
|
||||
series: [
|
||||
[12, 17, 7, 17, 23, 18, 38]
|
||||
]
|
||||
};
|
||||
|
||||
optionsDailySalesChart = {
|
||||
lineSmooth: Chartist.Interpolation.cardinal({
|
||||
tension: 0
|
||||
}),
|
||||
low: 0,
|
||||
high: 50, // creative tim: we recommend you to set the high sa the biggest value + something for a better look
|
||||
chartPadding: {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
},
|
||||
}
|
||||
|
||||
var dailySalesChart = new Chartist.Line('#dailySalesChart', dataDailySalesChart, optionsDailySalesChart);
|
||||
|
||||
md.startAnimationForLineChart(dailySalesChart);
|
||||
|
||||
|
||||
|
||||
/* ----------========== Completed Tasks Chart initialization ==========---------- */
|
||||
|
||||
dataCompletedTasksChart = {
|
||||
labels: ['12p', '3p', '6p', '9p', '12p', '3a', '6a', '9a'],
|
||||
series: [
|
||||
[230, 750, 450, 300, 280, 240, 200, 190]
|
||||
]
|
||||
};
|
||||
|
||||
optionsCompletedTasksChart = {
|
||||
lineSmooth: Chartist.Interpolation.cardinal({
|
||||
tension: 0
|
||||
}),
|
||||
low: 0,
|
||||
high: 1000, // creative tim: we recommend you to set the high sa the biggest value + something for a better look
|
||||
chartPadding: {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
}
|
||||
}
|
||||
|
||||
var completedTasksChart = new Chartist.Line('#completedTasksChart', dataCompletedTasksChart, optionsCompletedTasksChart);
|
||||
|
||||
// start animation for the Completed Tasks Chart - Line Chart
|
||||
md.startAnimationForLineChart(completedTasksChart);
|
||||
|
||||
|
||||
/* ----------========== Emails Subscription Chart initialization ==========---------- */
|
||||
|
||||
var dataWebsiteViewsChart = {
|
||||
labels: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
|
||||
series: [
|
||||
[542, 443, 320, 780, 553, 453, 326, 434, 568, 610, 756, 895]
|
||||
|
||||
]
|
||||
};
|
||||
var optionsWebsiteViewsChart = {
|
||||
axisX: {
|
||||
showGrid: false
|
||||
},
|
||||
low: 0,
|
||||
high: 1000,
|
||||
chartPadding: {
|
||||
top: 0,
|
||||
right: 5,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
}
|
||||
};
|
||||
var responsiveOptions = [
|
||||
['screen and (max-width: 640px)', {
|
||||
seriesBarDistance: 5,
|
||||
axisX: {
|
||||
labelInterpolationFnc: function(value) {
|
||||
return value[0];
|
||||
}
|
||||
}
|
||||
}]
|
||||
];
|
||||
var websiteViewsChart = Chartist.Bar('#websiteViewsChart', dataWebsiteViewsChart, optionsWebsiteViewsChart, responsiveOptions);
|
||||
|
||||
//start animation for the Emails Subscription Chart
|
||||
md.startAnimationForBarChart(websiteViewsChart);
|
||||
}
|
||||
},
|
||||
|
||||
initMinimizeSidebar: function() {
|
||||
|
||||
$('#minimizeSidebar').click(function() {
|
||||
var $btn = $(this);
|
||||
|
||||
if (md.misc.sidebar_mini_active == true) {
|
||||
$('body').removeClass('sidebar-mini');
|
||||
md.misc.sidebar_mini_active = false;
|
||||
} else {
|
||||
$('body').addClass('sidebar-mini');
|
||||
md.misc.sidebar_mini_active = true;
|
||||
}
|
||||
|
||||
// we simulate the window Resize so the charts will get updated in realtime.
|
||||
var simulateWindowResize = setInterval(function() {
|
||||
window.dispatchEvent(new Event('resize'));
|
||||
}, 180);
|
||||
|
||||
// we stop the simulation of Window Resize after the animations are completed
|
||||
setTimeout(function() {
|
||||
clearInterval(simulateWindowResize);
|
||||
}, 1000);
|
||||
});
|
||||
},
|
||||
|
||||
checkScrollForTransparentNavbar: debounce(function() {
|
||||
if ($(document).scrollTop() > 260) {
|
||||
if (transparent) {
|
||||
transparent = false;
|
||||
$('.navbar-color-on-scroll').removeClass('navbar-transparent');
|
||||
}
|
||||
} else {
|
||||
if (!transparent) {
|
||||
transparent = true;
|
||||
$('.navbar-color-on-scroll').addClass('navbar-transparent');
|
||||
}
|
||||
}
|
||||
}, 17),
|
||||
|
||||
|
||||
initRightMenu: debounce(function() {
|
||||
$sidebar_wrapper = $('.sidebar-wrapper');
|
||||
|
||||
if (!mobile_menu_initialized) {
|
||||
$navbar = $('nav').find('.navbar-collapse').children('.navbar-nav');
|
||||
|
||||
mobile_menu_content = '';
|
||||
|
||||
nav_content = $navbar.html();
|
||||
|
||||
nav_content = '<ul class="nav navbar-nav nav-mobile-menu">' + nav_content + '</ul>';
|
||||
|
||||
navbar_form = $('nav').find('.navbar-form').get(0).outerHTML;
|
||||
|
||||
$sidebar_nav = $sidebar_wrapper.find(' > .nav');
|
||||
|
||||
// insert the navbar form before the sidebar list
|
||||
$nav_content = $(nav_content);
|
||||
$navbar_form = $(navbar_form);
|
||||
$nav_content.insertBefore($sidebar_nav);
|
||||
$navbar_form.insertBefore($nav_content);
|
||||
|
||||
$(".sidebar-wrapper .dropdown .dropdown-menu > li > a").click(function(event) {
|
||||
event.stopPropagation();
|
||||
|
||||
});
|
||||
|
||||
// simulate resize so all the charts/maps will be redrawn
|
||||
window.dispatchEvent(new Event('resize'));
|
||||
|
||||
mobile_menu_initialized = true;
|
||||
} else {
|
||||
if ($(window).width() > 991) {
|
||||
// reset all the additions that we made for the sidebar wrapper only if the screen is bigger than 991px
|
||||
$sidebar_wrapper.find('.navbar-form').remove();
|
||||
$sidebar_wrapper.find('.nav-mobile-menu').remove();
|
||||
|
||||
mobile_menu_initialized = false;
|
||||
}
|
||||
}
|
||||
}, 200),
|
||||
|
||||
startAnimationForLineChart: function(chart) {
|
||||
|
||||
chart.on('draw', function(data) {
|
||||
if (data.type === 'line' || data.type === 'area') {
|
||||
data.element.animate({
|
||||
d: {
|
||||
begin: 600,
|
||||
dur: 700,
|
||||
from: data.path.clone().scale(1, 0).translate(0, data.chartRect.height()).stringify(),
|
||||
to: data.path.clone().stringify(),
|
||||
easing: Chartist.Svg.Easing.easeOutQuint
|
||||
}
|
||||
});
|
||||
} else if (data.type === 'point') {
|
||||
seq++;
|
||||
data.element.animate({
|
||||
opacity: {
|
||||
begin: seq * delays,
|
||||
dur: durations,
|
||||
from: 0,
|
||||
to: 1,
|
||||
easing: 'ease'
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
seq = 0;
|
||||
},
|
||||
startAnimationForBarChart: function(chart) {
|
||||
|
||||
chart.on('draw', function(data) {
|
||||
if (data.type === 'bar') {
|
||||
seq2++;
|
||||
data.element.animate({
|
||||
opacity: {
|
||||
begin: seq2 * delays2,
|
||||
dur: durations2,
|
||||
from: 0,
|
||||
to: 1,
|
||||
easing: 'ease'
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
seq2 = 0;
|
||||
},
|
||||
|
||||
|
||||
initFullCalendar: function() {
|
||||
$calendar = $('#fullCalendar');
|
||||
|
||||
today = new Date();
|
||||
y = today.getFullYear();
|
||||
m = today.getMonth();
|
||||
d = today.getDate();
|
||||
|
||||
$calendar.fullCalendar({
|
||||
viewRender: function(view, element) {
|
||||
// We make sure that we activate the perfect scrollbar when the view isn't on Month
|
||||
if (view.name != 'month') {
|
||||
$(element).find('.fc-scroller').perfectScrollbar();
|
||||
}
|
||||
},
|
||||
header: {
|
||||
left: 'title',
|
||||
center: 'month,agendaWeek,agendaDay',
|
||||
right: 'prev,next,today'
|
||||
},
|
||||
defaultDate: today,
|
||||
selectable: true,
|
||||
selectHelper: true,
|
||||
views: {
|
||||
month: { // name of view
|
||||
titleFormat: 'MMMM YYYY'
|
||||
// other view-specific options here
|
||||
},
|
||||
week: {
|
||||
titleFormat: " MMMM D YYYY"
|
||||
},
|
||||
day: {
|
||||
titleFormat: 'D MMM, YYYY'
|
||||
}
|
||||
},
|
||||
|
||||
select: function(start, end) {
|
||||
|
||||
// on select we show the Sweet Alert modal with an input
|
||||
swal({
|
||||
title: 'Create an Event',
|
||||
html: '<div class="form-group">' +
|
||||
'<input class="form-control" placeholder="Event Title" id="input-field">' +
|
||||
'</div>',
|
||||
showCancelButton: true,
|
||||
confirmButtonClass: 'btn btn-success',
|
||||
cancelButtonClass: 'btn btn-danger',
|
||||
buttonsStyling: false
|
||||
}).then(function(result) {
|
||||
|
||||
var eventData;
|
||||
event_title = $('#input-field').val();
|
||||
|
||||
if (event_title) {
|
||||
eventData = {
|
||||
title: event_title,
|
||||
start: start,
|
||||
end: end
|
||||
};
|
||||
$calendar.fullCalendar('renderEvent', eventData, true); // stick? = true
|
||||
}
|
||||
|
||||
$calendar.fullCalendar('unselect');
|
||||
|
||||
})
|
||||
.catch(swal.noop);
|
||||
},
|
||||
editable: true,
|
||||
eventLimit: true, // allow "more" link when too many events
|
||||
|
||||
|
||||
// color classes: [ event-blue | event-azure | event-green | event-orange | event-red ]
|
||||
events: [{
|
||||
title: 'All Day Event',
|
||||
start: new Date(y, m, 1),
|
||||
className: 'event-default'
|
||||
},
|
||||
{
|
||||
id: 999,
|
||||
title: 'Repeating Event',
|
||||
start: new Date(y, m, d - 4, 6, 0),
|
||||
allDay: false,
|
||||
className: 'event-rose'
|
||||
},
|
||||
{
|
||||
id: 999,
|
||||
title: 'Repeating Event',
|
||||
start: new Date(y, m, d + 3, 6, 0),
|
||||
allDay: false,
|
||||
className: 'event-rose'
|
||||
},
|
||||
{
|
||||
title: 'Meeting',
|
||||
start: new Date(y, m, d - 1, 10, 30),
|
||||
allDay: false,
|
||||
className: 'event-green'
|
||||
},
|
||||
{
|
||||
title: 'Lunch',
|
||||
start: new Date(y, m, d + 7, 12, 0),
|
||||
end: new Date(y, m, d + 7, 14, 0),
|
||||
allDay: false,
|
||||
className: 'event-red'
|
||||
},
|
||||
{
|
||||
title: 'Md-pro Launch',
|
||||
start: new Date(y, m, d - 2, 12, 0),
|
||||
allDay: true,
|
||||
className: 'event-azure'
|
||||
},
|
||||
{
|
||||
title: 'Birthday Party',
|
||||
start: new Date(y, m, d + 1, 19, 0),
|
||||
end: new Date(y, m, d + 1, 22, 30),
|
||||
allDay: false,
|
||||
className: 'event-azure'
|
||||
},
|
||||
{
|
||||
title: 'Click for Creative Tim',
|
||||
start: new Date(y, m, 21),
|
||||
end: new Date(y, m, 22),
|
||||
url: 'http://www.creative-tim.com/',
|
||||
className: 'event-orange'
|
||||
},
|
||||
{
|
||||
title: 'Click for Google',
|
||||
start: new Date(y, m, 21),
|
||||
end: new Date(y, m, 22),
|
||||
url: 'http://www.creative-tim.com/',
|
||||
className: 'event-orange'
|
||||
}
|
||||
]
|
||||
});
|
||||
},
|
||||
|
||||
initVectorMap: function() {
|
||||
var mapData = {
|
||||
"AU": 760,
|
||||
"BR": 550,
|
||||
"CA": 120,
|
||||
"DE": 1300,
|
||||
"FR": 540,
|
||||
"GB": 690,
|
||||
"GE": 200,
|
||||
"IN": 200,
|
||||
"RO": 600,
|
||||
"RU": 300,
|
||||
"US": 2920,
|
||||
};
|
||||
|
||||
$('#worldMap').vectorMap({
|
||||
map: 'world_mill_en',
|
||||
backgroundColor: "transparent",
|
||||
zoomOnScroll: false,
|
||||
regionStyle: {
|
||||
initial: {
|
||||
fill: '#e4e4e4',
|
||||
"fill-opacity": 0.9,
|
||||
stroke: 'none',
|
||||
"stroke-width": 0,
|
||||
"stroke-opacity": 0
|
||||
}
|
||||
},
|
||||
|
||||
series: {
|
||||
regions: [{
|
||||
values: mapData,
|
||||
scale: ["#AAAAAA", "#444444"],
|
||||
normalizeFunction: 'polynomial'
|
||||
}]
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Returns a function, that, as long as it continues to be invoked, will not
|
||||
// be triggered. The function will be called after it stops being called for
|
||||
// N milliseconds. If `immediate` is passed, trigger the function on the
|
||||
// leading edge, instead of the trailing.
|
||||
|
||||
function debounce(func, wait, immediate) {
|
||||
var timeout;
|
||||
return function() {
|
||||
var context = this,
|
||||
args = arguments;
|
||||
clearTimeout(timeout);
|
||||
timeout = setTimeout(function() {
|
||||
timeout = null;
|
||||
if (!immediate) func.apply(context, args);
|
||||
}, wait);
|
||||
if (immediate && !timeout) func.apply(context, args);
|
||||
};
|
||||
};
|
||||
16
resources/theme/material-dashboard/assets/js/material-dashboard.min.js
vendored
Normal file
10
resources/theme/material-dashboard/assets/js/plugins/arrive.min.js
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
* arrive.js
|
||||
* v2.4.1
|
||||
* https://github.com/uzairfarooq/arrive
|
||||
* MIT licensed
|
||||
*
|
||||
* Copyright (c) 2014-2017 Uzair Farooq
|
||||
*/
|
||||
|
||||
var Arrive=function(e,t,n){"use strict";function r(e,t,n){l.addMethod(t,n,e.unbindEvent),l.addMethod(t,n,e.unbindEventWithSelectorOrCallback),l.addMethod(t,n,e.unbindEventWithSelectorAndCallback)}function i(e){e.arrive=f.bindEvent,r(f,e,"unbindArrive"),e.leave=d.bindEvent,r(d,e,"unbindLeave")}if(e.MutationObserver&&"undefined"!=typeof HTMLElement){var o=0,l=function(){var t=HTMLElement.prototype.matches||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector;return{matchesSelector:function(e,n){return e instanceof HTMLElement&&t.call(e,n)},addMethod:function(e,t,r){var i=e[t];e[t]=function(){return r.length==arguments.length?r.apply(this,arguments):"function"==typeof i?i.apply(this,arguments):n}},callCallbacks:function(e,t){t&&t.options.onceOnly&&1==t.firedElems.length&&(e=[e[0]]);for(var n,r=0;n=e[r];r++)n&&n.callback&&n.callback.call(n.elem,n.elem);t&&t.options.onceOnly&&1==t.firedElems.length&&t.me.unbindEventWithSelectorAndCallback.call(t.target,t.selector,t.callback)},checkChildNodesRecursively:function(e,t,n,r){for(var i,o=0;i=e[o];o++)n(i,t,r)&&r.push({callback:t.callback,elem:i}),i.childNodes.length>0&&l.checkChildNodesRecursively(i.childNodes,t,n,r)},mergeArrays:function(e,t){var n,r={};for(n in e)e.hasOwnProperty(n)&&(r[n]=e[n]);for(n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);return r},toElementsArray:function(t){return n===t||"number"==typeof t.length&&t!==e||(t=[t]),t}}}(),c=function(){var e=function(){this._eventsBucket=[],this._beforeAdding=null,this._beforeRemoving=null};return e.prototype.addEvent=function(e,t,n,r){var i={target:e,selector:t,options:n,callback:r,firedElems:[]};return this._beforeAdding&&this._beforeAdding(i),this._eventsBucket.push(i),i},e.prototype.removeEvent=function(e){for(var t,n=this._eventsBucket.length-1;t=this._eventsBucket[n];n--)if(e(t)){this._beforeRemoving&&this._beforeRemoving(t);var r=this._eventsBucket.splice(n,1);r&&r.length&&(r[0].callback=null)}},e.prototype.beforeAdding=function(e){this._beforeAdding=e},e.prototype.beforeRemoving=function(e){this._beforeRemoving=e},e}(),a=function(t,r){var i=new c,o=this,a={fireOnAttributesModification:!1};return i.beforeAdding(function(n){var i,l=n.target;(l===e.document||l===e)&&(l=document.getElementsByTagName("html")[0]),i=new MutationObserver(function(e){r.call(this,e,n)});var c=t(n.options);i.observe(l,c),n.observer=i,n.me=o}),i.beforeRemoving(function(e){e.observer.disconnect()}),this.bindEvent=function(e,t,n){t=l.mergeArrays(a,t);for(var r=l.toElementsArray(this),o=0;o<r.length;o++)i.addEvent(r[o],e,t,n)},this.unbindEvent=function(){var e=l.toElementsArray(this);i.removeEvent(function(t){for(var r=0;r<e.length;r++)if(this===n||t.target===e[r])return!0;return!1})},this.unbindEventWithSelectorOrCallback=function(e){var t,r=l.toElementsArray(this),o=e;t="function"==typeof e?function(e){for(var t=0;t<r.length;t++)if((this===n||e.target===r[t])&&e.callback===o)return!0;return!1}:function(t){for(var i=0;i<r.length;i++)if((this===n||t.target===r[i])&&t.selector===e)return!0;return!1},i.removeEvent(t)},this.unbindEventWithSelectorAndCallback=function(e,t){var r=l.toElementsArray(this);i.removeEvent(function(i){for(var o=0;o<r.length;o++)if((this===n||i.target===r[o])&&i.selector===e&&i.callback===t)return!0;return!1})},this},s=function(){function e(e){var t={attributes:!1,childList:!0,subtree:!0};return e.fireOnAttributesModification&&(t.attributes=!0),t}function t(e,t){e.forEach(function(e){var n=e.addedNodes,i=e.target,o=[];null!==n&&n.length>0?l.checkChildNodesRecursively(n,t,r,o):"attributes"===e.type&&r(i,t,o)&&o.push({callback:t.callback,elem:i}),l.callCallbacks(o,t)})}function r(e,t){return l.matchesSelector(e,t.selector)&&(e._id===n&&(e._id=o++),-1==t.firedElems.indexOf(e._id))?(t.firedElems.push(e._id),!0):!1}var i={fireOnAttributesModification:!1,onceOnly:!1,existing:!1};f=new a(e,t);var c=f.bindEvent;return f.bindEvent=function(e,t,r){n===r?(r=t,t=i):t=l.mergeArrays(i,t);var o=l.toElementsArray(this);if(t.existing){for(var a=[],s=0;s<o.length;s++)for(var u=o[s].querySelectorAll(e),f=0;f<u.length;f++)a.push({callback:r,elem:u[f]});if(t.onceOnly&&a.length)return r.call(a[0].elem,a[0].elem);setTimeout(l.callCallbacks,1,a)}c.call(this,e,t,r)},f},u=function(){function e(){var e={childList:!0,subtree:!0};return e}function t(e,t){e.forEach(function(e){var n=e.removedNodes,i=[];null!==n&&n.length>0&&l.checkChildNodesRecursively(n,t,r,i),l.callCallbacks(i,t)})}function r(e,t){return l.matchesSelector(e,t.selector)}var i={};d=new a(e,t);var o=d.bindEvent;return d.bindEvent=function(e,t,r){n===r?(r=t,t=i):t=l.mergeArrays(i,t),o.call(this,e,t,r)},d},f=new s,d=new u;t&&i(t.fn),i(HTMLElement.prototype),i(NodeList.prototype),i(HTMLCollection.prototype),i(HTMLDocument.prototype),i(Window.prototype);var h={};return r(f,h,"unbindAllArrive"),r(d,h,"unbindAllLeave"),h}}(window,"undefined"==typeof jQuery?null:jQuery,void 0);
|
||||
47
resources/theme/material-dashboard/assets/js/plugins/bootstrap-datetimepicker.min.js
vendored
Normal file
404
resources/theme/material-dashboard/assets/js/plugins/bootstrap-notify.js
vendored
Normal file
@@ -0,0 +1,404 @@
|
||||
/*
|
||||
|
||||
|
||||
|
||||
Creative Tim Modifications
|
||||
|
||||
Lines: 236 was changed from top: 5px to top: 50% and we added margin-top: -9px. In this way the close button will be aligned vertically
|
||||
Line:219 - modified when the icon is set, we add the class "alert-with-icon", so there will be enough space for the icon.
|
||||
Lines: 179/222 - class() was changed to html() so we can add the Material Design Icons
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Project: Bootstrap Notify = v3.1.5
|
||||
* Description: Turns standard Bootstrap alerts into "Growl-like" notifications.
|
||||
* Author: Mouse0270 aka Robert McIntosh
|
||||
* License: MIT License
|
||||
* Website: https://github.com/mouse0270/bootstrap-growl
|
||||
*/
|
||||
|
||||
/* global define:false, require: false, jQuery:false */
|
||||
|
||||
(function(factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['jquery'], factory);
|
||||
} else if (typeof exports === 'object') {
|
||||
// Node/CommonJS
|
||||
factory(require('jquery'));
|
||||
} else {
|
||||
// Browser globals
|
||||
factory(jQuery);
|
||||
}
|
||||
}(function($) {
|
||||
// Create the defaults once
|
||||
var defaults = {
|
||||
element: 'body',
|
||||
position: null,
|
||||
type: "info",
|
||||
allow_dismiss: true,
|
||||
allow_duplicates: true,
|
||||
newest_on_top: false,
|
||||
showProgressbar: false,
|
||||
placement: {
|
||||
from: "top",
|
||||
align: "right"
|
||||
},
|
||||
offset: 20,
|
||||
spacing: 10,
|
||||
z_index: 1031,
|
||||
delay: 5000,
|
||||
timer: 1000,
|
||||
url_target: '_blank',
|
||||
mouse_over: null,
|
||||
animate: {
|
||||
enter: 'animated fadeInDown',
|
||||
exit: 'animated fadeOutUp'
|
||||
},
|
||||
onShow: null,
|
||||
onShown: null,
|
||||
onClose: null,
|
||||
onClosed: null,
|
||||
icon_type: 'class',
|
||||
template: '<div data-notify="container" class="col-11 col-md-4 alert alert-{0}" role="alert"><button type="button" aria-hidden="true" class="close" data-notify="dismiss"><i class="material-icons">close</i></button><i data-notify="icon" class="material-icons"></i><span data-notify="title">{1}</span> <span data-notify="message">{2}</span><div class="progress" data-notify="progressbar"><div class="progress-bar progress-bar-{0}" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div></div><a href="{3}" target="{4}" data-notify="url"></a></div>'
|
||||
};
|
||||
|
||||
String.format = function() {
|
||||
var str = arguments[0];
|
||||
for (var i = 1; i < arguments.length; i++) {
|
||||
str = str.replace(RegExp("\\{" + (i - 1) + "\\}", "gm"), arguments[i]);
|
||||
}
|
||||
return str;
|
||||
};
|
||||
|
||||
function isDuplicateNotification(notification) {
|
||||
var isDupe = false;
|
||||
|
||||
$('[data-notify="container"]').each(function(i, el) {
|
||||
var $el = $(el);
|
||||
var title = $el.find('[data-notify="title"]').text().trim();
|
||||
var message = $el.find('[data-notify="message"]').html().trim();
|
||||
|
||||
// The input string might be different than the actual parsed HTML string!
|
||||
// (<br> vs <br /> for example)
|
||||
// So we have to force-parse this as HTML here!
|
||||
var isSameTitle = title === $("<div>" + notification.settings.content.title + "</div>").html().trim();
|
||||
var isSameMsg = message === $("<div>" + notification.settings.content.message + "</div>").html().trim();
|
||||
var isSameType = $el.hasClass('alert-' + notification.settings.type);
|
||||
|
||||
if (isSameTitle && isSameMsg && isSameType) {
|
||||
//we found the dupe. Set the var and stop checking.
|
||||
isDupe = true;
|
||||
}
|
||||
return !isDupe;
|
||||
});
|
||||
|
||||
return isDupe;
|
||||
}
|
||||
|
||||
function Notify(element, content, options) {
|
||||
// Setup Content of Notify
|
||||
var contentObj = {
|
||||
content: {
|
||||
message: typeof content === 'object' ? content.message : content,
|
||||
title: content.title ? content.title : '',
|
||||
icon: content.icon ? content.icon : '',
|
||||
url: content.url ? content.url : '#',
|
||||
target: content.target ? content.target : '-'
|
||||
}
|
||||
};
|
||||
|
||||
options = $.extend(true, {}, contentObj, options);
|
||||
this.settings = $.extend(true, {}, defaults, options);
|
||||
this._defaults = defaults;
|
||||
if (this.settings.content.target === "-") {
|
||||
this.settings.content.target = this.settings.url_target;
|
||||
}
|
||||
this.animations = {
|
||||
start: 'webkitAnimationStart oanimationstart MSAnimationStart animationstart',
|
||||
end: 'webkitAnimationEnd oanimationend MSAnimationEnd animationend'
|
||||
};
|
||||
|
||||
if (typeof this.settings.offset === 'number') {
|
||||
this.settings.offset = {
|
||||
x: this.settings.offset,
|
||||
y: this.settings.offset
|
||||
};
|
||||
}
|
||||
|
||||
//if duplicate messages are not allowed, then only continue if this new message is not a duplicate of one that it already showing
|
||||
if (this.settings.allow_duplicates || (!this.settings.allow_duplicates && !isDuplicateNotification(this))) {
|
||||
this.init();
|
||||
}
|
||||
}
|
||||
|
||||
$.extend(Notify.prototype, {
|
||||
init: function() {
|
||||
var self = this;
|
||||
|
||||
this.buildNotify();
|
||||
if (this.settings.content.icon) {
|
||||
this.setIcon();
|
||||
}
|
||||
if (this.settings.content.url != "#") {
|
||||
this.styleURL();
|
||||
}
|
||||
this.styleDismiss();
|
||||
this.placement();
|
||||
this.bind();
|
||||
|
||||
this.notify = {
|
||||
$ele: this.$ele,
|
||||
update: function(command, update) {
|
||||
var commands = {};
|
||||
if (typeof command === "string") {
|
||||
commands[command] = update;
|
||||
} else {
|
||||
commands = command;
|
||||
}
|
||||
for (var cmd in commands) {
|
||||
switch (cmd) {
|
||||
case "type":
|
||||
this.$ele.removeClass('alert-' + self.settings.type);
|
||||
this.$ele.find('[data-notify="progressbar"] > .progress-bar').removeClass('progress-bar-' + self.settings.type);
|
||||
self.settings.type = commands[cmd];
|
||||
this.$ele.addClass('alert-' + commands[cmd]).find('[data-notify="progressbar"] > .progress-bar').addClass('progress-bar-' + commands[cmd]);
|
||||
break;
|
||||
case "icon":
|
||||
var $icon = this.$ele.find('[data-notify="icon"]');
|
||||
if (self.settings.icon_type.toLowerCase() === 'class') {
|
||||
$icon.html(commands[cmd]);
|
||||
} else {
|
||||
if (!$icon.is('img')) {
|
||||
$icon.find('img');
|
||||
}
|
||||
$icon.attr('src', commands[cmd]);
|
||||
}
|
||||
break;
|
||||
case "progress":
|
||||
var newDelay = self.settings.delay - (self.settings.delay * (commands[cmd] / 100));
|
||||
this.$ele.data('notify-delay', newDelay);
|
||||
this.$ele.find('[data-notify="progressbar"] > div').attr('aria-valuenow', commands[cmd]).css('width', commands[cmd] + '%');
|
||||
break;
|
||||
case "url":
|
||||
this.$ele.find('[data-notify="url"]').attr('href', commands[cmd]);
|
||||
break;
|
||||
case "target":
|
||||
this.$ele.find('[data-notify="url"]').attr('target', commands[cmd]);
|
||||
break;
|
||||
default:
|
||||
this.$ele.find('[data-notify="' + cmd + '"]').html(commands[cmd]);
|
||||
}
|
||||
}
|
||||
var posX = this.$ele.outerHeight() + parseInt(self.settings.spacing) + parseInt(self.settings.offset.y);
|
||||
self.reposition(posX);
|
||||
},
|
||||
close: function() {
|
||||
self.close();
|
||||
}
|
||||
};
|
||||
|
||||
},
|
||||
buildNotify: function() {
|
||||
var content = this.settings.content;
|
||||
this.$ele = $(String.format(this.settings.template, this.settings.type, content.title, content.message, content.url, content.target));
|
||||
this.$ele.attr('data-notify-position', this.settings.placement.from + '-' + this.settings.placement.align);
|
||||
if (!this.settings.allow_dismiss) {
|
||||
this.$ele.find('[data-notify="dismiss"]').css('display', 'none');
|
||||
}
|
||||
if ((this.settings.delay <= 0 && !this.settings.showProgressbar) || !this.settings.showProgressbar) {
|
||||
this.$ele.find('[data-notify="progressbar"]').remove();
|
||||
}
|
||||
},
|
||||
setIcon: function() {
|
||||
|
||||
this.$ele.addClass('alert-with-icon');
|
||||
|
||||
if (this.settings.icon_type.toLowerCase() === 'class') {
|
||||
this.$ele.find('[data-notify="icon"]').html(this.settings.content.icon);
|
||||
} else {
|
||||
if (this.$ele.find('[data-notify="icon"]').is('img')) {
|
||||
this.$ele.find('[data-notify="icon"]').attr('src', this.settings.content.icon);
|
||||
} else {
|
||||
this.$ele.find('[data-notify="icon"]').append('<img src="' + this.settings.content.icon + '" alt="Notify Icon" />');
|
||||
}
|
||||
}
|
||||
},
|
||||
styleDismiss: function() {
|
||||
this.$ele.find('[data-notify="dismiss"]').css({
|
||||
position: 'absolute',
|
||||
right: '10px',
|
||||
top: '50%',
|
||||
marginTop: '-9px',
|
||||
zIndex: this.settings.z_index + 2
|
||||
});
|
||||
},
|
||||
styleURL: function() {
|
||||
this.$ele.find('[data-notify="url"]').css({
|
||||
backgroundImage: 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)',
|
||||
height: '100%',
|
||||
left: 0,
|
||||
position: 'absolute',
|
||||
top: 0,
|
||||
width: '100%',
|
||||
zIndex: this.settings.z_index + 1
|
||||
});
|
||||
},
|
||||
placement: function() {
|
||||
var self = this,
|
||||
offsetAmt = this.settings.offset.y,
|
||||
css = {
|
||||
display: 'inline-block',
|
||||
margin: '15px auto',
|
||||
position: this.settings.position ? this.settings.position : (this.settings.element === 'body' ? 'fixed' : 'absolute'),
|
||||
transition: 'all .5s ease-in-out',
|
||||
zIndex: this.settings.z_index
|
||||
},
|
||||
hasAnimation = false,
|
||||
settings = this.settings;
|
||||
|
||||
$('[data-notify-position="' + this.settings.placement.from + '-' + this.settings.placement.align + '"]:not([data-closing="true"])').each(function() {
|
||||
offsetAmt = Math.max(offsetAmt, parseInt($(this).css(settings.placement.from)) + parseInt($(this).outerHeight()) + parseInt(settings.spacing));
|
||||
});
|
||||
if (this.settings.newest_on_top === true) {
|
||||
offsetAmt = this.settings.offset.y;
|
||||
}
|
||||
css[this.settings.placement.from] = offsetAmt + 'px';
|
||||
|
||||
switch (this.settings.placement.align) {
|
||||
case "left":
|
||||
case "right":
|
||||
css[this.settings.placement.align] = this.settings.offset.x + 'px';
|
||||
break;
|
||||
case "center":
|
||||
css.left = 0;
|
||||
css.right = 0;
|
||||
break;
|
||||
}
|
||||
this.$ele.css(css).addClass(this.settings.animate.enter);
|
||||
$.each(Array('webkit-', 'moz-', 'o-', 'ms-', ''), function(index, prefix) {
|
||||
self.$ele[0].style[prefix + 'AnimationIterationCount'] = 1;
|
||||
});
|
||||
|
||||
$(this.settings.element).append(this.$ele);
|
||||
|
||||
if (this.settings.newest_on_top === true) {
|
||||
offsetAmt = (parseInt(offsetAmt) + parseInt(this.settings.spacing)) + this.$ele.outerHeight();
|
||||
this.reposition(offsetAmt);
|
||||
}
|
||||
|
||||
if ($.isFunction(self.settings.onShow)) {
|
||||
self.settings.onShow.call(this.$ele);
|
||||
}
|
||||
|
||||
this.$ele.one(this.animations.start, function() {
|
||||
hasAnimation = true;
|
||||
}).one(this.animations.end, function() {
|
||||
if ($.isFunction(self.settings.onShown)) {
|
||||
self.settings.onShown.call(this);
|
||||
}
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
if (!hasAnimation) {
|
||||
if ($.isFunction(self.settings.onShown)) {
|
||||
self.settings.onShown.call(this);
|
||||
}
|
||||
}
|
||||
}, 600);
|
||||
},
|
||||
bind: function() {
|
||||
var self = this;
|
||||
|
||||
this.$ele.find('[data-notify="dismiss"]').on('click', function() {
|
||||
self.close();
|
||||
});
|
||||
|
||||
this.$ele.mouseover(function() {
|
||||
$(this).data('data-hover', "true");
|
||||
}).mouseout(function() {
|
||||
$(this).data('data-hover', "false");
|
||||
});
|
||||
this.$ele.data('data-hover', "false");
|
||||
|
||||
if (this.settings.delay > 0) {
|
||||
self.$ele.data('notify-delay', self.settings.delay);
|
||||
var timer = setInterval(function() {
|
||||
var delay = parseInt(self.$ele.data('notify-delay')) - self.settings.timer;
|
||||
if ((self.$ele.data('data-hover') === 'false' && self.settings.mouse_over === "pause") || self.settings.mouse_over != "pause") {
|
||||
var percent = ((self.settings.delay - delay) / self.settings.delay) * 100;
|
||||
self.$ele.data('notify-delay', delay);
|
||||
self.$ele.find('[data-notify="progressbar"] > div').attr('aria-valuenow', percent).css('width', percent + '%');
|
||||
}
|
||||
if (delay <= -(self.settings.timer)) {
|
||||
clearInterval(timer);
|
||||
self.close();
|
||||
}
|
||||
}, self.settings.timer);
|
||||
}
|
||||
},
|
||||
close: function() {
|
||||
var self = this,
|
||||
posX = parseInt(this.$ele.css(this.settings.placement.from)),
|
||||
hasAnimation = false;
|
||||
|
||||
this.$ele.data('closing', 'true').addClass(this.settings.animate.exit);
|
||||
self.reposition(posX);
|
||||
|
||||
if ($.isFunction(self.settings.onClose)) {
|
||||
self.settings.onClose.call(this.$ele);
|
||||
}
|
||||
|
||||
this.$ele.one(this.animations.start, function() {
|
||||
hasAnimation = true;
|
||||
}).one(this.animations.end, function() {
|
||||
$(this).remove();
|
||||
if ($.isFunction(self.settings.onClosed)) {
|
||||
self.settings.onClosed.call(this);
|
||||
}
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
if (!hasAnimation) {
|
||||
self.$ele.remove();
|
||||
if (self.settings.onClosed) {
|
||||
self.settings.onClosed(self.$ele);
|
||||
}
|
||||
}
|
||||
}, 600);
|
||||
},
|
||||
reposition: function(posX) {
|
||||
var self = this,
|
||||
notifies = '[data-notify-position="' + this.settings.placement.from + '-' + this.settings.placement.align + '"]:not([data-closing="true"])',
|
||||
$elements = this.$ele.nextAll(notifies);
|
||||
if (this.settings.newest_on_top === true) {
|
||||
$elements = this.$ele.prevAll(notifies);
|
||||
}
|
||||
$elements.each(function() {
|
||||
$(this).css(self.settings.placement.from, posX);
|
||||
posX = (parseInt(posX) + parseInt(self.settings.spacing)) + $(this).outerHeight();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$.notify = function(content, options) {
|
||||
var plugin = new Notify(this, content, options);
|
||||
return plugin.notify;
|
||||
};
|
||||
$.notifyDefaults = function(options) {
|
||||
defaults = $.extend(true, {}, defaults, options);
|
||||
return defaults;
|
||||
};
|
||||
$.notifyClose = function(command) {
|
||||
if (typeof command === "undefined" || command === "all") {
|
||||
$('[data-notify]').find('[data-notify="dismiss"]').trigger('click');
|
||||
} else {
|
||||
$('[data-notify-position="' + command + '"]').find('[data-notify="dismiss"]').trigger('click');
|
||||
}
|
||||
};
|
||||
|
||||
}));
|
||||
2697
resources/theme/material-dashboard/assets/js/plugins/bootstrap-selectpicker.js
vendored
Normal file
718
resources/theme/material-dashboard/assets/js/plugins/bootstrap-tagsinput.js
vendored
Normal file
@@ -0,0 +1,718 @@
|
||||
/*
|
||||
* bootstrap-tagsinput v0.8.0
|
||||
*
|
||||
*/
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
|
||||
var defaultOptions = {
|
||||
tagClass: function(item) {
|
||||
return 'badge';
|
||||
},
|
||||
focusClass: 'focus',
|
||||
itemValue: function(item) {
|
||||
return item ? item.toString() : item;
|
||||
},
|
||||
itemText: function(item) {
|
||||
return this.itemValue(item);
|
||||
},
|
||||
itemTitle: function(item) {
|
||||
return null;
|
||||
},
|
||||
freeInput: true,
|
||||
addOnBlur: true,
|
||||
maxTags: undefined,
|
||||
maxChars: undefined,
|
||||
confirmKeys: [13, 44],
|
||||
delimiter: ',',
|
||||
delimiterRegex: null,
|
||||
cancelConfirmKeysOnEmpty: false,
|
||||
onTagExists: function(item, $tag) {
|
||||
$tag.hide().fadeIn();
|
||||
},
|
||||
trimValue: false,
|
||||
allowDuplicates: false,
|
||||
triggerChange: true
|
||||
};
|
||||
|
||||
/**
|
||||
* Constructor function
|
||||
*/
|
||||
function TagsInput(element, options) {
|
||||
this.isInit = true;
|
||||
this.itemsArray = [];
|
||||
|
||||
this.$element = $(element);
|
||||
this.$element.hide();
|
||||
|
||||
this.isSelect = (element.tagName === 'SELECT');
|
||||
this.multiple = (this.isSelect && element.hasAttribute('multiple'));
|
||||
this.objectItems = options && options.itemValue;
|
||||
this.placeholderText = element.hasAttribute('placeholder') ? this.$element.attr('placeholder') : '';
|
||||
this.inputSize = Math.max(1, this.placeholderText.length);
|
||||
|
||||
this.$container = $('<div class="bootstrap-tagsinput"></div>');
|
||||
this.$input = $('<input type="text" class="form-control" placeholder="' + this.placeholderText + '"/>').appendTo(this.$container);
|
||||
|
||||
this.$element.before(this.$container);
|
||||
|
||||
this.build(options);
|
||||
this.isInit = false;
|
||||
}
|
||||
|
||||
TagsInput.prototype = {
|
||||
constructor: TagsInput,
|
||||
|
||||
/**
|
||||
* Adds the given item as a new tag. Pass true to dontPushVal to prevent
|
||||
* updating the elements val()
|
||||
*/
|
||||
add: function(item, dontPushVal, options) {
|
||||
var self = this;
|
||||
|
||||
if (self.options.maxTags && self.itemsArray.length >= self.options.maxTags)
|
||||
return;
|
||||
|
||||
// Ignore falsey values, except false
|
||||
if (item !== false && !item)
|
||||
return;
|
||||
|
||||
// Trim value
|
||||
if (typeof item === "string" && self.options.trimValue) {
|
||||
item = $.trim(item);
|
||||
}
|
||||
|
||||
// Throw an error when trying to add an object while the itemValue option was not set
|
||||
if (typeof item === "object" && !self.objectItems)
|
||||
throw ("Can't add objects when itemValue option is not set");
|
||||
|
||||
// Ignore strings only containg whitespace
|
||||
if (item.toString().match(/^\s*$/))
|
||||
return;
|
||||
|
||||
// If SELECT but not multiple, remove current tag
|
||||
if (self.isSelect && !self.multiple && self.itemsArray.length > 0)
|
||||
self.remove(self.itemsArray[0]);
|
||||
|
||||
if (typeof item === "string" && this.$element[0].tagName === 'INPUT') {
|
||||
var delimiter = (self.options.delimiterRegex) ? self.options.delimiterRegex : self.options.delimiter;
|
||||
var items = item.split(delimiter);
|
||||
if (items.length > 1) {
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
this.add(items[i], true);
|
||||
}
|
||||
|
||||
if (!dontPushVal)
|
||||
self.pushVal(self.options.triggerChange);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var itemValue = self.options.itemValue(item),
|
||||
itemText = self.options.itemText(item),
|
||||
tagClass = self.options.tagClass(item),
|
||||
itemTitle = self.options.itemTitle(item);
|
||||
|
||||
// Ignore items allready added
|
||||
var existing = $.grep(self.itemsArray, function(item) {
|
||||
return self.options.itemValue(item) === itemValue;
|
||||
})[0];
|
||||
if (existing && !self.options.allowDuplicates) {
|
||||
// Invoke onTagExists
|
||||
if (self.options.onTagExists) {
|
||||
var $existingTag = $(".tag", self.$container).filter(function() {
|
||||
return $(this).data("item") === existing;
|
||||
});
|
||||
self.options.onTagExists(item, $existingTag);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// if length greater than limit
|
||||
if (self.items().toString().length + item.length + 1 > self.options.maxInputLength)
|
||||
return;
|
||||
|
||||
// raise beforeItemAdd arg
|
||||
var beforeItemAddEvent = $.Event('beforeItemAdd', {
|
||||
item: item,
|
||||
cancel: false,
|
||||
options: options
|
||||
});
|
||||
self.$element.trigger(beforeItemAddEvent);
|
||||
if (beforeItemAddEvent.cancel)
|
||||
return;
|
||||
|
||||
// register item in internal array and map
|
||||
self.itemsArray.push(item);
|
||||
|
||||
// add a tag element
|
||||
|
||||
var $tag = $('<span class="tag ' + htmlEncode(tagClass) + (itemTitle !== null ? ('" title="' + itemTitle) : '') + '">' + htmlEncode(itemText) + '<span data-role="remove"></span></span>');
|
||||
$tag.data('item', item);
|
||||
self.findInputWrapper().before($tag);
|
||||
$tag.after(' ');
|
||||
|
||||
// Check to see if the tag exists in its raw or uri-encoded form
|
||||
var optionExists = (
|
||||
$('option[value="' + encodeURIComponent(itemValue) + '"]', self.$element).length ||
|
||||
$('option[value="' + htmlEncode(itemValue) + '"]', self.$element).length
|
||||
);
|
||||
|
||||
// add <option /> if item represents a value not present in one of the <select />'s options
|
||||
if (self.isSelect && !optionExists) {
|
||||
var $option = $('<option selected>' + htmlEncode(itemText) + '</option>');
|
||||
$option.data('item', item);
|
||||
$option.attr('value', itemValue);
|
||||
self.$element.append($option);
|
||||
}
|
||||
|
||||
if (!dontPushVal)
|
||||
self.pushVal(self.options.triggerChange);
|
||||
|
||||
// Add class when reached maxTags
|
||||
if (self.options.maxTags === self.itemsArray.length || self.items().toString().length === self.options.maxInputLength)
|
||||
self.$container.addClass('bootstrap-tagsinput-max');
|
||||
|
||||
// If using typeahead, once the tag has been added, clear the typeahead value so it does not stick around in the input.
|
||||
if ($('.typeahead, .twitter-typeahead', self.$container).length) {
|
||||
self.$input.typeahead('val', '');
|
||||
}
|
||||
|
||||
if (this.isInit) {
|
||||
self.$element.trigger($.Event('itemAddedOnInit', {
|
||||
item: item,
|
||||
options: options
|
||||
}));
|
||||
} else {
|
||||
self.$element.trigger($.Event('itemAdded', {
|
||||
item: item,
|
||||
options: options
|
||||
}));
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes the given item. Pass true to dontPushVal to prevent updating the
|
||||
* elements val()
|
||||
*/
|
||||
remove: function(item, dontPushVal, options) {
|
||||
var self = this;
|
||||
|
||||
if (self.objectItems) {
|
||||
if (typeof item === "object")
|
||||
item = $.grep(self.itemsArray, function(other) {
|
||||
return self.options.itemValue(other) == self.options.itemValue(item);
|
||||
});
|
||||
else
|
||||
item = $.grep(self.itemsArray, function(other) {
|
||||
return self.options.itemValue(other) == item;
|
||||
});
|
||||
|
||||
item = item[item.length - 1];
|
||||
}
|
||||
|
||||
if (item) {
|
||||
var beforeItemRemoveEvent = $.Event('beforeItemRemove', {
|
||||
item: item,
|
||||
cancel: false,
|
||||
options: options
|
||||
});
|
||||
self.$element.trigger(beforeItemRemoveEvent);
|
||||
if (beforeItemRemoveEvent.cancel)
|
||||
return;
|
||||
|
||||
$('.tag', self.$container).filter(function() {
|
||||
return $(this).data('item') === item;
|
||||
}).remove();
|
||||
$('option', self.$element).filter(function() {
|
||||
return $(this).data('item') === item;
|
||||
}).remove();
|
||||
if ($.inArray(item, self.itemsArray) !== -1)
|
||||
self.itemsArray.splice($.inArray(item, self.itemsArray), 1);
|
||||
}
|
||||
|
||||
if (!dontPushVal)
|
||||
self.pushVal(self.options.triggerChange);
|
||||
|
||||
// Remove class when reached maxTags
|
||||
if (self.options.maxTags > self.itemsArray.length)
|
||||
self.$container.removeClass('bootstrap-tagsinput-max');
|
||||
|
||||
self.$element.trigger($.Event('itemRemoved', {
|
||||
item: item,
|
||||
options: options
|
||||
}));
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes all items
|
||||
*/
|
||||
removeAll: function() {
|
||||
var self = this;
|
||||
|
||||
$('.tag', self.$container).remove();
|
||||
$('option', self.$element).remove();
|
||||
|
||||
while (self.itemsArray.length > 0)
|
||||
self.itemsArray.pop();
|
||||
|
||||
self.pushVal(self.options.triggerChange);
|
||||
},
|
||||
|
||||
/**
|
||||
* Refreshes the tags so they match the text/value of their corresponding
|
||||
* item.
|
||||
*/
|
||||
refresh: function() {
|
||||
var self = this;
|
||||
$('.tag', self.$container).each(function() {
|
||||
var $tag = $(this),
|
||||
item = $tag.data('item'),
|
||||
itemValue = self.options.itemValue(item),
|
||||
itemText = self.options.itemText(item),
|
||||
tagClass = self.options.tagClass(item);
|
||||
|
||||
// Update tag's class and inner text
|
||||
$tag.attr('class', null);
|
||||
$tag.addClass('tag ' + htmlEncode(tagClass));
|
||||
$tag.contents().filter(function() {
|
||||
return this.nodeType == 3;
|
||||
})[0].nodeValue = htmlEncode(itemText);
|
||||
|
||||
if (self.isSelect) {
|
||||
var option = $('option', self.$element).filter(function() {
|
||||
return $(this).data('item') === item;
|
||||
});
|
||||
option.attr('value', itemValue);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the items added as tags
|
||||
*/
|
||||
items: function() {
|
||||
return this.itemsArray;
|
||||
},
|
||||
|
||||
/**
|
||||
* Assembly value by retrieving the value of each item, and set it on the
|
||||
* element.
|
||||
*/
|
||||
pushVal: function() {
|
||||
var self = this,
|
||||
val = $.map(self.items(), function(item) {
|
||||
return self.options.itemValue(item).toString();
|
||||
});
|
||||
|
||||
self.$element.val(val, true);
|
||||
|
||||
if (self.options.triggerChange)
|
||||
self.$element.trigger('change');
|
||||
},
|
||||
|
||||
/**
|
||||
* Initializes the tags input behaviour on the element
|
||||
*/
|
||||
build: function(options) {
|
||||
var self = this;
|
||||
|
||||
self.options = $.extend({}, defaultOptions, options);
|
||||
// When itemValue is set, freeInput should always be false
|
||||
if (self.objectItems)
|
||||
self.options.freeInput = false;
|
||||
|
||||
makeOptionItemFunction(self.options, 'itemValue');
|
||||
makeOptionItemFunction(self.options, 'itemText');
|
||||
makeOptionFunction(self.options, 'tagClass');
|
||||
|
||||
// Typeahead Bootstrap version 2.3.2
|
||||
if (self.options.typeahead) {
|
||||
var typeahead = self.options.typeahead || {};
|
||||
|
||||
makeOptionFunction(typeahead, 'source');
|
||||
|
||||
self.$input.typeahead($.extend({}, typeahead, {
|
||||
source: function(query, process) {
|
||||
function processItems(items) {
|
||||
var texts = [];
|
||||
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
var text = self.options.itemText(items[i]);
|
||||
map[text] = items[i];
|
||||
texts.push(text);
|
||||
}
|
||||
process(texts);
|
||||
}
|
||||
|
||||
this.map = {};
|
||||
var map = this.map,
|
||||
data = typeahead.source(query);
|
||||
|
||||
if ($.isFunction(data.success)) {
|
||||
// support for Angular callbacks
|
||||
data.success(processItems);
|
||||
} else if ($.isFunction(data.then)) {
|
||||
// support for Angular promises
|
||||
data.then(processItems);
|
||||
} else {
|
||||
// support for functions and jquery promises
|
||||
$.when(data)
|
||||
.then(processItems);
|
||||
}
|
||||
},
|
||||
updater: function(text) {
|
||||
self.add(this.map[text]);
|
||||
return this.map[text];
|
||||
},
|
||||
matcher: function(text) {
|
||||
return (text.toLowerCase().indexOf(this.query.trim().toLowerCase()) !== -1);
|
||||
},
|
||||
sorter: function(texts) {
|
||||
return texts.sort();
|
||||
},
|
||||
highlighter: function(text) {
|
||||
var regex = new RegExp('(' + this.query + ')', 'gi');
|
||||
return text.replace(regex, "<strong>$1</strong>");
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
// typeahead.js
|
||||
if (self.options.typeaheadjs) {
|
||||
|
||||
// Determine if main configurations were passed or simply a dataset
|
||||
var typeaheadjs = self.options.typeaheadjs;
|
||||
if (!$.isArray(typeaheadjs)) {
|
||||
typeaheadjs = [null, typeaheadjs];
|
||||
}
|
||||
var valueKey = typeaheadjs[1].valueKey; // We should test typeaheadjs.size >= 1
|
||||
var f_datum = valueKey ? function(datum) {
|
||||
return datum[valueKey];
|
||||
} :
|
||||
function(datum) {
|
||||
return datum;
|
||||
}
|
||||
$.fn.typeahead.apply(self.$input, typeaheadjs).on('typeahead:selected', $.proxy(function(obj, datum) {
|
||||
self.add(f_datum(datum));
|
||||
self.$input.typeahead('val', '');
|
||||
}, self));
|
||||
|
||||
}
|
||||
|
||||
self.$container.on('click', $.proxy(function(event) {
|
||||
if (!self.$element.attr('disabled')) {
|
||||
self.$input.removeAttr('disabled');
|
||||
}
|
||||
self.$input.focus();
|
||||
}, self));
|
||||
|
||||
if (self.options.addOnBlur && self.options.freeInput) {
|
||||
self.$input.on('focusout', $.proxy(function(event) {
|
||||
// HACK: only process on focusout when no typeahead opened, to
|
||||
// avoid adding the typeahead text as tag
|
||||
if ($('.typeahead, .twitter-typeahead', self.$container).length === 0) {
|
||||
self.add(self.$input.val());
|
||||
self.$input.val('');
|
||||
}
|
||||
}, self));
|
||||
}
|
||||
|
||||
// Toggle the 'focus' css class on the container when it has focus
|
||||
self.$container.on({
|
||||
focusin: function() {
|
||||
self.$container.addClass(self.options.focusClass);
|
||||
},
|
||||
focusout: function() {
|
||||
self.$container.removeClass(self.options.focusClass);
|
||||
},
|
||||
});
|
||||
|
||||
self.$container.on('keydown', 'input', $.proxy(function(event) {
|
||||
var $input = $(event.target),
|
||||
$inputWrapper = self.findInputWrapper();
|
||||
|
||||
if (self.$element.attr('disabled')) {
|
||||
self.$input.attr('disabled', 'disabled');
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.which) {
|
||||
// BACKSPACE
|
||||
case 8:
|
||||
if (doGetCaretPosition($input[0]) === 0) {
|
||||
var prev = $inputWrapper.prev();
|
||||
if (prev.length) {
|
||||
self.remove(prev.data('item'));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
// DELETE
|
||||
case 46:
|
||||
if (doGetCaretPosition($input[0]) === 0) {
|
||||
var next = $inputWrapper.next();
|
||||
if (next.length) {
|
||||
self.remove(next.data('item'));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
// LEFT ARROW
|
||||
case 37:
|
||||
// Try to move the input before the previous tag
|
||||
var $prevTag = $inputWrapper.prev();
|
||||
if ($input.val().length === 0 && $prevTag[0]) {
|
||||
$prevTag.before($inputWrapper);
|
||||
$input.focus();
|
||||
}
|
||||
break;
|
||||
// RIGHT ARROW
|
||||
case 39:
|
||||
// Try to move the input after the next tag
|
||||
var $nextTag = $inputWrapper.next();
|
||||
if ($input.val().length === 0 && $nextTag[0]) {
|
||||
$nextTag.after($inputWrapper);
|
||||
$input.focus();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// ignore
|
||||
}
|
||||
|
||||
// Reset internal input's size
|
||||
var textLength = $input.val().length,
|
||||
wordSpace = Math.ceil(textLength / 5),
|
||||
size = textLength + wordSpace + 1;
|
||||
$input.attr('size', Math.max(this.inputSize, $input.val().length));
|
||||
}, self));
|
||||
|
||||
self.$container.on('keypress', 'input', $.proxy(function(event) {
|
||||
var $input = $(event.target);
|
||||
|
||||
if (self.$element.attr('disabled')) {
|
||||
self.$input.attr('disabled', 'disabled');
|
||||
return;
|
||||
}
|
||||
|
||||
var text = $input.val(),
|
||||
maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars;
|
||||
if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) {
|
||||
// Only attempt to add a tag if there is data in the field
|
||||
if (text.length !== 0) {
|
||||
self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text);
|
||||
$input.val('');
|
||||
}
|
||||
|
||||
// If the field is empty, let the event triggered fire as usual
|
||||
if (self.options.cancelConfirmKeysOnEmpty === false) {
|
||||
event.preventDefault();
|
||||
}
|
||||
}
|
||||
|
||||
// Reset internal input's size
|
||||
var textLength = $input.val().length,
|
||||
wordSpace = Math.ceil(textLength / 5),
|
||||
size = textLength + wordSpace + 1;
|
||||
$input.attr('size', Math.max(this.inputSize, $input.val().length));
|
||||
}, self));
|
||||
|
||||
// Remove icon clicked
|
||||
self.$container.on('click', '[data-role=remove]', $.proxy(function(event) {
|
||||
if (self.$element.attr('disabled')) {
|
||||
return;
|
||||
}
|
||||
self.remove($(event.target).closest('.tag').data('item'));
|
||||
}, self));
|
||||
|
||||
// Only add existing value as tags when using strings as tags
|
||||
if (self.options.itemValue === defaultOptions.itemValue) {
|
||||
if (self.$element[0].tagName === 'INPUT') {
|
||||
self.add(self.$element.val());
|
||||
} else {
|
||||
$('option', self.$element).each(function() {
|
||||
self.add($(this).attr('value'), true);
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes all tagsinput behaviour and unregsiter all event handlers
|
||||
*/
|
||||
destroy: function() {
|
||||
var self = this;
|
||||
|
||||
// Unbind events
|
||||
self.$container.off('keypress', 'input');
|
||||
self.$container.off('click', '[role=remove]');
|
||||
|
||||
self.$container.remove();
|
||||
self.$element.removeData('tagsinput');
|
||||
self.$element.show();
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets focus on the tagsinput
|
||||
*/
|
||||
focus: function() {
|
||||
this.$input.focus();
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the internal input element
|
||||
*/
|
||||
input: function() {
|
||||
return this.$input;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the element which is wrapped around the internal input. This
|
||||
* is normally the $container, but typeahead.js moves the $input element.
|
||||
*/
|
||||
findInputWrapper: function() {
|
||||
var elt = this.$input[0],
|
||||
container = this.$container[0];
|
||||
while (elt && elt.parentNode !== container)
|
||||
elt = elt.parentNode;
|
||||
|
||||
return $(elt);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Register JQuery plugin
|
||||
*/
|
||||
$.fn.tagsinput = function(arg1, arg2, arg3) {
|
||||
var results = [];
|
||||
|
||||
this.each(function() {
|
||||
var tagsinput = $(this).data('tagsinput');
|
||||
// Initialize a new tags input
|
||||
if (!tagsinput) {
|
||||
tagsinput = new TagsInput(this, arg1);
|
||||
$(this).data('tagsinput', tagsinput);
|
||||
results.push(tagsinput);
|
||||
|
||||
if (this.tagName === 'SELECT') {
|
||||
$('option', $(this)).attr('selected', 'selected');
|
||||
}
|
||||
|
||||
// Init tags from $(this).val()
|
||||
$(this).val($(this).val());
|
||||
} else if (!arg1 && !arg2) {
|
||||
// tagsinput already exists
|
||||
// no function, trying to init
|
||||
results.push(tagsinput);
|
||||
} else if (tagsinput[arg1] !== undefined) {
|
||||
// Invoke function on existing tags input
|
||||
if (tagsinput[arg1].length === 3 && arg3 !== undefined) {
|
||||
var retVal = tagsinput[arg1](arg2, null, arg3);
|
||||
} else {
|
||||
var retVal = tagsinput[arg1](arg2);
|
||||
}
|
||||
if (retVal !== undefined)
|
||||
results.push(retVal);
|
||||
}
|
||||
});
|
||||
|
||||
if (typeof arg1 == 'string') {
|
||||
// Return the results from the invoked function calls
|
||||
return results.length > 1 ? results : results[0];
|
||||
} else {
|
||||
return results;
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.tagsinput.Constructor = TagsInput;
|
||||
|
||||
/**
|
||||
* Most options support both a string or number as well as a function as
|
||||
* option value. This function makes sure that the option with the given
|
||||
* key in the given options is wrapped in a function
|
||||
*/
|
||||
function makeOptionItemFunction(options, key) {
|
||||
if (typeof options[key] !== 'function') {
|
||||
var propertyName = options[key];
|
||||
options[key] = function(item) {
|
||||
return item[propertyName];
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function makeOptionFunction(options, key) {
|
||||
if (typeof options[key] !== 'function') {
|
||||
var value = options[key];
|
||||
options[key] = function() {
|
||||
return value;
|
||||
};
|
||||
}
|
||||
}
|
||||
/**
|
||||
* HtmlEncodes the given value
|
||||
*/
|
||||
var htmlEncodeContainer = $('<div />');
|
||||
|
||||
function htmlEncode(value) {
|
||||
if (value) {
|
||||
return htmlEncodeContainer.text(value).html();
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the position of the caret in the given input field
|
||||
* http://flightschool.acylt.com/devnotes/caret-position-woes/
|
||||
*/
|
||||
function doGetCaretPosition(oField) {
|
||||
var iCaretPos = 0;
|
||||
if (document.selection) {
|
||||
oField.focus();
|
||||
var oSel = document.selection.createRange();
|
||||
oSel.moveStart('character', -oField.value.length);
|
||||
iCaretPos = oSel.text.length;
|
||||
} else if (oField.selectionStart || oField.selectionStart == '0') {
|
||||
iCaretPos = oField.selectionStart;
|
||||
}
|
||||
return (iCaretPos);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns boolean indicates whether user has pressed an expected key combination.
|
||||
* @param object keyPressEvent: JavaScript event object, refer
|
||||
* http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
|
||||
* @param object lookupList: expected key combinations, as in:
|
||||
* [13, {which: 188, shiftKey: true}]
|
||||
*/
|
||||
function keyCombinationInList(keyPressEvent, lookupList) {
|
||||
var found = false;
|
||||
$.each(lookupList, function(index, keyCombination) {
|
||||
if (typeof(keyCombination) === 'number' && keyPressEvent.which === keyCombination) {
|
||||
found = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (keyPressEvent.which === keyCombination.which) {
|
||||
var alt = !keyCombination.hasOwnProperty('altKey') || keyPressEvent.altKey === keyCombination.altKey,
|
||||
shift = !keyCombination.hasOwnProperty('shiftKey') || keyPressEvent.shiftKey === keyCombination.shiftKey,
|
||||
ctrl = !keyCombination.hasOwnProperty('ctrlKey') || keyPressEvent.ctrlKey === keyCombination.ctrlKey;
|
||||
if (alt && shift && ctrl) {
|
||||
found = true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize tagsinput behaviour on inputs and selects which have
|
||||
* data-role=tagsinput
|
||||
*/
|
||||
$(function() {
|
||||
$("input[data-role=tagsinput], select[multiple][data-role=tagsinput]").tagsinput();
|
||||
});
|
||||
})(window.jQuery);
|
||||
9
resources/theme/material-dashboard/assets/js/plugins/chartist.min.js
vendored
Normal file
12
resources/theme/material-dashboard/assets/js/plugins/fullcalendar.min.js
vendored
Normal file
6
resources/theme/material-dashboard/assets/js/plugins/jasny-bootstrap.min.js
vendored
Normal file
4183
resources/theme/material-dashboard/assets/js/plugins/jquery-jvectormap.js
vendored
Normal file
345
resources/theme/material-dashboard/assets/js/plugins/jquery.bootstrap-wizard.js
vendored
Normal file
@@ -0,0 +1,345 @@
|
||||
/*!
|
||||
* jQuery twitter bootstrap wizard plugin
|
||||
* Examples and documentation at: http://github.com/VinceG/twitter-bootstrap-wizard
|
||||
* version 1.4.2
|
||||
* Requires jQuery v1.3.2 or later
|
||||
* Supports Bootstrap 2.2.x, 2.3.x, 3.0
|
||||
* Dual licensed under the MIT and GPL licenses:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
* Authors: Vadim Vincent Gabriel (http://vadimg.com), Jason Gill (www.gilluminate.com)
|
||||
*/
|
||||
;
|
||||
(function($) {
|
||||
var bootstrapWizardCreate = function(element, options) {
|
||||
var element = $(element);
|
||||
var obj = this;
|
||||
|
||||
// selector skips any 'li' elements that do not contain a child with a tab data-toggle
|
||||
var baseItemSelector = 'li:has([data-toggle="tab"])';
|
||||
var historyStack = [];
|
||||
|
||||
// Merge options with defaults
|
||||
var $settings = $.extend({}, $.fn.bootstrapWizard.defaults, options);
|
||||
var $activeTab = null;
|
||||
var $navigation = null;
|
||||
|
||||
this.rebindClick = function(selector, fn) {
|
||||
selector.unbind('click', fn).bind('click', fn);
|
||||
}
|
||||
|
||||
this.fixNavigationButtons = function() {
|
||||
// Get the current active tab
|
||||
if (!$activeTab.length) {
|
||||
// Select first one
|
||||
$navigation.find('a:first').tab('show');
|
||||
$activeTab = $navigation.find(baseItemSelector + ':first');
|
||||
}
|
||||
|
||||
// See if we're currently in the first/last then disable the previous and last buttons
|
||||
$($settings.previousSelector, element).toggleClass('disabled', (obj.firstIndex() >= obj.currentIndex()));
|
||||
$($settings.nextSelector, element).toggleClass('disabled', (obj.currentIndex() >= obj.navigationLength()));
|
||||
$($settings.nextSelector, element).toggleClass('hidden', (obj.currentIndex() >= obj.navigationLength() && $($settings.finishSelector, element).length > 0));
|
||||
$($settings.lastSelector, element).toggleClass('hidden', (obj.currentIndex() >= obj.navigationLength() && $($settings.finishSelector, element).length > 0));
|
||||
$($settings.finishSelector, element).toggleClass('hidden', (obj.currentIndex() < obj.navigationLength()));
|
||||
$($settings.backSelector, element).toggleClass('disabled', (historyStack.length == 0));
|
||||
$($settings.backSelector, element).toggleClass('hidden', (obj.currentIndex() >= obj.navigationLength() && $($settings.finishSelector, element).length > 0));
|
||||
|
||||
// We are unbinding and rebinding to ensure single firing and no double-click errors
|
||||
obj.rebindClick($($settings.nextSelector, element), obj.next);
|
||||
obj.rebindClick($($settings.previousSelector, element), obj.previous);
|
||||
obj.rebindClick($($settings.lastSelector, element), obj.last);
|
||||
obj.rebindClick($($settings.firstSelector, element), obj.first);
|
||||
obj.rebindClick($($settings.finishSelector, element), obj.finish);
|
||||
obj.rebindClick($($settings.backSelector, element), obj.back);
|
||||
|
||||
if ($settings.onTabShow && typeof $settings.onTabShow === 'function' && $settings.onTabShow($activeTab, $navigation, obj.currentIndex()) === false) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
this.next = function(e) {
|
||||
// If we clicked the last then dont activate this
|
||||
if (element.hasClass('last')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($settings.onNext && typeof $settings.onNext === 'function' && $settings.onNext($activeTab, $navigation, obj.nextIndex()) === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var formerIndex = obj.currentIndex();
|
||||
var $index = obj.nextIndex();
|
||||
|
||||
// Did we click the last button
|
||||
if ($index > obj.navigationLength()) {} else {
|
||||
historyStack.push(formerIndex);
|
||||
$navigation.find(baseItemSelector + ($settings.withVisible ? ':visible' : '') + ':eq(' + $index + ') a').tab('show');
|
||||
}
|
||||
};
|
||||
|
||||
this.previous = function(e) {
|
||||
// If we clicked the first then dont activate this
|
||||
if (element.hasClass('first')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($settings.onPrevious && typeof $settings.onPrevious === 'function' && $settings.onPrevious($activeTab, $navigation, obj.previousIndex()) === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var formerIndex = obj.currentIndex();
|
||||
var $index = obj.previousIndex();
|
||||
|
||||
if ($index < 0) {} else {
|
||||
historyStack.push(formerIndex);
|
||||
$navigation.find(baseItemSelector + ($settings.withVisible ? ':visible' : '') + ':eq(' + $index + ') a').tab('show');
|
||||
}
|
||||
};
|
||||
|
||||
this.first = function(e) {
|
||||
if ($settings.onFirst && typeof $settings.onFirst === 'function' && $settings.onFirst($activeTab, $navigation, obj.firstIndex()) === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// If the element is disabled then we won't do anything
|
||||
if (element.hasClass('disabled')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
historyStack.push(obj.currentIndex());
|
||||
$navigation.find(baseItemSelector + ':eq(0) a').tab('show');
|
||||
};
|
||||
|
||||
this.last = function(e) {
|
||||
if ($settings.onLast && typeof $settings.onLast === 'function' && $settings.onLast($activeTab, $navigation, obj.lastIndex()) === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// If the element is disabled then we won't do anything
|
||||
if (element.hasClass('disabled')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
historyStack.push(obj.currentIndex());
|
||||
$navigation.find(baseItemSelector + ':eq(' + obj.navigationLength() + ') a').tab('show');
|
||||
};
|
||||
|
||||
this.finish = function(e) {
|
||||
if ($settings.onFinish && typeof $settings.onFinish === 'function') {
|
||||
$settings.onFinish($activeTab, $navigation, obj.lastIndex());
|
||||
}
|
||||
};
|
||||
|
||||
this.back = function() {
|
||||
if (historyStack.length == 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var formerIndex = historyStack.pop();
|
||||
if ($settings.onBack && typeof $settings.onBack === 'function' && $settings.onBack($activeTab, $navigation, formerIndex) === false) {
|
||||
historyStack.push(formerIndex);
|
||||
return false;
|
||||
}
|
||||
|
||||
element.find(baseItemSelector + ':eq(' + formerIndex + ') a').tab('show');
|
||||
};
|
||||
|
||||
this.currentIndex = function() {
|
||||
return $navigation.find(baseItemSelector + ($settings.withVisible ? ':visible' : '')).index($activeTab);
|
||||
};
|
||||
|
||||
this.firstIndex = function() {
|
||||
return 0;
|
||||
};
|
||||
|
||||
this.lastIndex = function() {
|
||||
return obj.navigationLength();
|
||||
};
|
||||
|
||||
this.getIndex = function(e) {
|
||||
return $navigation.find(baseItemSelector + ($settings.withVisible ? ':visible' : '')).index(e);
|
||||
};
|
||||
|
||||
this.nextIndex = function() {
|
||||
var nextIndexCandidate = this.currentIndex();
|
||||
var nextTabCandidate = null;
|
||||
do {
|
||||
nextIndexCandidate++;
|
||||
nextTabCandidate = $navigation.find(baseItemSelector + ($settings.withVisible ? ':visible' : '') + ":eq(" + nextIndexCandidate + ")");
|
||||
} while ((nextTabCandidate) && (nextTabCandidate.hasClass("disabled")));
|
||||
return nextIndexCandidate;
|
||||
};
|
||||
this.previousIndex = function() {
|
||||
var prevIndexCandidate = this.currentIndex();
|
||||
var prevTabCandidate = null;
|
||||
do {
|
||||
prevIndexCandidate--;
|
||||
prevTabCandidate = $navigation.find(baseItemSelector + ($settings.withVisible ? ':visible' : '') + ":eq(" + prevIndexCandidate + ")");
|
||||
} while ((prevTabCandidate) && (prevTabCandidate.hasClass("disabled")));
|
||||
return prevIndexCandidate;
|
||||
};
|
||||
this.navigationLength = function() {
|
||||
return $navigation.find(baseItemSelector + ($settings.withVisible ? ':visible' : '')).length - 1;
|
||||
};
|
||||
this.activeTab = function() {
|
||||
return $activeTab;
|
||||
};
|
||||
this.nextTab = function() {
|
||||
return $navigation.find(baseItemSelector + ':eq(' + (obj.currentIndex() + 1) + ')').length ? $navigation.find(baseItemSelector + ':eq(' + (obj.currentIndex() + 1) + ')') : null;
|
||||
};
|
||||
this.previousTab = function() {
|
||||
if (obj.currentIndex() <= 0) {
|
||||
return null;
|
||||
}
|
||||
return $navigation.find(baseItemSelector + ':eq(' + parseInt(obj.currentIndex() - 1) + ')');
|
||||
};
|
||||
this.show = function(index) {
|
||||
var tabToShow = isNaN(index) ?
|
||||
element.find(baseItemSelector + ' a[href="#' + index + '"]') :
|
||||
element.find(baseItemSelector + ':eq(' + index + ') a');
|
||||
if (tabToShow.length > 0) {
|
||||
historyStack.push(obj.currentIndex());
|
||||
tabToShow.tab('show');
|
||||
}
|
||||
};
|
||||
this.disable = function(index) {
|
||||
$navigation.find(baseItemSelector + ':eq(' + index + ')').addClass('disabled');
|
||||
};
|
||||
this.enable = function(index) {
|
||||
$navigation.find(baseItemSelector + ':eq(' + index + ')').removeClass('disabled');
|
||||
};
|
||||
this.hide = function(index) {
|
||||
$navigation.find(baseItemSelector + ':eq(' + index + ')').hide();
|
||||
};
|
||||
this.display = function(index) {
|
||||
$navigation.find(baseItemSelector + ':eq(' + index + ')').show();
|
||||
};
|
||||
this.remove = function(args) {
|
||||
var $index = args[0];
|
||||
var $removeTabPane = typeof args[1] != 'undefined' ? args[1] : false;
|
||||
var $item = $navigation.find(baseItemSelector + ':eq(' + $index + ')');
|
||||
|
||||
// Remove the tab pane first if needed
|
||||
if ($removeTabPane) {
|
||||
var $href = $item.find('a').attr('href');
|
||||
$($href).remove();
|
||||
}
|
||||
|
||||
// Remove menu item
|
||||
$item.remove();
|
||||
};
|
||||
|
||||
var innerTabClick = function(e) {
|
||||
// Get the index of the clicked tab
|
||||
var $ul = $navigation.find(baseItemSelector);
|
||||
var clickedIndex = $ul.index($(e.currentTarget).parent(baseItemSelector));
|
||||
var $clickedTab = $($ul[clickedIndex]);
|
||||
if ($settings.onTabClick && typeof $settings.onTabClick === 'function' && $settings.onTabClick($activeTab, $navigation, obj.currentIndex(), clickedIndex, $clickedTab) === false) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
var innerTabShown = function(e) {
|
||||
var $element = $(e.target).parent();
|
||||
var nextTab = $navigation.find(baseItemSelector).index($element);
|
||||
|
||||
// If it's disabled then do not change
|
||||
if ($element.hasClass('disabled')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($settings.onTabChange && typeof $settings.onTabChange === 'function' && $settings.onTabChange($activeTab, $navigation, obj.currentIndex(), nextTab) === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$activeTab = $element; // activated tab
|
||||
obj.fixNavigationButtons();
|
||||
};
|
||||
|
||||
this.resetWizard = function() {
|
||||
|
||||
// remove the existing handlers
|
||||
$('a[data-toggle="tab"]', $navigation).off('click', innerTabClick);
|
||||
$('a[data-toggle="tab"]', $navigation).off('show show.bs.tab', innerTabShown);
|
||||
|
||||
// reset elements based on current state of the DOM
|
||||
$navigation = element.find('ul:first', element);
|
||||
$activeTab = $navigation.find(baseItemSelector + '.active', element);
|
||||
|
||||
// re-add handlers
|
||||
$('a[data-toggle="tab"]', $navigation).on('click', innerTabClick);
|
||||
$('a[data-toggle="tab"]', $navigation).on('show show.bs.tab', innerTabShown);
|
||||
|
||||
obj.fixNavigationButtons();
|
||||
};
|
||||
|
||||
$navigation = element.find('ul:first', element);
|
||||
$activeTab = $navigation.find(baseItemSelector + '.active', element);
|
||||
|
||||
if (!$navigation.hasClass($settings.tabClass)) {
|
||||
$navigation.addClass($settings.tabClass);
|
||||
}
|
||||
|
||||
// Load onInit
|
||||
if ($settings.onInit && typeof $settings.onInit === 'function') {
|
||||
$settings.onInit($activeTab, $navigation, 0);
|
||||
}
|
||||
|
||||
// Load onShow
|
||||
if ($settings.onShow && typeof $settings.onShow === 'function') {
|
||||
$settings.onShow($activeTab, $navigation, obj.nextIndex());
|
||||
}
|
||||
|
||||
$('a[data-toggle="tab"]', $navigation).on('click', innerTabClick);
|
||||
|
||||
// attach to both show and show.bs.tab to support Bootstrap versions 2.3.2 and 3.0.0
|
||||
$('a[data-toggle="tab"]', $navigation).on('show show.bs.tab', innerTabShown);
|
||||
};
|
||||
$.fn.bootstrapWizard = function(options) {
|
||||
//expose methods
|
||||
if (typeof options == 'string') {
|
||||
var args = Array.prototype.slice.call(arguments, 1)
|
||||
if (args.length === 1) {
|
||||
args.toString();
|
||||
}
|
||||
return this.data('bootstrapWizard')[options](args);
|
||||
}
|
||||
return this.each(function(index) {
|
||||
var element = $(this);
|
||||
// Return early if this element already has a plugin instance
|
||||
if (element.data('bootstrapWizard')) return;
|
||||
// pass options to plugin constructor
|
||||
var wizard = new bootstrapWizardCreate(element, options);
|
||||
// Store plugin object in this element's data
|
||||
element.data('bootstrapWizard', wizard);
|
||||
// and then trigger initial change
|
||||
wizard.fixNavigationButtons();
|
||||
});
|
||||
};
|
||||
|
||||
// expose options
|
||||
$.fn.bootstrapWizard.defaults = {
|
||||
withVisible: true,
|
||||
tabClass: 'nav nav-pills',
|
||||
nextSelector: '.card-wizard .nav-item.next',
|
||||
previousSelector: '.card-wizard .nav-item.previous',
|
||||
firstSelector: '.card-wizard .nav-item.first',
|
||||
lastSelector: '.card-wizard .nav-item.last',
|
||||
finishSelector: '.card-wizard .nav-item.finish',
|
||||
backSelector: '.card-wizard .nav-item.back',
|
||||
onShow: null,
|
||||
onInit: null,
|
||||
onNext: null,
|
||||
onPrevious: null,
|
||||
onLast: null,
|
||||
onFirst: null,
|
||||
onFinish: null,
|
||||
onBack: null,
|
||||
onTabChange: null,
|
||||
onTabClick: null,
|
||||
onTabShow: null
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
623
resources/theme/material-dashboard/assets/js/plugins/jquery.dataTables.min.js
vendored
Normal file
718
resources/theme/material-dashboard/assets/js/plugins/jquery.tagsinput.js
vendored
Normal file
@@ -0,0 +1,718 @@
|
||||
/*
|
||||
* bootstrap-tagsinput v0.8.0
|
||||
*
|
||||
*/
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
|
||||
var defaultOptions = {
|
||||
tagClass: function(item) {
|
||||
return 'label label-info';
|
||||
},
|
||||
focusClass: 'focus',
|
||||
itemValue: function(item) {
|
||||
return item ? item.toString() : item;
|
||||
},
|
||||
itemText: function(item) {
|
||||
return this.itemValue(item);
|
||||
},
|
||||
itemTitle: function(item) {
|
||||
return null;
|
||||
},
|
||||
freeInput: true,
|
||||
addOnBlur: true,
|
||||
maxTags: undefined,
|
||||
maxChars: undefined,
|
||||
confirmKeys: [13, 44],
|
||||
delimiter: ',',
|
||||
delimiterRegex: null,
|
||||
cancelConfirmKeysOnEmpty: false,
|
||||
onTagExists: function(item, $tag) {
|
||||
$tag.hide().fadeIn();
|
||||
},
|
||||
trimValue: false,
|
||||
allowDuplicates: false,
|
||||
triggerChange: true
|
||||
};
|
||||
|
||||
/**
|
||||
* Constructor function
|
||||
*/
|
||||
function TagsInput(element, options) {
|
||||
this.isInit = true;
|
||||
this.itemsArray = [];
|
||||
|
||||
this.$element = $(element);
|
||||
this.$element.hide();
|
||||
|
||||
this.isSelect = (element.tagName === 'SELECT');
|
||||
this.multiple = (this.isSelect && element.hasAttribute('multiple'));
|
||||
this.objectItems = options && options.itemValue;
|
||||
this.placeholderText = element.hasAttribute('placeholder') ? this.$element.attr('placeholder') : '';
|
||||
this.inputSize = Math.max(1, this.placeholderText.length);
|
||||
|
||||
this.$container = $('<div class="bootstrap-tagsinput"></div>');
|
||||
this.$input = $('<input type="text" placeholder="' + this.placeholderText + '"/>').appendTo(this.$container);
|
||||
|
||||
this.$element.before(this.$container);
|
||||
|
||||
this.build(options);
|
||||
this.isInit = false;
|
||||
}
|
||||
|
||||
TagsInput.prototype = {
|
||||
constructor: TagsInput,
|
||||
|
||||
/**
|
||||
* Adds the given item as a new tag. Pass true to dontPushVal to prevent
|
||||
* updating the elements val()
|
||||
*/
|
||||
add: function(item, dontPushVal, options) {
|
||||
var self = this;
|
||||
|
||||
if (self.options.maxTags && self.itemsArray.length >= self.options.maxTags)
|
||||
return;
|
||||
|
||||
// Ignore falsey values, except false
|
||||
if (item !== false && !item)
|
||||
return;
|
||||
|
||||
// Trim value
|
||||
if (typeof item === "string" && self.options.trimValue) {
|
||||
item = $.trim(item);
|
||||
}
|
||||
|
||||
// Throw an error when trying to add an object while the itemValue option was not set
|
||||
if (typeof item === "object" && !self.objectItems)
|
||||
throw ("Can't add objects when itemValue option is not set");
|
||||
|
||||
// Ignore strings only containg whitespace
|
||||
if (item.toString().match(/^\s*$/))
|
||||
return;
|
||||
|
||||
// If SELECT but not multiple, remove current tag
|
||||
if (self.isSelect && !self.multiple && self.itemsArray.length > 0)
|
||||
self.remove(self.itemsArray[0]);
|
||||
|
||||
if (typeof item === "string" && this.$element[0].tagName === 'INPUT') {
|
||||
var delimiter = (self.options.delimiterRegex) ? self.options.delimiterRegex : self.options.delimiter;
|
||||
var items = item.split(delimiter);
|
||||
if (items.length > 1) {
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
this.add(items[i], true);
|
||||
}
|
||||
|
||||
if (!dontPushVal)
|
||||
self.pushVal(self.options.triggerChange);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var itemValue = self.options.itemValue(item),
|
||||
itemText = self.options.itemText(item),
|
||||
tagClass = self.options.tagClass(item),
|
||||
itemTitle = self.options.itemTitle(item);
|
||||
|
||||
// Ignore items allready added
|
||||
var existing = $.grep(self.itemsArray, function(item) {
|
||||
return self.options.itemValue(item) === itemValue;
|
||||
})[0];
|
||||
if (existing && !self.options.allowDuplicates) {
|
||||
// Invoke onTagExists
|
||||
if (self.options.onTagExists) {
|
||||
var $existingTag = $(".tag", self.$container).filter(function() {
|
||||
return $(this).data("item") === existing;
|
||||
});
|
||||
self.options.onTagExists(item, $existingTag);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// if length greater than limit
|
||||
if (self.items().toString().length + item.length + 1 > self.options.maxInputLength)
|
||||
return;
|
||||
|
||||
// raise beforeItemAdd arg
|
||||
var beforeItemAddEvent = $.Event('beforeItemAdd', {
|
||||
item: item,
|
||||
cancel: false,
|
||||
options: options
|
||||
});
|
||||
self.$element.trigger(beforeItemAddEvent);
|
||||
if (beforeItemAddEvent.cancel)
|
||||
return;
|
||||
|
||||
// register item in internal array and map
|
||||
self.itemsArray.push(item);
|
||||
|
||||
// add a tag element
|
||||
|
||||
var $tag = $('<span class="tag ' + htmlEncode(tagClass) + (itemTitle !== null ? ('" title="' + itemTitle) : '') + '">' + htmlEncode(itemText) + '<span data-role="remove"></span></span>');
|
||||
$tag.data('item', item);
|
||||
self.findInputWrapper().before($tag);
|
||||
$tag.after(' ');
|
||||
|
||||
// Check to see if the tag exists in its raw or uri-encoded form
|
||||
var optionExists = (
|
||||
$('option[value="' + encodeURIComponent(itemValue) + '"]', self.$element).length ||
|
||||
$('option[value="' + htmlEncode(itemValue) + '"]', self.$element).length
|
||||
);
|
||||
|
||||
// add <option /> if item represents a value not present in one of the <select />'s options
|
||||
if (self.isSelect && !optionExists) {
|
||||
var $option = $('<option selected>' + htmlEncode(itemText) + '</option>');
|
||||
$option.data('item', item);
|
||||
$option.attr('value', itemValue);
|
||||
self.$element.append($option);
|
||||
}
|
||||
|
||||
if (!dontPushVal)
|
||||
self.pushVal(self.options.triggerChange);
|
||||
|
||||
// Add class when reached maxTags
|
||||
if (self.options.maxTags === self.itemsArray.length || self.items().toString().length === self.options.maxInputLength)
|
||||
self.$container.addClass('bootstrap-tagsinput-max');
|
||||
|
||||
// If using typeahead, once the tag has been added, clear the typeahead value so it does not stick around in the input.
|
||||
if ($('.typeahead, .twitter-typeahead', self.$container).length) {
|
||||
self.$input.typeahead('val', '');
|
||||
}
|
||||
|
||||
if (this.isInit) {
|
||||
self.$element.trigger($.Event('itemAddedOnInit', {
|
||||
item: item,
|
||||
options: options
|
||||
}));
|
||||
} else {
|
||||
self.$element.trigger($.Event('itemAdded', {
|
||||
item: item,
|
||||
options: options
|
||||
}));
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes the given item. Pass true to dontPushVal to prevent updating the
|
||||
* elements val()
|
||||
*/
|
||||
remove: function(item, dontPushVal, options) {
|
||||
var self = this;
|
||||
|
||||
if (self.objectItems) {
|
||||
if (typeof item === "object")
|
||||
item = $.grep(self.itemsArray, function(other) {
|
||||
return self.options.itemValue(other) == self.options.itemValue(item);
|
||||
});
|
||||
else
|
||||
item = $.grep(self.itemsArray, function(other) {
|
||||
return self.options.itemValue(other) == item;
|
||||
});
|
||||
|
||||
item = item[item.length - 1];
|
||||
}
|
||||
|
||||
if (item) {
|
||||
var beforeItemRemoveEvent = $.Event('beforeItemRemove', {
|
||||
item: item,
|
||||
cancel: false,
|
||||
options: options
|
||||
});
|
||||
self.$element.trigger(beforeItemRemoveEvent);
|
||||
if (beforeItemRemoveEvent.cancel)
|
||||
return;
|
||||
|
||||
$('.tag', self.$container).filter(function() {
|
||||
return $(this).data('item') === item;
|
||||
}).remove();
|
||||
$('option', self.$element).filter(function() {
|
||||
return $(this).data('item') === item;
|
||||
}).remove();
|
||||
if ($.inArray(item, self.itemsArray) !== -1)
|
||||
self.itemsArray.splice($.inArray(item, self.itemsArray), 1);
|
||||
}
|
||||
|
||||
if (!dontPushVal)
|
||||
self.pushVal(self.options.triggerChange);
|
||||
|
||||
// Remove class when reached maxTags
|
||||
if (self.options.maxTags > self.itemsArray.length)
|
||||
self.$container.removeClass('bootstrap-tagsinput-max');
|
||||
|
||||
self.$element.trigger($.Event('itemRemoved', {
|
||||
item: item,
|
||||
options: options
|
||||
}));
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes all items
|
||||
*/
|
||||
removeAll: function() {
|
||||
var self = this;
|
||||
|
||||
$('.tag', self.$container).remove();
|
||||
$('option', self.$element).remove();
|
||||
|
||||
while (self.itemsArray.length > 0)
|
||||
self.itemsArray.pop();
|
||||
|
||||
self.pushVal(self.options.triggerChange);
|
||||
},
|
||||
|
||||
/**
|
||||
* Refreshes the tags so they match the text/value of their corresponding
|
||||
* item.
|
||||
*/
|
||||
refresh: function() {
|
||||
var self = this;
|
||||
$('.tag', self.$container).each(function() {
|
||||
var $tag = $(this),
|
||||
item = $tag.data('item'),
|
||||
itemValue = self.options.itemValue(item),
|
||||
itemText = self.options.itemText(item),
|
||||
tagClass = self.options.tagClass(item);
|
||||
|
||||
// Update tag's class and inner text
|
||||
$tag.attr('class', null);
|
||||
$tag.addClass('tag ' + htmlEncode(tagClass));
|
||||
$tag.contents().filter(function() {
|
||||
return this.nodeType == 3;
|
||||
})[0].nodeValue = htmlEncode(itemText);
|
||||
|
||||
if (self.isSelect) {
|
||||
var option = $('option', self.$element).filter(function() {
|
||||
return $(this).data('item') === item;
|
||||
});
|
||||
option.attr('value', itemValue);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the items added as tags
|
||||
*/
|
||||
items: function() {
|
||||
return this.itemsArray;
|
||||
},
|
||||
|
||||
/**
|
||||
* Assembly value by retrieving the value of each item, and set it on the
|
||||
* element.
|
||||
*/
|
||||
pushVal: function() {
|
||||
var self = this,
|
||||
val = $.map(self.items(), function(item) {
|
||||
return self.options.itemValue(item).toString();
|
||||
});
|
||||
|
||||
self.$element.val(val, true);
|
||||
|
||||
if (self.options.triggerChange)
|
||||
self.$element.trigger('change');
|
||||
},
|
||||
|
||||
/**
|
||||
* Initializes the tags input behaviour on the element
|
||||
*/
|
||||
build: function(options) {
|
||||
var self = this;
|
||||
|
||||
self.options = $.extend({}, defaultOptions, options);
|
||||
// When itemValue is set, freeInput should always be false
|
||||
if (self.objectItems)
|
||||
self.options.freeInput = false;
|
||||
|
||||
makeOptionItemFunction(self.options, 'itemValue');
|
||||
makeOptionItemFunction(self.options, 'itemText');
|
||||
makeOptionFunction(self.options, 'tagClass');
|
||||
|
||||
// Typeahead Bootstrap version 2.3.2
|
||||
if (self.options.typeahead) {
|
||||
var typeahead = self.options.typeahead || {};
|
||||
|
||||
makeOptionFunction(typeahead, 'source');
|
||||
|
||||
self.$input.typeahead($.extend({}, typeahead, {
|
||||
source: function(query, process) {
|
||||
function processItems(items) {
|
||||
var texts = [];
|
||||
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
var text = self.options.itemText(items[i]);
|
||||
map[text] = items[i];
|
||||
texts.push(text);
|
||||
}
|
||||
process(texts);
|
||||
}
|
||||
|
||||
this.map = {};
|
||||
var map = this.map,
|
||||
data = typeahead.source(query);
|
||||
|
||||
if ($.isFunction(data.success)) {
|
||||
// support for Angular callbacks
|
||||
data.success(processItems);
|
||||
} else if ($.isFunction(data.then)) {
|
||||
// support for Angular promises
|
||||
data.then(processItems);
|
||||
} else {
|
||||
// support for functions and jquery promises
|
||||
$.when(data)
|
||||
.then(processItems);
|
||||
}
|
||||
},
|
||||
updater: function(text) {
|
||||
self.add(this.map[text]);
|
||||
return this.map[text];
|
||||
},
|
||||
matcher: function(text) {
|
||||
return (text.toLowerCase().indexOf(this.query.trim().toLowerCase()) !== -1);
|
||||
},
|
||||
sorter: function(texts) {
|
||||
return texts.sort();
|
||||
},
|
||||
highlighter: function(text) {
|
||||
var regex = new RegExp('(' + this.query + ')', 'gi');
|
||||
return text.replace(regex, "<strong>$1</strong>");
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
// typeahead.js
|
||||
if (self.options.typeaheadjs) {
|
||||
|
||||
// Determine if main configurations were passed or simply a dataset
|
||||
var typeaheadjs = self.options.typeaheadjs;
|
||||
if (!$.isArray(typeaheadjs)) {
|
||||
typeaheadjs = [null, typeaheadjs];
|
||||
}
|
||||
var valueKey = typeaheadjs[1].valueKey; // We should test typeaheadjs.size >= 1
|
||||
var f_datum = valueKey ? function(datum) {
|
||||
return datum[valueKey];
|
||||
} :
|
||||
function(datum) {
|
||||
return datum;
|
||||
}
|
||||
$.fn.typeahead.apply(self.$input, typeaheadjs).on('typeahead:selected', $.proxy(function(obj, datum) {
|
||||
self.add(f_datum(datum));
|
||||
self.$input.typeahead('val', '');
|
||||
}, self));
|
||||
|
||||
}
|
||||
|
||||
self.$container.on('click', $.proxy(function(event) {
|
||||
if (!self.$element.attr('disabled')) {
|
||||
self.$input.removeAttr('disabled');
|
||||
}
|
||||
self.$input.focus();
|
||||
}, self));
|
||||
|
||||
if (self.options.addOnBlur && self.options.freeInput) {
|
||||
self.$input.on('focusout', $.proxy(function(event) {
|
||||
// HACK: only process on focusout when no typeahead opened, to
|
||||
// avoid adding the typeahead text as tag
|
||||
if ($('.typeahead, .twitter-typeahead', self.$container).length === 0) {
|
||||
self.add(self.$input.val());
|
||||
self.$input.val('');
|
||||
}
|
||||
}, self));
|
||||
}
|
||||
|
||||
// Toggle the 'focus' css class on the container when it has focus
|
||||
self.$container.on({
|
||||
focusin: function() {
|
||||
self.$container.addClass(self.options.focusClass);
|
||||
},
|
||||
focusout: function() {
|
||||
self.$container.removeClass(self.options.focusClass);
|
||||
},
|
||||
});
|
||||
|
||||
self.$container.on('keydown', 'input', $.proxy(function(event) {
|
||||
var $input = $(event.target),
|
||||
$inputWrapper = self.findInputWrapper();
|
||||
|
||||
if (self.$element.attr('disabled')) {
|
||||
self.$input.attr('disabled', 'disabled');
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.which) {
|
||||
// BACKSPACE
|
||||
case 8:
|
||||
if (doGetCaretPosition($input[0]) === 0) {
|
||||
var prev = $inputWrapper.prev();
|
||||
if (prev.length) {
|
||||
self.remove(prev.data('item'));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
// DELETE
|
||||
case 46:
|
||||
if (doGetCaretPosition($input[0]) === 0) {
|
||||
var next = $inputWrapper.next();
|
||||
if (next.length) {
|
||||
self.remove(next.data('item'));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
// LEFT ARROW
|
||||
case 37:
|
||||
// Try to move the input before the previous tag
|
||||
var $prevTag = $inputWrapper.prev();
|
||||
if ($input.val().length === 0 && $prevTag[0]) {
|
||||
$prevTag.before($inputWrapper);
|
||||
$input.focus();
|
||||
}
|
||||
break;
|
||||
// RIGHT ARROW
|
||||
case 39:
|
||||
// Try to move the input after the next tag
|
||||
var $nextTag = $inputWrapper.next();
|
||||
if ($input.val().length === 0 && $nextTag[0]) {
|
||||
$nextTag.after($inputWrapper);
|
||||
$input.focus();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// ignore
|
||||
}
|
||||
|
||||
// Reset internal input's size
|
||||
var textLength = $input.val().length,
|
||||
wordSpace = Math.ceil(textLength / 5),
|
||||
size = textLength + wordSpace + 1;
|
||||
$input.attr('size', Math.max(this.inputSize, $input.val().length));
|
||||
}, self));
|
||||
|
||||
self.$container.on('keypress', 'input', $.proxy(function(event) {
|
||||
var $input = $(event.target);
|
||||
|
||||
if (self.$element.attr('disabled')) {
|
||||
self.$input.attr('disabled', 'disabled');
|
||||
return;
|
||||
}
|
||||
|
||||
var text = $input.val(),
|
||||
maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars;
|
||||
if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) {
|
||||
// Only attempt to add a tag if there is data in the field
|
||||
if (text.length !== 0) {
|
||||
self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text);
|
||||
$input.val('');
|
||||
}
|
||||
|
||||
// If the field is empty, let the event triggered fire as usual
|
||||
if (self.options.cancelConfirmKeysOnEmpty === false) {
|
||||
event.preventDefault();
|
||||
}
|
||||
}
|
||||
|
||||
// Reset internal input's size
|
||||
var textLength = $input.val().length,
|
||||
wordSpace = Math.ceil(textLength / 5),
|
||||
size = textLength + wordSpace + 1;
|
||||
$input.attr('size', Math.max(this.inputSize, $input.val().length));
|
||||
}, self));
|
||||
|
||||
// Remove icon clicked
|
||||
self.$container.on('click', '[data-role=remove]', $.proxy(function(event) {
|
||||
if (self.$element.attr('disabled')) {
|
||||
return;
|
||||
}
|
||||
self.remove($(event.target).closest('.tag').data('item'));
|
||||
}, self));
|
||||
|
||||
// Only add existing value as tags when using strings as tags
|
||||
if (self.options.itemValue === defaultOptions.itemValue) {
|
||||
if (self.$element[0].tagName === 'INPUT') {
|
||||
self.add(self.$element.val());
|
||||
} else {
|
||||
$('option', self.$element).each(function() {
|
||||
self.add($(this).attr('value'), true);
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes all tagsinput behaviour and unregsiter all event handlers
|
||||
*/
|
||||
destroy: function() {
|
||||
var self = this;
|
||||
|
||||
// Unbind events
|
||||
self.$container.off('keypress', 'input');
|
||||
self.$container.off('click', '[role=remove]');
|
||||
|
||||
self.$container.remove();
|
||||
self.$element.removeData('tagsinput');
|
||||
self.$element.show();
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets focus on the tagsinput
|
||||
*/
|
||||
focus: function() {
|
||||
this.$input.focus();
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the internal input element
|
||||
*/
|
||||
input: function() {
|
||||
return this.$input;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the element which is wrapped around the internal input. This
|
||||
* is normally the $container, but typeahead.js moves the $input element.
|
||||
*/
|
||||
findInputWrapper: function() {
|
||||
var elt = this.$input[0],
|
||||
container = this.$container[0];
|
||||
while (elt && elt.parentNode !== container)
|
||||
elt = elt.parentNode;
|
||||
|
||||
return $(elt);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Register JQuery plugin
|
||||
*/
|
||||
$.fn.tagsinput = function(arg1, arg2, arg3) {
|
||||
var results = [];
|
||||
|
||||
this.each(function() {
|
||||
var tagsinput = $(this).data('tagsinput');
|
||||
// Initialize a new tags input
|
||||
if (!tagsinput) {
|
||||
tagsinput = new TagsInput(this, arg1);
|
||||
$(this).data('tagsinput', tagsinput);
|
||||
results.push(tagsinput);
|
||||
|
||||
if (this.tagName === 'SELECT') {
|
||||
$('option', $(this)).attr('selected', 'selected');
|
||||
}
|
||||
|
||||
// Init tags from $(this).val()
|
||||
$(this).val($(this).val());
|
||||
} else if (!arg1 && !arg2) {
|
||||
// tagsinput already exists
|
||||
// no function, trying to init
|
||||
results.push(tagsinput);
|
||||
} else if (tagsinput[arg1] !== undefined) {
|
||||
// Invoke function on existing tags input
|
||||
if (tagsinput[arg1].length === 3 && arg3 !== undefined) {
|
||||
var retVal = tagsinput[arg1](arg2, null, arg3);
|
||||
} else {
|
||||
var retVal = tagsinput[arg1](arg2);
|
||||
}
|
||||
if (retVal !== undefined)
|
||||
results.push(retVal);
|
||||
}
|
||||
});
|
||||
|
||||
if (typeof arg1 == 'string') {
|
||||
// Return the results from the invoked function calls
|
||||
return results.length > 1 ? results : results[0];
|
||||
} else {
|
||||
return results;
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.tagsinput.Constructor = TagsInput;
|
||||
|
||||
/**
|
||||
* Most options support both a string or number as well as a function as
|
||||
* option value. This function makes sure that the option with the given
|
||||
* key in the given options is wrapped in a function
|
||||
*/
|
||||
function makeOptionItemFunction(options, key) {
|
||||
if (typeof options[key] !== 'function') {
|
||||
var propertyName = options[key];
|
||||
options[key] = function(item) {
|
||||
return item[propertyName];
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function makeOptionFunction(options, key) {
|
||||
if (typeof options[key] !== 'function') {
|
||||
var value = options[key];
|
||||
options[key] = function() {
|
||||
return value;
|
||||
};
|
||||
}
|
||||
}
|
||||
/**
|
||||
* HtmlEncodes the given value
|
||||
*/
|
||||
var htmlEncodeContainer = $('<div />');
|
||||
|
||||
function htmlEncode(value) {
|
||||
if (value) {
|
||||
return htmlEncodeContainer.text(value).html();
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the position of the caret in the given input field
|
||||
* http://flightschool.acylt.com/devnotes/caret-position-woes/
|
||||
*/
|
||||
function doGetCaretPosition(oField) {
|
||||
var iCaretPos = 0;
|
||||
if (document.selection) {
|
||||
oField.focus();
|
||||
var oSel = document.selection.createRange();
|
||||
oSel.moveStart('character', -oField.value.length);
|
||||
iCaretPos = oSel.text.length;
|
||||
} else if (oField.selectionStart || oField.selectionStart == '0') {
|
||||
iCaretPos = oField.selectionStart;
|
||||
}
|
||||
return (iCaretPos);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns boolean indicates whether user has pressed an expected key combination.
|
||||
* @param object keyPressEvent: JavaScript event object, refer
|
||||
* http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
|
||||
* @param object lookupList: expected key combinations, as in:
|
||||
* [13, {which: 188, shiftKey: true}]
|
||||
*/
|
||||
function keyCombinationInList(keyPressEvent, lookupList) {
|
||||
var found = false;
|
||||
$.each(lookupList, function(index, keyCombination) {
|
||||
if (typeof(keyCombination) === 'number' && keyPressEvent.which === keyCombination) {
|
||||
found = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (keyPressEvent.which === keyCombination.which) {
|
||||
var alt = !keyCombination.hasOwnProperty('altKey') || keyPressEvent.altKey === keyCombination.altKey,
|
||||
shift = !keyCombination.hasOwnProperty('shiftKey') || keyPressEvent.shiftKey === keyCombination.shiftKey,
|
||||
ctrl = !keyCombination.hasOwnProperty('ctrlKey') || keyPressEvent.ctrlKey === keyCombination.ctrlKey;
|
||||
if (alt && shift && ctrl) {
|
||||
found = true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize tagsinput behaviour on inputs and selects which have
|
||||
* data-role=tagsinput
|
||||
*/
|
||||
$(function() {
|
||||
$("input[data-role=tagsinput], select[multiple][data-role=tagsinput]").tagsinput();
|
||||
});
|
||||
})(window.jQuery);
|
||||
4
resources/theme/material-dashboard/assets/js/plugins/jquery.validate.min.js
vendored
Normal file
492
resources/theme/material-dashboard/assets/js/plugins/moment.min.js
vendored
Normal file
@@ -0,0 +1,492 @@
|
||||
//! moment.js
|
||||
//! version : 2.14.1
|
||||
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
|
||||
//! license : MIT
|
||||
//! momentjs.com
|
||||
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return md.apply(null,arguments)}
|
||||
// This is done to register the method called with moment()
|
||||
// without creating circular dependencies.
|
||||
function b(a){md=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){return"[object Object]"===Object.prototype.toString.call(a)}function e(a){var b;for(b in a)
|
||||
// even if its not own property I'd still call it non-empty
|
||||
return!1;return!0}function f(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function g(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function h(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function i(a,b){for(var c in b)h(b,c)&&(a[c]=b[c]);return h(b,"toString")&&(a.toString=b.toString),h(b,"valueOf")&&(a.valueOf=b.valueOf),a}function j(a,b,c,d){return qb(a,b,c,d,!0).utc()}function k(){
|
||||
// We need to deep clone this object.
|
||||
return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function l(a){return null==a._pf&&(a._pf=k()),a._pf}function m(a){if(null==a._isValid){var b=l(a),c=nd.call(b.parsedDateParts,function(a){return null!=a});a._isValid=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.invalidWeekday&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated&&(!b.meridiem||b.meridiem&&c),a._strict&&(a._isValid=a._isValid&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour)}return a._isValid}function n(a){var b=j(NaN);return null!=a?i(l(b),a):l(b).userInvalidated=!0,b}function o(a){return void 0===a}function p(a,b){var c,d,e;if(o(b._isAMomentObject)||(a._isAMomentObject=b._isAMomentObject),o(b._i)||(a._i=b._i),o(b._f)||(a._f=b._f),o(b._l)||(a._l=b._l),o(b._strict)||(a._strict=b._strict),o(b._tzm)||(a._tzm=b._tzm),o(b._isUTC)||(a._isUTC=b._isUTC),o(b._offset)||(a._offset=b._offset),o(b._pf)||(a._pf=l(b)),o(b._locale)||(a._locale=b._locale),od.length>0)for(c in od)d=od[c],e=b[d],o(e)||(a[d]=e);return a}
|
||||
// Moment prototype object
|
||||
function q(b){p(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),pd===!1&&(pd=!0,a.updateOffset(this),pd=!1)}function r(a){return a instanceof q||null!=a&&null!=a._isAMomentObject}function s(a){return 0>a?Math.ceil(a)||0:Math.floor(a)}function t(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=s(b)),c}
|
||||
// compare two arrays, return the number of differences
|
||||
function u(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&t(a[d])!==t(b[d]))&&g++;return g+f}function v(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function w(b,c){var d=!0;return i(function(){return null!=a.deprecationHandler&&a.deprecationHandler(null,b),d&&(v(b+"\nArguments: "+Array.prototype.slice.call(arguments).join(", ")+"\n"+(new Error).stack),d=!1),c.apply(this,arguments)},c)}function x(b,c){null!=a.deprecationHandler&&a.deprecationHandler(b,c),qd[b]||(v(c),qd[b]=!0)}function y(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}function z(a){var b,c;for(c in a)b=a[c],y(b)?this[c]=b:this["_"+c]=b;this._config=a,
|
||||
// Lenient ordinal parsing accepts just a number in addition to
|
||||
// number + (possibly) stuff coming from _ordinalParseLenient.
|
||||
this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function A(a,b){var c,e=i({},a);for(c in b)h(b,c)&&(d(a[c])&&d(b[c])?(e[c]={},i(e[c],a[c]),i(e[c],b[c])):null!=b[c]?e[c]=b[c]:delete e[c]);for(c in a)h(a,c)&&!h(b,c)&&d(a[c])&&(
|
||||
// make sure changes to properties don't modify parent config
|
||||
e[c]=i({},e[c]));return e}function B(a){null!=a&&this.set(a)}function C(a,b,c){var d=this._calendar[a]||this._calendar.sameElse;return y(d)?d.call(b,c):d}function D(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function E(){return this._invalidDate}function F(a){return this._ordinal.replace("%d",a)}function G(a,b,c,d){var e=this._relativeTime[c];return y(e)?e(a,b,c,d):e.replace(/%d/i,a)}function H(a,b){var c=this._relativeTime[a>0?"future":"past"];return y(c)?c(b):c.replace(/%s/i,b)}function I(a,b){var c=a.toLowerCase();zd[c]=zd[c+"s"]=zd[b]=a}function J(a){return"string"==typeof a?zd[a]||zd[a.toLowerCase()]:void 0}function K(a){var b,c,d={};for(c in a)h(a,c)&&(b=J(c),b&&(d[b]=a[c]));return d}function L(a,b){Ad[a]=b}function M(a){var b=[];for(var c in a)b.push({unit:c,priority:Ad[c]});return b.sort(function(a,b){return a.priority-b.priority}),b}function N(b,c){return function(d){return null!=d?(P(this,b,d),a.updateOffset(this,c),this):O(this,b)}}function O(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function P(a,b,c){a.isValid()&&a._d["set"+(a._isUTC?"UTC":"")+b](c)}
|
||||
// MOMENTS
|
||||
function Q(a){return a=J(a),y(this[a])?this[a]():this}function R(a,b){if("object"==typeof a){a=K(a);for(var c=M(a),d=0;d<c.length;d++)this[c[d].unit](a[c[d].unit])}else if(a=J(a),y(this[a]))return this[a](b);return this}function S(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}
|
||||
// token: 'M'
|
||||
// padded: ['MM', 2]
|
||||
// ordinal: 'Mo'
|
||||
// callback: function () { this.month() + 1 }
|
||||
function T(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Ed[a]=e),b&&(Ed[b[0]]=function(){return S(e.apply(this,arguments),b[1],b[2])}),c&&(Ed[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function U(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function V(a){var b,c,d=a.match(Bd);for(b=0,c=d.length;c>b;b++)Ed[d[b]]?d[b]=Ed[d[b]]:d[b]=U(d[b]);return function(b){var e,f="";for(e=0;c>e;e++)f+=d[e]instanceof Function?d[e].call(b,a):d[e];return f}}
|
||||
// format date using native date object
|
||||
function W(a,b){return a.isValid()?(b=X(b,a.localeData()),Dd[b]=Dd[b]||V(b),Dd[b](a)):a.localeData().invalidDate()}function X(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Cd.lastIndex=0;d>=0&&Cd.test(a);)a=a.replace(Cd,c),Cd.lastIndex=0,d-=1;return a}function Y(a,b,c){Wd[a]=y(b)?b:function(a,d){return a&&c?c:b}}function Z(a,b){return h(Wd,a)?Wd[a](b._strict,b._locale):new RegExp($(a))}
|
||||
// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
|
||||
function $(a){return _(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function _(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function aa(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=t(a)}),c=0;c<a.length;c++)Xd[a[c]]=d}function ba(a,b){aa(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function ca(a,b,c){null!=b&&h(Xd,a)&&Xd[a](b,c._a,c,a)}function da(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function ea(a,b){return c(this._months)?this._months[a.month()]:this._months[(this._months.isFormat||fe).test(b)?"format":"standalone"][a.month()]}function fa(a,b){return c(this._monthsShort)?this._monthsShort[a.month()]:this._monthsShort[fe.test(b)?"format":"standalone"][a.month()]}function ga(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._monthsParse)for(
|
||||
// this is not used
|
||||
this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],d=0;12>d;++d)f=j([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,"").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,"").toLocaleLowerCase();return c?"MMM"===b?(e=sd.call(this._shortMonthsParse,g),-1!==e?e:null):(e=sd.call(this._longMonthsParse,g),-1!==e?e:null):"MMM"===b?(e=sd.call(this._shortMonthsParse,g),-1!==e?e:(e=sd.call(this._longMonthsParse,g),-1!==e?e:null)):(e=sd.call(this._longMonthsParse,g),-1!==e?e:(e=sd.call(this._shortMonthsParse,g),-1!==e?e:null))}function ha(a,b,c){var d,e,f;if(this._monthsParseExact)return ga.call(this,a,b,c);
|
||||
// TODO: add sorting
|
||||
// Sorting makes sure if one month (or abbr) is a prefix of another
|
||||
// see sorting in computeMonthsParse
|
||||
for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){
|
||||
// test the regex
|
||||
if(e=j([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}
|
||||
// MOMENTS
|
||||
function ia(a,b){var c;if(!a.isValid())
|
||||
// No op
|
||||
return a;if("string"==typeof b)if(/^\d+$/.test(b))b=t(b);else
|
||||
// TODO: Another silent failure?
|
||||
if(b=a.localeData().monthsParse(b),"number"!=typeof b)return a;return c=Math.min(a.date(),da(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a}function ja(b){return null!=b?(ia(this,b),a.updateOffset(this,!0),this):O(this,"Month")}function ka(){return da(this.year(),this.month())}function la(a){return this._monthsParseExact?(h(this,"_monthsRegex")||na.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,"_monthsShortRegex")||(this._monthsShortRegex=ie),this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex)}function ma(a){return this._monthsParseExact?(h(this,"_monthsRegex")||na.call(this),a?this._monthsStrictRegex:this._monthsRegex):(h(this,"_monthsRegex")||(this._monthsRegex=je),this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex)}function na(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;12>b;b++)c=j([2e3,b]),d.push(this.monthsShort(c,"")),e.push(this.months(c,"")),f.push(this.months(c,"")),f.push(this.monthsShort(c,""));for(
|
||||
// Sorting makes sure if one month (or abbr) is a prefix of another it
|
||||
// will match the longer piece.
|
||||
d.sort(a),e.sort(a),f.sort(a),b=0;12>b;b++)d[b]=_(d[b]),e[b]=_(e[b]);for(b=0;24>b;b++)f[b]=_(f[b]);this._monthsRegex=new RegExp("^("+f.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+e.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+d.join("|")+")","i")}
|
||||
// HELPERS
|
||||
function oa(a){return pa(a)?366:365}function pa(a){return a%4===0&&a%100!==0||a%400===0}function qa(){return pa(this.year())}function ra(a,b,c,d,e,f,g){
|
||||
//can't just apply() to create a date:
|
||||
//http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
|
||||
var h=new Date(a,b,c,d,e,f,g);
|
||||
//the date constructor remaps years 0-99 to 1900-1999
|
||||
return 100>a&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function sa(a){var b=new Date(Date.UTC.apply(null,arguments));
|
||||
//the Date.UTC function remaps years 0-99 to 1900-1999
|
||||
return 100>a&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}
|
||||
// start-of-first-week - start-of-year
|
||||
function ta(a,b,c){var// first-week day -- which january is always in the first week (4 for iso, 1 for other)
|
||||
d=7+b-c,
|
||||
// first-week day local weekday -- which local weekday is fwd
|
||||
e=(7+sa(a,0,d).getUTCDay()-b)%7;return-e+d-1}
|
||||
//http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
|
||||
function ua(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ta(a,d,e),j=1+7*(b-1)+h+i;return 0>=j?(f=a-1,g=oa(f)+j):j>oa(a)?(f=a+1,g=j-oa(a)):(f=a,g=j),{year:f,dayOfYear:g}}function va(a,b,c){var d,e,f=ta(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return 1>g?(e=a.year()-1,d=g+wa(e,b,c)):g>wa(a.year(),b,c)?(d=g-wa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function wa(a,b,c){var d=ta(a,b,c),e=ta(a+1,b,c);return(oa(a)-d+e)/7}
|
||||
// HELPERS
|
||||
// LOCALES
|
||||
function xa(a){return va(a,this._week.dow,this._week.doy).week}function ya(){return this._week.dow}function za(){return this._week.doy}
|
||||
// MOMENTS
|
||||
function Aa(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function Ba(a){var b=va(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}
|
||||
// HELPERS
|
||||
function Ca(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function Da(a,b){return"string"==typeof a?b.weekdaysParse(a)%7||7:isNaN(a)?null:a}function Ea(a,b){return c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]}function Fa(a){return this._weekdaysShort[a.day()]}function Ga(a){return this._weekdaysMin[a.day()]}function Ha(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;7>d;++d)f=j([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=sd.call(this._weekdaysParse,g),-1!==e?e:null):"ddd"===b?(e=sd.call(this._shortWeekdaysParse,g),-1!==e?e:null):(e=sd.call(this._minWeekdaysParse,g),-1!==e?e:null):"dddd"===b?(e=sd.call(this._weekdaysParse,g),-1!==e?e:(e=sd.call(this._shortWeekdaysParse,g),-1!==e?e:(e=sd.call(this._minWeekdaysParse,g),-1!==e?e:null))):"ddd"===b?(e=sd.call(this._shortWeekdaysParse,g),-1!==e?e:(e=sd.call(this._weekdaysParse,g),-1!==e?e:(e=sd.call(this._minWeekdaysParse,g),-1!==e?e:null))):(e=sd.call(this._minWeekdaysParse,g),-1!==e?e:(e=sd.call(this._weekdaysParse,g),-1!==e?e:(e=sd.call(this._shortWeekdaysParse,g),-1!==e?e:null)))}function Ia(a,b,c){var d,e,f;if(this._weekdaysParseExact)return Ha.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;7>d;d++){
|
||||
// test the regex
|
||||
if(e=j([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}
|
||||
// MOMENTS
|
||||
function Ja(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Ca(a,this.localeData()),this.add(a-b,"d")):b}function Ka(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function La(a){if(!this.isValid())return null!=a?this:NaN;
|
||||
// behaves the same as moment#day except
|
||||
// as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
|
||||
// as a setter, sunday should belong to the previous week.
|
||||
if(null!=a){var b=Da(a,this.localeData());return this.day(this.day()%7?b:b-7)}return this.day()||7}function Ma(a){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Pa.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=pe),this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex)}function Na(a){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Pa.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=qe),this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Oa(a){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Pa.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=re),this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Pa(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],h=[],i=[],k=[];for(b=0;7>b;b++)c=j([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),h.push(e),i.push(f),k.push(d),k.push(e),k.push(f);for(
|
||||
// Sorting makes sure if one weekday (or abbr) is a prefix of another it
|
||||
// will match the longer piece.
|
||||
g.sort(a),h.sort(a),i.sort(a),k.sort(a),b=0;7>b;b++)h[b]=_(h[b]),i[b]=_(i[b]),k[b]=_(k[b]);this._weekdaysRegex=new RegExp("^("+k.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")}
|
||||
// FORMATTING
|
||||
function Qa(){return this.hours()%12||12}function Ra(){return this.hours()||24}function Sa(a,b){T(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}
|
||||
// PARSING
|
||||
function Ta(a,b){return b._meridiemParse}
|
||||
// LOCALES
|
||||
function Ua(a){
|
||||
// IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
|
||||
// Using charAt should be more compatible.
|
||||
return"p"===(a+"").toLowerCase().charAt(0)}function Va(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Wa(a){return a?a.toLowerCase().replace("_","-"):a}
|
||||
// pick the locale from the array
|
||||
// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
|
||||
// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
|
||||
function Xa(a){for(var b,c,d,e,f=0;f<a.length;){for(e=Wa(a[f]).split("-"),b=e.length,c=Wa(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=Ya(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&u(e,c,!0)>=b-1)
|
||||
//the next array item is better than a shallower substring of this one
|
||||
break;b--}f++}return null}function Ya(a){var b=null;
|
||||
// TODO: Find a better way to register and load all the locales in Node
|
||||
if(!we[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=se._abbr,require("./locale/"+a),
|
||||
// because defineLocale currently also sets the global locale, we
|
||||
// want to undo that for lazy loaded locales
|
||||
Za(b)}catch(c){}return we[a]}
|
||||
// This function will load locale and then set the global locale. If
|
||||
// no arguments are passed in, it will simply return the current global
|
||||
// locale key.
|
||||
function Za(a,b){var c;
|
||||
// moment.duration._locale = moment._locale = data;
|
||||
return a&&(c=o(b)?ab(a):$a(a,b),c&&(se=c)),se._abbr}function $a(a,b){if(null!==b){var c=ve;
|
||||
// treat as if there is no base config
|
||||
// backwards compat for now: also set the locale
|
||||
return b.abbr=a,null!=we[a]?(x("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),c=we[a]._config):null!=b.parentLocale&&(null!=we[b.parentLocale]?c=we[b.parentLocale]._config:x("parentLocaleUndefined","specified parentLocale is not defined yet. See http://momentjs.com/guides/#/warnings/parent-locale/")),we[a]=new B(A(c,b)),Za(a),we[a]}
|
||||
// useful for testing
|
||||
return delete we[a],null}function _a(a,b){if(null!=b){var c,d=ve;
|
||||
// MERGE
|
||||
null!=we[a]&&(d=we[a]._config),b=A(d,b),c=new B(b),c.parentLocale=we[a],we[a]=c,
|
||||
// backwards compat for now: also set the locale
|
||||
Za(a)}else
|
||||
// pass null for config to unupdate, useful for tests
|
||||
null!=we[a]&&(null!=we[a].parentLocale?we[a]=we[a].parentLocale:null!=we[a]&&delete we[a]);return we[a]}
|
||||
// returns locale data
|
||||
function ab(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return se;if(!c(a)){if(b=Ya(a))return b;a=[a]}return Xa(a)}function bb(){return rd(we)}function cb(a){var b,c=a._a;return c&&-2===l(a).overflow&&(b=c[Zd]<0||c[Zd]>11?Zd:c[$d]<1||c[$d]>da(c[Yd],c[Zd])?$d:c[_d]<0||c[_d]>24||24===c[_d]&&(0!==c[ae]||0!==c[be]||0!==c[ce])?_d:c[ae]<0||c[ae]>59?ae:c[be]<0||c[be]>59?be:c[ce]<0||c[ce]>999?ce:-1,l(a)._overflowDayOfYear&&(Yd>b||b>$d)&&(b=$d),l(a)._overflowWeeks&&-1===b&&(b=de),l(a)._overflowWeekday&&-1===b&&(b=ee),l(a).overflow=b),a}
|
||||
// date from iso format
|
||||
function db(a){var b,c,d,e,f,g,h=a._i,i=xe.exec(h)||ye.exec(h);if(i){for(l(a).iso=!0,b=0,c=Ae.length;c>b;b++)if(Ae[b][1].exec(i[1])){e=Ae[b][0],d=Ae[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=Be.length;c>b;b++)if(Be[b][1].exec(i[3])){
|
||||
// match[2] should be 'T' or space
|
||||
f=(i[2]||" ")+Be[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!ze.exec(i[4]))return void(a._isValid=!1);g="Z"}a._f=e+(f||"")+(g||""),jb(a)}else a._isValid=!1}
|
||||
// date from iso format or fallback
|
||||
function eb(b){var c=Ce.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(db(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}
|
||||
// Pick the first defined of two or three arguments.
|
||||
function fb(a,b,c){return null!=a?a:null!=b?b:c}function gb(b){
|
||||
// hooks is actually the exported moment object
|
||||
var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}
|
||||
// convert an array to a date.
|
||||
// the array should mirror the parameters below
|
||||
// note: all values past the year are optional and will default to the lowest possible value.
|
||||
// [year, month, day , hour, minute, second, millisecond]
|
||||
function hb(a){var b,c,d,e,f=[];if(!a._d){
|
||||
// Default to current date.
|
||||
// * if no year, month, day of month are given, default to today
|
||||
// * if day of month is given, default month and year
|
||||
// * if month is given, default only year
|
||||
// * if year is given, don't default anything
|
||||
for(d=gb(a),a._w&&null==a._a[$d]&&null==a._a[Zd]&&ib(a),a._dayOfYear&&(e=fb(a._a[Yd],d[Yd]),a._dayOfYear>oa(e)&&(l(a)._overflowDayOfYear=!0),c=sa(e,0,a._dayOfYear),a._a[Zd]=c.getUTCMonth(),a._a[$d]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];
|
||||
// Zero out whatever was not defaulted, including time
|
||||
for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];
|
||||
// Check for 24:00:00.000
|
||||
24===a._a[_d]&&0===a._a[ae]&&0===a._a[be]&&0===a._a[ce]&&(a._nextDay=!0,a._a[_d]=0),a._d=(a._useUTC?sa:ra).apply(null,f),
|
||||
// Apply timezone offset from input. The actual utcOffset can be changed
|
||||
// with parseZone.
|
||||
null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[_d]=24)}}function ib(a){var b,c,d,e,f,g,h,i;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=fb(b.GG,a._a[Yd],va(rb(),1,4).year),d=fb(b.W,1),e=fb(b.E,1),(1>e||e>7)&&(i=!0)):(f=a._locale._week.dow,g=a._locale._week.doy,c=fb(b.gg,a._a[Yd],va(rb(),f,g).year),d=fb(b.w,1),null!=b.d?(e=b.d,(0>e||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f),1>d||d>wa(c,f,g)?l(a)._overflowWeeks=!0:null!=i?l(a)._overflowWeekday=!0:(h=ua(c,d,e,f,g),a._a[Yd]=h.year,a._dayOfYear=h.dayOfYear)}
|
||||
// date from string and format string
|
||||
function jb(b){
|
||||
// TODO: Move this to another part of the creation flow to prevent circular deps
|
||||
if(b._f===a.ISO_8601)return void db(b);b._a=[],l(b).empty=!0;
|
||||
// This array is used to make a Date, either with `new Date` or `Date.UTC`
|
||||
var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=X(b._f,b._locale).match(Bd)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(Z(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&l(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),Ed[f]?(d?l(b).empty=!1:l(b).unusedTokens.push(f),ca(f,d,b)):b._strict&&!d&&l(b).unusedTokens.push(f);
|
||||
// add remaining unparsed input length to the string
|
||||
l(b).charsLeftOver=i-j,h.length>0&&l(b).unusedInput.push(h),
|
||||
// clear _12h flag if hour is <= 12
|
||||
b._a[_d]<=12&&l(b).bigHour===!0&&b._a[_d]>0&&(l(b).bigHour=void 0),l(b).parsedDateParts=b._a.slice(0),l(b).meridiem=b._meridiem,
|
||||
// handle meridiem
|
||||
b._a[_d]=kb(b._locale,b._a[_d],b._meridiem),hb(b),cb(b)}function kb(a,b,c){var d;
|
||||
// Fallback
|
||||
return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}
|
||||
// date from string and array of format strings
|
||||
function lb(a){var b,c,d,e,f;if(0===a._f.length)return l(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;e<a._f.length;e++)f=0,b=p({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],jb(b),m(b)&&(f+=l(b).charsLeftOver,f+=10*l(b).unusedTokens.length,l(b).score=f,(null==d||d>f)&&(d=f,c=b));i(a,c||b)}function mb(a){if(!a._d){var b=K(a._i);a._a=g([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),hb(a)}}function nb(a){var b=new q(cb(ob(a)));
|
||||
// Adding is smart enough around DST
|
||||
return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function ob(a){var b=a._i,d=a._f;return a._locale=a._locale||ab(a._l),null===b||void 0===d&&""===b?n({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),r(b)?new q(cb(b)):(c(d)?lb(a):f(b)?a._d=b:d?jb(a):pb(a),m(a)||(a._d=null),a))}function pb(b){var d=b._i;void 0===d?b._d=new Date(a.now()):f(d)?b._d=new Date(d.valueOf()):"string"==typeof d?eb(b):c(d)?(b._a=g(d.slice(0),function(a){return parseInt(a,10)}),hb(b)):"object"==typeof d?mb(b):"number"==typeof d?
|
||||
// from milliseconds
|
||||
b._d=new Date(d):a.createFromInputFallback(b)}function qb(a,b,f,g,h){var i={};
|
||||
// object construction must be done this way.
|
||||
// https://github.com/moment/moment/issues/1423
|
||||
return"boolean"==typeof f&&(g=f,f=void 0),(d(a)&&e(a)||c(a)&&0===a.length)&&(a=void 0),i._isAMomentObject=!0,i._useUTC=i._isUTC=h,i._l=f,i._i=a,i._f=b,i._strict=g,nb(i)}function rb(a,b,c,d){return qb(a,b,c,d,!1)}
|
||||
// Pick a moment m from moments so that m[fn](other) is true for all
|
||||
// other. This relies on the function fn to be transitive.
|
||||
//
|
||||
// moments should either be an array of moment objects or an array, whose
|
||||
// first element is an array of moment objects.
|
||||
function sb(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return rb();for(d=b[0],e=1;e<b.length;++e)b[e].isValid()&&!b[e][a](d)||(d=b[e]);return d}
|
||||
// TODO: Use [].sort instead?
|
||||
function tb(){var a=[].slice.call(arguments,0);return sb("isBefore",a)}function ub(){var a=[].slice.call(arguments,0);return sb("isAfter",a)}function vb(a){var b=K(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;
|
||||
// representation for dateAddRemove
|
||||
this._milliseconds=+k+1e3*j+// 1000
|
||||
6e4*i+// 1000 * 60
|
||||
1e3*h*60*60,//using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
|
||||
// Because of dateAddRemove treats 24 hours as different from a
|
||||
// day when working around DST, we need to store them separately
|
||||
this._days=+g+7*f,
|
||||
// It is impossible translate months into days without knowing
|
||||
// which months you are are talking about, so we have to store
|
||||
// it separately.
|
||||
this._months=+e+3*d+12*c,this._data={},this._locale=ab(),this._bubble()}function wb(a){return a instanceof vb}
|
||||
// FORMATTING
|
||||
function xb(a,b){T(a,0,0,function(){var a=this.utcOffset(),c="+";return 0>a&&(a=-a,c="-"),c+S(~~(a/60),2)+b+S(~~a%60,2)})}function yb(a,b){var c=(b||"").match(a)||[],d=c[c.length-1]||[],e=(d+"").match(Ge)||["-",0,0],f=+(60*e[1])+t(e[2]);return"+"===e[0]?f:-f}
|
||||
// Return a moment from input, that is local/utc/zone equivalent to model.
|
||||
function zb(b,c){var d,e;
|
||||
// Use low-level api, because this fn is low-level api.
|
||||
return c._isUTC?(d=c.clone(),e=(r(b)||f(b)?b.valueOf():rb(b).valueOf())-d.valueOf(),d._d.setTime(d._d.valueOf()+e),a.updateOffset(d,!1),d):rb(b).local()}function Ab(a){
|
||||
// On Firefox.24 Date#getTimezoneOffset returns a floating point.
|
||||
// https://github.com/moment/moment/pull/1871
|
||||
return 15*-Math.round(a._d.getTimezoneOffset()/15)}
|
||||
// MOMENTS
|
||||
// keepLocalTime = true means only change the timezone, without
|
||||
// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
|
||||
// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
|
||||
// +0200, so we adjust the time as needed, to be valid.
|
||||
//
|
||||
// Keeping the time actually adds/subtracts (one hour)
|
||||
// from the actual represented time. That is why we call updateOffset
|
||||
// a second time. In case it wants us to change the offset again
|
||||
// _changeInProgress == true case, then we have to adjust, because
|
||||
// there is no such time in the given timezone.
|
||||
function Bb(b,c){var d,e=this._offset||0;return this.isValid()?null!=b?("string"==typeof b?b=yb(Td,b):Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Ab(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?Sb(this,Mb(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Ab(this):null!=b?this:NaN}function Cb(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Db(a){return this.utcOffset(0,a)}function Eb(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Ab(this),"m")),this}function Fb(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(yb(Sd,this._i)),this}function Gb(a){return this.isValid()?(a=a?rb(a).utcOffset():0,(this.utcOffset()-a)%60===0):!1}function Hb(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ib(){if(!o(this._isDSTShifted))return this._isDSTShifted;var a={};if(p(a,this),a=ob(a),a._a){var b=a._isUTC?j(a._a):rb(a._a);this._isDSTShifted=this.isValid()&&u(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Jb(){return this.isValid()?!this._isUTC:!1}function Kb(){return this.isValid()?this._isUTC:!1}function Lb(){return this.isValid()?this._isUTC&&0===this._offset:!1}function Mb(a,b){var c,d,e,f=a,
|
||||
// matching against regexp is expensive, do it on demand
|
||||
g=null;// checks for null or undefined
|
||||
return wb(a)?f={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(f={},b?f[b]=a:f.milliseconds=a):(g=He.exec(a))?(c="-"===g[1]?-1:1,f={y:0,d:t(g[$d])*c,h:t(g[_d])*c,m:t(g[ae])*c,s:t(g[be])*c,ms:t(g[ce])*c}):(g=Ie.exec(a))?(c="-"===g[1]?-1:1,f={y:Nb(g[2],c),M:Nb(g[3],c),w:Nb(g[4],c),d:Nb(g[5],c),h:Nb(g[6],c),m:Nb(g[7],c),s:Nb(g[8],c)}):null==f?f={}:"object"==typeof f&&("from"in f||"to"in f)&&(e=Pb(rb(f.from),rb(f.to)),f={},f.ms=e.milliseconds,f.M=e.months),d=new vb(f),wb(a)&&h(a,"_locale")&&(d._locale=a._locale),d}function Nb(a,b){
|
||||
// We'd normally use ~~inp for this, but unfortunately it also
|
||||
// converts floats to ints.
|
||||
// inp may be undefined, so careful calling replace on it.
|
||||
var c=a&&parseFloat(a.replace(",","."));
|
||||
// apply sign while we're at it
|
||||
return(isNaN(c)?0:c)*b}function Ob(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function Pb(a,b){var c;return a.isValid()&&b.isValid()?(b=zb(b,a),a.isBefore(b)?c=Ob(a,b):(c=Ob(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function Qb(a){return 0>a?-1*Math.round(-1*a):Math.round(a)}
|
||||
// TODO: remove 'name' arg after deprecation is removed
|
||||
function Rb(a,b){return function(c,d){var e,f;
|
||||
//invert the arguments, but complain about it
|
||||
return null===d||isNaN(+d)||(x(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Mb(c,d),Sb(this,e,a),this}}function Sb(b,c,d,e){var f=c._milliseconds,g=Qb(c._days),h=Qb(c._months);b.isValid()&&(e=null==e?!0:e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&P(b,"Date",O(b,"Date")+g*d),h&&ia(b,O(b,"Month")+h*d),e&&a.updateOffset(b,g||h))}function Tb(a,b){var c=a.diff(b,"days",!0);return-6>c?"sameElse":-1>c?"lastWeek":0>c?"lastDay":1>c?"sameDay":2>c?"nextDay":7>c?"nextWeek":"sameElse"}function Ub(b,c){
|
||||
// We want to compare the start of today, vs this.
|
||||
// Getting start-of-today depends on whether we're local/utc/offset or not.
|
||||
var d=b||rb(),e=zb(d,this).startOf("day"),f=a.calendarFormat(this,e)||"sameElse",g=c&&(y(c[f])?c[f].call(this,d):c[f]);return this.format(g||this.localeData().calendar(f,this,rb(d)))}function Vb(){return new q(this)}function Wb(a,b){var c=r(a)?a:rb(a);return this.isValid()&&c.isValid()?(b=J(o(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()<this.clone().startOf(b).valueOf()):!1}function Xb(a,b){var c=r(a)?a:rb(a);return this.isValid()&&c.isValid()?(b=J(o(b)?"millisecond":b),"millisecond"===b?this.valueOf()<c.valueOf():this.clone().endOf(b).valueOf()<c.valueOf()):!1}function Yb(a,b,c,d){return d=d||"()",("("===d[0]?this.isAfter(a,c):!this.isBefore(a,c))&&(")"===d[1]?this.isBefore(b,c):!this.isAfter(b,c))}function Zb(a,b){var c,d=r(a)?a:rb(a);return this.isValid()&&d.isValid()?(b=J(b||"millisecond"),"millisecond"===b?this.valueOf()===d.valueOf():(c=d.valueOf(),this.clone().startOf(b).valueOf()<=c&&c<=this.clone().endOf(b).valueOf())):!1}function $b(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function _b(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function ac(a,b,c){var d,e,f,g;// 1000
|
||||
// 1000 * 60
|
||||
// 1000 * 60 * 60
|
||||
// 1000 * 60 * 60 * 24, negate dst
|
||||
// 1000 * 60 * 60 * 24 * 7, negate dst
|
||||
return this.isValid()?(d=zb(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=J(b),"year"===b||"month"===b||"quarter"===b?(g=bc(this,d),"quarter"===b?g/=3:"year"===b&&(g/=12)):(f=this-d,g="second"===b?f/1e3:"minute"===b?f/6e4:"hour"===b?f/36e5:"day"===b?(f-e)/864e5:"week"===b?(f-e)/6048e5:f),c?g:s(g)):NaN):NaN}function bc(a,b){
|
||||
// difference in months
|
||||
var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),
|
||||
// b is in (anchor - 1 month, anchor + 1 month)
|
||||
f=a.clone().add(e,"months");
|
||||
//check for negative zero, return zero if negative zero
|
||||
// linear across the month
|
||||
// linear across the month
|
||||
return 0>b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)||0}function cc(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function dc(){var a=this.clone().utc();return 0<a.year()&&a.year()<=9999?y(Date.prototype.toISOString)?this.toDate().toISOString():W(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):W(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function ec(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=W(this,b);return this.localeData().postformat(c)}function fc(a,b){return this.isValid()&&(r(a)&&a.isValid()||rb(a).isValid())?Mb({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function gc(a){return this.from(rb(),a)}function hc(a,b){return this.isValid()&&(r(a)&&a.isValid()||rb(a).isValid())?Mb({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function ic(a){return this.to(rb(),a)}
|
||||
// If passed a locale key, it will set the locale for this
|
||||
// instance. Otherwise, it will return the locale configuration
|
||||
// variables for this instance.
|
||||
function jc(a){var b;return void 0===a?this._locale._abbr:(b=ab(a),null!=b&&(this._locale=b),this)}function kc(){return this._locale}function lc(a){
|
||||
// the following switch intentionally omits break keywords
|
||||
// to utilize falling through the cases.
|
||||
switch(a=J(a)){case"year":this.month(0);/* falls through */
|
||||
case"quarter":case"month":this.date(1);/* falls through */
|
||||
case"week":case"isoWeek":case"day":case"date":this.hours(0);/* falls through */
|
||||
case"hour":this.minutes(0);/* falls through */
|
||||
case"minute":this.seconds(0);/* falls through */
|
||||
case"second":this.milliseconds(0)}
|
||||
// weeks are a special case
|
||||
// quarters are also special
|
||||
return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function mc(a){
|
||||
// 'date' is an alias for 'day', so it should be considered as such.
|
||||
return a=J(a),void 0===a||"millisecond"===a?this:("date"===a&&(a="day"),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms"))}function nc(){return this._d.valueOf()-6e4*(this._offset||0)}function oc(){return Math.floor(this.valueOf()/1e3)}function pc(){return new Date(this.valueOf())}function qc(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function rc(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function sc(){
|
||||
// new Date(NaN).toJSON() === null
|
||||
return this.isValid()?this.toISOString():null}function tc(){return m(this)}function uc(){return i({},l(this))}function vc(){return l(this).overflow}function wc(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function xc(a,b){T(0,[a,a.length],0,b)}
|
||||
// MOMENTS
|
||||
function yc(a){return Cc.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function zc(a){return Cc.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Ac(){return wa(this.year(),1,4)}function Bc(){var a=this.localeData()._week;return wa(this.year(),a.dow,a.doy)}function Cc(a,b,c,d,e){var f;return null==a?va(this,d,e).year:(f=wa(a,d,e),b>f&&(b=f),Dc.call(this,a,b,c,d,e))}function Dc(a,b,c,d,e){var f=ua(a,b,c,d,e),g=sa(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}
|
||||
// MOMENTS
|
||||
function Ec(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}
|
||||
// HELPERS
|
||||
// MOMENTS
|
||||
function Fc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function Gc(a,b){b[ce]=t(1e3*("0."+a))}
|
||||
// MOMENTS
|
||||
function Hc(){return this._isUTC?"UTC":""}function Ic(){return this._isUTC?"Coordinated Universal Time":""}function Jc(a){return rb(1e3*a)}function Kc(){return rb.apply(null,arguments).parseZone()}function Lc(a){return a}function Mc(a,b,c,d){var e=ab(),f=j().set(d,b);return e[c](f,a)}function Nc(a,b,c){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return Mc(a,b,c,"month");var d,e=[];for(d=0;12>d;d++)e[d]=Mc(a,d,c,"month");return e}
|
||||
// ()
|
||||
// (5)
|
||||
// (fmt, 5)
|
||||
// (fmt)
|
||||
// (true)
|
||||
// (true, 5)
|
||||
// (true, fmt, 5)
|
||||
// (true, fmt)
|
||||
function Oc(a,b,c,d){"boolean"==typeof a?("number"==typeof b&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,"number"==typeof b&&(c=b,b=void 0),b=b||"");var e=ab(),f=a?e._week.dow:0;if(null!=c)return Mc(b,(c+f)%7,d,"day");var g,h=[];for(g=0;7>g;g++)h[g]=Mc(b,(g+f)%7,d,"day");return h}function Pc(a,b){return Nc(a,b,"months")}function Qc(a,b){return Nc(a,b,"monthsShort")}function Rc(a,b,c){return Oc(a,b,c,"weekdays")}function Sc(a,b,c){return Oc(a,b,c,"weekdaysShort")}function Tc(a,b,c){return Oc(a,b,c,"weekdaysMin")}function Uc(){var a=this._data;return this._milliseconds=Ue(this._milliseconds),this._days=Ue(this._days),this._months=Ue(this._months),a.milliseconds=Ue(a.milliseconds),a.seconds=Ue(a.seconds),a.minutes=Ue(a.minutes),a.hours=Ue(a.hours),a.months=Ue(a.months),a.years=Ue(a.years),this}function Vc(a,b,c,d){var e=Mb(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}
|
||||
// supports only 2.0-style add(1, 's') or add(duration)
|
||||
function Wc(a,b){return Vc(this,a,b,1)}
|
||||
// supports only 2.0-style subtract(1, 's') or subtract(duration)
|
||||
function Xc(a,b){return Vc(this,a,b,-1)}function Yc(a){return 0>a?Math.floor(a):Math.ceil(a)}function Zc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;
|
||||
// if we have a mix of positive and negative values, bubble down first
|
||||
// check: https://github.com/moment/moment/issues/2166
|
||||
// The following code bubbles up values, see the tests for
|
||||
// examples of what that means.
|
||||
// convert days to months
|
||||
// 12 months -> 1 year
|
||||
return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*Yc(_c(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=s(f/1e3),i.seconds=a%60,b=s(a/60),i.minutes=b%60,c=s(b/60),i.hours=c%24,g+=s(c/24),e=s($c(g)),h+=e,g-=Yc(_c(e)),d=s(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function $c(a){
|
||||
// 400 years have 146097 days (taking into account leap year rules)
|
||||
// 400 years have 12 months === 4800
|
||||
return 4800*a/146097}function _c(a){
|
||||
// the reverse of daysToMonths
|
||||
return 146097*a/4800}function ad(a){var b,c,d=this._milliseconds;if(a=J(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+$c(b),"month"===a?c:c/12;switch(b=this._days+Math.round(_c(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;
|
||||
// Math.floor prevents floating point math errors here
|
||||
case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}
|
||||
// TODO: Use this.as('ms')?
|
||||
function bd(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*t(this._months/12)}function cd(a){return function(){return this.as(a)}}function dd(a){return a=J(a),this[a+"s"]()}function ed(a){return function(){return this._data[a]}}function fd(){return s(this.days()/7)}
|
||||
// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
|
||||
function gd(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function hd(a,b,c){var d=Mb(a).abs(),e=jf(d.as("s")),f=jf(d.as("m")),g=jf(d.as("h")),h=jf(d.as("d")),i=jf(d.as("M")),j=jf(d.as("y")),k=e<kf.s&&["s",e]||1>=f&&["m"]||f<kf.m&&["mm",f]||1>=g&&["h"]||g<kf.h&&["hh",g]||1>=h&&["d"]||h<kf.d&&["dd",h]||1>=i&&["M"]||i<kf.M&&["MM",i]||1>=j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,gd.apply(null,k)}
|
||||
// This function allows you to set the rounding function for relative time strings
|
||||
function id(a){return void 0===a?jf:"function"==typeof a?(jf=a,!0):!1}
|
||||
// This function allows you to set a threshold for relative time strings
|
||||
function jd(a,b){return void 0===kf[a]?!1:void 0===b?kf[a]:(kf[a]=b,!0)}function kd(a){var b=this.localeData(),c=hd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function ld(){
|
||||
// for ISO strings we do not use the normal bubbling rules:
|
||||
// * milliseconds bubble up until they become hours
|
||||
// * days do not bubble at all
|
||||
// * months bubble up until they become years
|
||||
// This is because there is no context-free conversion between hours and days
|
||||
// (think of clock changes)
|
||||
// and also not between days and months (28-31 days per month)
|
||||
var a,b,c,d=lf(this._milliseconds)/1e3,e=lf(this._days),f=lf(this._months);a=s(d/60),b=s(a/60),d%=60,a%=60,c=s(f/12),f%=12;
|
||||
// inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
|
||||
var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"}var md,nd;nd=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;c>d;d++)if(d in b&&a.call(this,b[d],d,b))return!0;return!1};
|
||||
// Plugins that add properties should also add the key here (null value),
|
||||
// so we can properly clone ourselves.
|
||||
var od=a.momentProperties=[],pd=!1,qd={};a.suppressDeprecationWarnings=!1,a.deprecationHandler=null;var rd;rd=Object.keys?Object.keys:function(a){var b,c=[];for(b in a)h(a,b)&&c.push(b);return c};var sd,td={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},ud={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},vd="Invalid date",wd="%d",xd=/\d{1,2}/,yd={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},zd={},Ad={},Bd=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Cd=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Dd={},Ed={},Fd=/\d/,Gd=/\d\d/,Hd=/\d{3}/,Id=/\d{4}/,Jd=/[+-]?\d{6}/,Kd=/\d\d?/,Ld=/\d\d\d\d?/,Md=/\d\d\d\d\d\d?/,Nd=/\d{1,3}/,Od=/\d{1,4}/,Pd=/[+-]?\d{1,6}/,Qd=/\d+/,Rd=/[+-]?\d+/,Sd=/Z|[+-]\d\d:?\d\d/gi,Td=/Z|[+-]\d\d(?::?\d\d)?/gi,Ud=/[+-]?\d+(\.\d{1,3})?/,Vd=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Wd={},Xd={},Yd=0,Zd=1,$d=2,_d=3,ae=4,be=5,ce=6,de=7,ee=8;sd=Array.prototype.indexOf?Array.prototype.indexOf:function(a){
|
||||
// I know
|
||||
var b;for(b=0;b<this.length;++b)if(this[b]===a)return b;return-1},T("M",["MM",2],"Mo",function(){return this.month()+1}),T("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),T("MMMM",0,0,function(a){return this.localeData().months(this,a)}),I("month","M"),L("month",8),Y("M",Kd),Y("MM",Kd,Gd),Y("MMM",function(a,b){return b.monthsShortRegex(a)}),Y("MMMM",function(a,b){return b.monthsRegex(a)}),aa(["M","MM"],function(a,b){b[Zd]=t(a)-1}),aa(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[Zd]=e:l(c).invalidMonth=a});
|
||||
// LOCALES
|
||||
var fe=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/,ge="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),he="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),ie=Vd,je=Vd;
|
||||
// FORMATTING
|
||||
T("Y",0,0,function(){var a=this.year();return 9999>=a?""+a:"+"+a}),T(0,["YY",2],0,function(){return this.year()%100}),T(0,["YYYY",4],0,"year"),T(0,["YYYYY",5],0,"year"),T(0,["YYYYYY",6,!0],0,"year"),
|
||||
// ALIASES
|
||||
I("year","y"),
|
||||
// PRIORITIES
|
||||
L("year",1),
|
||||
// PARSING
|
||||
Y("Y",Rd),Y("YY",Kd,Gd),Y("YYYY",Od,Id),Y("YYYYY",Pd,Jd),Y("YYYYYY",Pd,Jd),aa(["YYYYY","YYYYYY"],Yd),aa("YYYY",function(b,c){c[Yd]=2===b.length?a.parseTwoDigitYear(b):t(b)}),aa("YY",function(b,c){c[Yd]=a.parseTwoDigitYear(b)}),aa("Y",function(a,b){b[Yd]=parseInt(a,10)}),
|
||||
// HOOKS
|
||||
a.parseTwoDigitYear=function(a){return t(a)+(t(a)>68?1900:2e3)};
|
||||
// MOMENTS
|
||||
var ke=N("FullYear",!0);
|
||||
// FORMATTING
|
||||
T("w",["ww",2],"wo","week"),T("W",["WW",2],"Wo","isoWeek"),
|
||||
// ALIASES
|
||||
I("week","w"),I("isoWeek","W"),
|
||||
// PRIORITIES
|
||||
L("week",5),L("isoWeek",5),
|
||||
// PARSING
|
||||
Y("w",Kd),Y("ww",Kd,Gd),Y("W",Kd),Y("WW",Kd,Gd),ba(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=t(a)});var le={dow:0,// Sunday is the first day of the week.
|
||||
doy:6};
|
||||
// FORMATTING
|
||||
T("d",0,"do","day"),T("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),T("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),T("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),T("e",0,0,"weekday"),T("E",0,0,"isoWeekday"),
|
||||
// ALIASES
|
||||
I("day","d"),I("weekday","e"),I("isoWeekday","E"),
|
||||
// PRIORITY
|
||||
L("day",11),L("weekday",11),L("isoWeekday",11),
|
||||
// PARSING
|
||||
Y("d",Kd),Y("e",Kd),Y("E",Kd),Y("dd",function(a,b){return b.weekdaysMinRegex(a)}),Y("ddd",function(a,b){return b.weekdaysShortRegex(a)}),Y("dddd",function(a,b){return b.weekdaysRegex(a)}),ba(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);
|
||||
// if we didn't get a weekday name, mark the date as invalid
|
||||
null!=e?b.d=e:l(c).invalidWeekday=a}),ba(["d","e","E"],function(a,b,c,d){b[d]=t(a)});
|
||||
// LOCALES
|
||||
var me="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ne="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),oe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),pe=Vd,qe=Vd,re=Vd;T("H",["HH",2],0,"hour"),T("h",["hh",2],0,Qa),T("k",["kk",2],0,Ra),T("hmm",0,0,function(){return""+Qa.apply(this)+S(this.minutes(),2)}),T("hmmss",0,0,function(){return""+Qa.apply(this)+S(this.minutes(),2)+S(this.seconds(),2)}),T("Hmm",0,0,function(){return""+this.hours()+S(this.minutes(),2)}),T("Hmmss",0,0,function(){return""+this.hours()+S(this.minutes(),2)+S(this.seconds(),2)}),Sa("a",!0),Sa("A",!1),
|
||||
// ALIASES
|
||||
I("hour","h"),
|
||||
// PRIORITY
|
||||
L("hour",13),Y("a",Ta),Y("A",Ta),Y("H",Kd),Y("h",Kd),Y("HH",Kd,Gd),Y("hh",Kd,Gd),Y("hmm",Ld),Y("hmmss",Md),Y("Hmm",Ld),Y("Hmmss",Md),aa(["H","HH"],_d),aa(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),aa(["h","hh"],function(a,b,c){b[_d]=t(a),l(c).bigHour=!0}),aa("hmm",function(a,b,c){var d=a.length-2;b[_d]=t(a.substr(0,d)),b[ae]=t(a.substr(d)),l(c).bigHour=!0}),aa("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[_d]=t(a.substr(0,d)),b[ae]=t(a.substr(d,2)),b[be]=t(a.substr(e)),l(c).bigHour=!0}),aa("Hmm",function(a,b,c){var d=a.length-2;b[_d]=t(a.substr(0,d)),b[ae]=t(a.substr(d))}),aa("Hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[_d]=t(a.substr(0,d)),b[ae]=t(a.substr(d,2)),b[be]=t(a.substr(e))});var se,te=/[ap]\.?m?\.?/i,ue=N("Hours",!0),ve={calendar:td,longDateFormat:ud,invalidDate:vd,ordinal:wd,ordinalParse:xd,relativeTime:yd,months:ge,monthsShort:he,week:le,weekdays:me,weekdaysMin:oe,weekdaysShort:ne,meridiemParse:te},we={},xe=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,ye=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,ze=/Z|[+-]\d\d(?::?\d\d)?/,Ae=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],
|
||||
// YYYYMM is NOT allowed by the standard
|
||||
["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Be=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ce=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=w("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),
|
||||
// constant that refers to the ISO standard
|
||||
a.ISO_8601=function(){};var De=w("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=rb.apply(null,arguments);return this.isValid()&&a.isValid()?this>a?this:a:n()}),Ee=w("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=rb.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:n()}),Fe=function(){return Date.now?Date.now():+new Date};xb("Z",":"),xb("ZZ",""),
|
||||
// PARSING
|
||||
Y("Z",Td),Y("ZZ",Td),aa(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=yb(Td,a)});
|
||||
// HELPERS
|
||||
// timezone chunker
|
||||
// '+10:00' > ['10', '00']
|
||||
// '-1530' > ['-15', '30']
|
||||
var Ge=/([\+\-]|\d\d)/gi;
|
||||
// HOOKS
|
||||
// This function will be called whenever a moment is mutated.
|
||||
// It is intended to keep the offset in sync with the timezone.
|
||||
a.updateOffset=function(){};
|
||||
// ASP.NET json date format regex
|
||||
var He=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/,Ie=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Mb.fn=vb.prototype;var Je=Rb(1,"add"),Ke=Rb(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Le=w("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});
|
||||
// FORMATTING
|
||||
T(0,["gg",2],0,function(){return this.weekYear()%100}),T(0,["GG",2],0,function(){return this.isoWeekYear()%100}),xc("gggg","weekYear"),xc("ggggg","weekYear"),xc("GGGG","isoWeekYear"),xc("GGGGG","isoWeekYear"),
|
||||
// ALIASES
|
||||
I("weekYear","gg"),I("isoWeekYear","GG"),
|
||||
// PRIORITY
|
||||
L("weekYear",1),L("isoWeekYear",1),
|
||||
// PARSING
|
||||
Y("G",Rd),Y("g",Rd),Y("GG",Kd,Gd),Y("gg",Kd,Gd),Y("GGGG",Od,Id),Y("gggg",Od,Id),Y("GGGGG",Pd,Jd),Y("ggggg",Pd,Jd),ba(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=t(a)}),ba(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),
|
||||
// FORMATTING
|
||||
T("Q",0,"Qo","quarter"),
|
||||
// ALIASES
|
||||
I("quarter","Q"),
|
||||
// PRIORITY
|
||||
L("quarter",7),
|
||||
// PARSING
|
||||
Y("Q",Fd),aa("Q",function(a,b){b[Zd]=3*(t(a)-1)}),
|
||||
// FORMATTING
|
||||
T("D",["DD",2],"Do","date"),
|
||||
// ALIASES
|
||||
I("date","D"),
|
||||
// PRIOROITY
|
||||
L("date",9),
|
||||
// PARSING
|
||||
Y("D",Kd),Y("DD",Kd,Gd),Y("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),aa(["D","DD"],$d),aa("Do",function(a,b){b[$d]=t(a.match(Kd)[0],10)});
|
||||
// MOMENTS
|
||||
var Me=N("Date",!0);
|
||||
// FORMATTING
|
||||
T("DDD",["DDDD",3],"DDDo","dayOfYear"),
|
||||
// ALIASES
|
||||
I("dayOfYear","DDD"),
|
||||
// PRIORITY
|
||||
L("dayOfYear",4),
|
||||
// PARSING
|
||||
Y("DDD",Nd),Y("DDDD",Hd),aa(["DDD","DDDD"],function(a,b,c){c._dayOfYear=t(a)}),
|
||||
// FORMATTING
|
||||
T("m",["mm",2],0,"minute"),
|
||||
// ALIASES
|
||||
I("minute","m"),
|
||||
// PRIORITY
|
||||
L("minute",14),
|
||||
// PARSING
|
||||
Y("m",Kd),Y("mm",Kd,Gd),aa(["m","mm"],ae);
|
||||
// MOMENTS
|
||||
var Ne=N("Minutes",!1);
|
||||
// FORMATTING
|
||||
T("s",["ss",2],0,"second"),
|
||||
// ALIASES
|
||||
I("second","s"),
|
||||
// PRIORITY
|
||||
L("second",15),
|
||||
// PARSING
|
||||
Y("s",Kd),Y("ss",Kd,Gd),aa(["s","ss"],be);
|
||||
// MOMENTS
|
||||
var Oe=N("Seconds",!1);
|
||||
// FORMATTING
|
||||
T("S",0,0,function(){return~~(this.millisecond()/100)}),T(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),T(0,["SSS",3],0,"millisecond"),T(0,["SSSS",4],0,function(){return 10*this.millisecond()}),T(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),T(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),T(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),T(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),T(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),
|
||||
// ALIASES
|
||||
I("millisecond","ms"),
|
||||
// PRIORITY
|
||||
L("millisecond",16),
|
||||
// PARSING
|
||||
Y("S",Nd,Fd),Y("SS",Nd,Gd),Y("SSS",Nd,Hd);var Pe;for(Pe="SSSS";Pe.length<=9;Pe+="S")Y(Pe,Qd);for(Pe="S";Pe.length<=9;Pe+="S")aa(Pe,Gc);
|
||||
// MOMENTS
|
||||
var Qe=N("Milliseconds",!1);
|
||||
// FORMATTING
|
||||
T("z",0,0,"zoneAbbr"),T("zz",0,0,"zoneName");var Re=q.prototype;Re.add=Je,Re.calendar=Ub,Re.clone=Vb,Re.diff=ac,Re.endOf=mc,Re.format=ec,Re.from=fc,Re.fromNow=gc,Re.to=hc,Re.toNow=ic,Re.get=Q,Re.invalidAt=vc,Re.isAfter=Wb,Re.isBefore=Xb,Re.isBetween=Yb,Re.isSame=Zb,Re.isSameOrAfter=$b,Re.isSameOrBefore=_b,Re.isValid=tc,Re.lang=Le,Re.locale=jc,Re.localeData=kc,Re.max=Ee,Re.min=De,Re.parsingFlags=uc,Re.set=R,Re.startOf=lc,Re.subtract=Ke,Re.toArray=qc,Re.toObject=rc,Re.toDate=pc,Re.toISOString=dc,Re.toJSON=sc,Re.toString=cc,Re.unix=oc,Re.valueOf=nc,Re.creationData=wc,
|
||||
// Year
|
||||
Re.year=ke,Re.isLeapYear=qa,
|
||||
// Week Year
|
||||
Re.weekYear=yc,Re.isoWeekYear=zc,
|
||||
// Quarter
|
||||
Re.quarter=Re.quarters=Ec,
|
||||
// Month
|
||||
Re.month=ja,Re.daysInMonth=ka,
|
||||
// Week
|
||||
Re.week=Re.weeks=Aa,Re.isoWeek=Re.isoWeeks=Ba,Re.weeksInYear=Bc,Re.isoWeeksInYear=Ac,
|
||||
// Day
|
||||
Re.date=Me,Re.day=Re.days=Ja,Re.weekday=Ka,Re.isoWeekday=La,Re.dayOfYear=Fc,
|
||||
// Hour
|
||||
Re.hour=Re.hours=ue,
|
||||
// Minute
|
||||
Re.minute=Re.minutes=Ne,
|
||||
// Second
|
||||
Re.second=Re.seconds=Oe,
|
||||
// Millisecond
|
||||
Re.millisecond=Re.milliseconds=Qe,
|
||||
// Offset
|
||||
Re.utcOffset=Bb,Re.utc=Db,Re.local=Eb,Re.parseZone=Fb,Re.hasAlignedHourOffset=Gb,Re.isDST=Hb,Re.isLocal=Jb,Re.isUtcOffset=Kb,Re.isUtc=Lb,Re.isUTC=Lb,
|
||||
// Timezone
|
||||
Re.zoneAbbr=Hc,Re.zoneName=Ic,
|
||||
// Deprecations
|
||||
Re.dates=w("dates accessor is deprecated. Use date instead.",Me),Re.months=w("months accessor is deprecated. Use month instead",ja),Re.years=w("years accessor is deprecated. Use year instead",ke),Re.zone=w("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Cb),Re.isDSTShifted=w("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ib);var Se=Re,Te=B.prototype;Te.calendar=C,Te.longDateFormat=D,Te.invalidDate=E,Te.ordinal=F,Te.preparse=Lc,Te.postformat=Lc,Te.relativeTime=G,Te.pastFuture=H,Te.set=z,
|
||||
// Month
|
||||
Te.months=ea,Te.monthsShort=fa,Te.monthsParse=ha,Te.monthsRegex=ma,Te.monthsShortRegex=la,
|
||||
// Week
|
||||
Te.week=xa,Te.firstDayOfYear=za,Te.firstDayOfWeek=ya,
|
||||
// Day of Week
|
||||
Te.weekdays=Ea,Te.weekdaysMin=Ga,Te.weekdaysShort=Fa,Te.weekdaysParse=Ia,Te.weekdaysRegex=Ma,Te.weekdaysShortRegex=Na,Te.weekdaysMinRegex=Oa,
|
||||
// Hours
|
||||
Te.isPM=Ua,Te.meridiem=Va,Za("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===t(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),
|
||||
// Side effect imports
|
||||
a.lang=w("moment.lang is deprecated. Use moment.locale instead.",Za),a.langData=w("moment.langData is deprecated. Use moment.localeData instead.",ab);var Ue=Math.abs,Ve=cd("ms"),We=cd("s"),Xe=cd("m"),Ye=cd("h"),Ze=cd("d"),$e=cd("w"),_e=cd("M"),af=cd("y"),bf=ed("milliseconds"),cf=ed("seconds"),df=ed("minutes"),ef=ed("hours"),ff=ed("days"),gf=ed("months"),hf=ed("years"),jf=Math.round,kf={s:45,// seconds to minute
|
||||
m:45,// minutes to hour
|
||||
h:22,// hours to day
|
||||
d:26,// days to month
|
||||
M:11},lf=Math.abs,mf=vb.prototype;mf.abs=Uc,mf.add=Wc,mf.subtract=Xc,mf.as=ad,mf.asMilliseconds=Ve,mf.asSeconds=We,mf.asMinutes=Xe,mf.asHours=Ye,mf.asDays=Ze,mf.asWeeks=$e,mf.asMonths=_e,mf.asYears=af,mf.valueOf=bd,mf._bubble=Zc,mf.get=dd,mf.milliseconds=bf,mf.seconds=cf,mf.minutes=df,mf.hours=ef,mf.days=ff,mf.weeks=fd,mf.months=gf,mf.years=hf,mf.humanize=kd,mf.toISOString=ld,mf.toString=ld,mf.toJSON=ld,mf.locale=jc,mf.localeData=kc,
|
||||
// Deprecations
|
||||
mf.toIsoString=w("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ld),mf.lang=Le,
|
||||
// Side effect imports
|
||||
// FORMATTING
|
||||
T("X",0,0,"unix"),T("x",0,0,"valueOf"),
|
||||
// PARSING
|
||||
Y("x",Rd),Y("X",Ud),aa("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),aa("x",function(a,b,c){c._d=new Date(t(a))}),
|
||||
// Side effect imports
|
||||
a.version="2.14.1",b(rb),a.fn=Se,a.min=tb,a.max=ub,a.now=Fe,a.utc=j,a.unix=Jc,a.months=Pc,a.isDate=f,a.locale=Za,a.invalid=n,a.duration=Mb,a.isMoment=r,a.weekdays=Rc,a.parseZone=Kc,a.localeData=ab,a.isDuration=wb,a.monthsShort=Qc,a.weekdaysMin=Tc,a.defineLocale=$a,a.updateLocale=_a,a.locales=bb,a.weekdaysShort=Sc,a.normalizeUnits=J,a.relativeTimeRounding=id,a.relativeTimeThreshold=jd,a.calendarFormat=Tb,a.prototype=Se;var nf=a;return nf});
|
||||
3
resources/theme/material-dashboard/assets/js/plugins/nouislider.min.js
vendored
Normal file
2
resources/theme/material-dashboard/assets/js/plugins/perfect-scrollbar.jquery.min.js
vendored
Normal file
3514
resources/theme/material-dashboard/assets/js/plugins/sweetalert2.js
vendored
Normal file
95
resources/theme/material-dashboard/assets/scss/material-dashboard.scss
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
/*!
|
||||
|
||||
=========================================================
|
||||
* Material Dashboard Pro - v2.1.0
|
||||
=========================================================
|
||||
|
||||
* Product Page: https://www.creative-tim.com/product/material-dashboard-pro
|
||||
* Copyright 2019 Creative Tim (http://www.creative-tim.com)
|
||||
|
||||
=========================================================
|
||||
|
||||
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
*/
|
||||
|
||||
@import "material-dashboard/variables";
|
||||
@import "material-dashboard/mixins";
|
||||
@import "material-dashboard/mixins/social-buttons.scss";
|
||||
@import "material-dashboard/core-bootstrap";
|
||||
|
||||
// Core Components
|
||||
@import "material-dashboard/buttons";
|
||||
@import "material-dashboard/checkboxes";
|
||||
@import "material-dashboard/radios";
|
||||
@import "material-dashboard/badges";
|
||||
@import "material-dashboard/forms";
|
||||
@import "material-dashboard/input-group";
|
||||
@import "material-dashboard/images";
|
||||
@import "material-dashboard/navbar";
|
||||
@import "material-dashboard/pagination";
|
||||
@import "material-dashboard/pills";
|
||||
@import "material-dashboard/type";
|
||||
@import "material-dashboard/tabs";
|
||||
@import "material-dashboard/tooltip";
|
||||
@import "material-dashboard/popover";
|
||||
@import "material-dashboard/modal";
|
||||
@import "material-dashboard/misc";
|
||||
@import "material-dashboard/headers";
|
||||
@import "material-dashboard/alerts";
|
||||
@import "material-dashboard/footers";
|
||||
@import "material-dashboard/dropdown";
|
||||
@import "material-dashboard/progress";
|
||||
@import "material-dashboard/togglebutton";
|
||||
@import "material-dashboard/ripples";
|
||||
@import "material-dashboard/tables";
|
||||
@import "material-dashboard/info-areas";
|
||||
|
||||
// Cards
|
||||
@import "material-dashboard/cards";
|
||||
@import "material-dashboard/cards/card-signup";
|
||||
@import "material-dashboard/cards/card-plain";
|
||||
@import "material-dashboard/cards/card-plain-extend";
|
||||
@import "material-dashboard/cards/card-stats";
|
||||
@import "material-dashboard/cards/card-testimonials";
|
||||
@import "material-dashboard/cards/card-profile";
|
||||
@import "material-dashboard/cards/card-blog";
|
||||
@import "material-dashboard/cards/card-product";
|
||||
@import "material-dashboard/cards/card-pricing";
|
||||
@import "material-dashboard/cards/card-collapse";
|
||||
@import "material-dashboard/cards/card-form-horizontal";
|
||||
@import "material-dashboard/cards/card-background";
|
||||
@import "material-dashboard/cards/card-rotate";
|
||||
|
||||
// Components for PRO
|
||||
@import "material-dashboard/forms-extend";
|
||||
@import "material-dashboard/misc-extend";
|
||||
@import "material-dashboard/footers-extend";
|
||||
@import "material-dashboard/rtl";
|
||||
@import "material-dashboard/sidebar-and-main-panel";
|
||||
@import "material-dashboard/fixed-plugin";
|
||||
@import "material-dashboard/pages";
|
||||
@import "material-dashboard/timeline";
|
||||
@import "material-dashboard/social-buttons";
|
||||
|
||||
//plugin css
|
||||
@import "material-dashboard/plugins/plugin-nouislider";
|
||||
@import "material-dashboard/plugins/animate";
|
||||
@import "material-dashboard/plugins/sweetalert2";
|
||||
@import "material-dashboard/plugins/datatables.net";
|
||||
@import "material-dashboard/plugins/jquery.jvectormap";
|
||||
@import "material-dashboard/plugins/plugin-datetime-picker";
|
||||
@import "material-dashboard/plugins/plugin-fileupload";
|
||||
@import "material-dashboard/plugins/fullcalendar";
|
||||
@import "material-dashboard/plugins/wizard-card";
|
||||
@import "material-dashboard/plugins/chartist";
|
||||
@import "material-dashboard/plugins/plugin-bootstrap-select";
|
||||
@import "material-dashboard/plugins/perfect-scrollbar";
|
||||
@import "material-dashboard/plugins/plugin-tagsinput";
|
||||
|
||||
|
||||
// example pages and sections
|
||||
@import "material-dashboard/example-pages";
|
||||
|
||||
|
||||
@import "material-dashboard/responsive";
|
||||
108
resources/theme/material-dashboard/assets/scss/material-dashboard/_alerts.scss
vendored
Normal file
@@ -0,0 +1,108 @@
|
||||
.alert {
|
||||
border: 0;
|
||||
border-radius: 3px;
|
||||
position: relative;
|
||||
padding: 20px 15px;
|
||||
line-height: 20px;
|
||||
|
||||
b{
|
||||
font-weight: $font-weight-bold;
|
||||
text-transform: uppercase;
|
||||
font-size: $font-size-small;
|
||||
}
|
||||
// SASS conversion note: please mirror any content change in _mixins-shared.scss alert-variations-content
|
||||
@include alert-variations(unquote(".alert"), unquote(""), $mdb-text-color-light);
|
||||
|
||||
&-info, &-danger, &-warning, &-success, &-rose {
|
||||
color: $mdb-text-color-light;
|
||||
}
|
||||
|
||||
&-default {
|
||||
a, .alert-link {
|
||||
color: $mdb-text-color-primary;
|
||||
}
|
||||
}
|
||||
|
||||
span{
|
||||
display: block;
|
||||
max-width: 89%;
|
||||
}
|
||||
|
||||
&.alert-danger{
|
||||
@include shadow-alert-color($brand-danger);
|
||||
@include alert-icon-color($brand-danger);
|
||||
}
|
||||
&.alert-warning{
|
||||
@include shadow-alert-color($brand-warning);
|
||||
@include alert-icon-color($brand-warning);
|
||||
}
|
||||
&.alert-success{
|
||||
@include shadow-alert-color($brand-success);
|
||||
@include alert-icon-color($brand-success);
|
||||
}
|
||||
&.alert-info{
|
||||
@include shadow-alert-color($brand-info);
|
||||
@include alert-icon-color($brand-info);
|
||||
}
|
||||
&.alert-primary{
|
||||
@include shadow-alert-color($brand-primary);
|
||||
@include alert-icon-color($brand-primary);
|
||||
}
|
||||
&.alert-rose{
|
||||
@include shadow-alert-color($brand-rose);
|
||||
@include alert-icon-color($brand-rose);
|
||||
}
|
||||
|
||||
&.alert-with-icon{
|
||||
margin-top: 43px;
|
||||
padding-left: 66px;
|
||||
|
||||
i[data-notify="icon"] {
|
||||
display: block;
|
||||
left: 15px;
|
||||
position: absolute;
|
||||
margin-top: -39px;
|
||||
font-size: 20px;
|
||||
background-color: $white-color;
|
||||
padding: 9px;
|
||||
border-radius: 50%;
|
||||
max-width: 38px;
|
||||
@include shadow-big();
|
||||
}
|
||||
}
|
||||
|
||||
.close{
|
||||
line-height: .5;
|
||||
i{
|
||||
color: $white-color;
|
||||
font-size: 11px;
|
||||
}
|
||||
&:focus {
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
||||
i[data-notify="icon"]{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.alert-icon{
|
||||
display: block;
|
||||
float: left;
|
||||
margin-right: $margin-base;
|
||||
|
||||
i{
|
||||
margin-top: -7px;
|
||||
top: 5px;
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
|
||||
[data-notify="dismiss"]{
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.places-buttons .btn {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
44
resources/theme/material-dashboard/assets/scss/material-dashboard/_badges.scss
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
.badge {
|
||||
padding: 5px 12px;
|
||||
text-transform: uppercase;
|
||||
font-size: 10px;
|
||||
color: $white-color;
|
||||
display: inline-block;
|
||||
white-space: normal;
|
||||
@include badge-color();
|
||||
}
|
||||
|
||||
.badge-default[href]:hover,
|
||||
.badge-default[href]:focus {
|
||||
background-color: darken($gray-color, 5%);
|
||||
}
|
||||
|
||||
.badge-primary[href]:hover,
|
||||
.badge-primary[href]:focus {
|
||||
background-color: darken($brand-primary, 5%);
|
||||
}
|
||||
|
||||
.badge-info[href]:hover,
|
||||
.badge-info[href]:focus {
|
||||
background-color: darken($brand-info, 5%);
|
||||
}
|
||||
|
||||
.badge-success[href]:hover,
|
||||
.badge-success[href]:focus {
|
||||
background-color: darken($brand-success, 5%);
|
||||
}
|
||||
|
||||
.badge-warning[href]:hover,
|
||||
.badge-warning[href]:focus {
|
||||
background-color: darken($brand-warning, 5%);
|
||||
color: $white-color;
|
||||
}
|
||||
|
||||
.badge-danger[href]:hover,
|
||||
.badge-danger[href]:focus {
|
||||
background-color: darken($brand-danger, 5%);
|
||||
}
|
||||
.badge-rose[href]:hover,
|
||||
.badge-rose[href]:focus {
|
||||
background-color: darken($brand-rose, 5%);
|
||||
}
|
||||
219
resources/theme/material-dashboard/assets/scss/material-dashboard/_buttons.scss
vendored
Normal file
@@ -0,0 +1,219 @@
|
||||
.btn{
|
||||
position: relative;
|
||||
padding: 12px 30px;
|
||||
margin: $bmd-btn-margin-bottom 1px;
|
||||
font-size: .75rem; // 12px
|
||||
font-weight: 400;
|
||||
line-height: $bmd-line-height;
|
||||
text-decoration: none;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0;
|
||||
cursor: pointer;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
border-radius: $border-radius-sm;
|
||||
outline: 0;
|
||||
transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
will-change: box-shadow, transform;
|
||||
@include undo-bs-tab-focus();
|
||||
|
||||
//--
|
||||
// Colors
|
||||
@include bmd-raised-button-color();
|
||||
&.btn-white {
|
||||
&,
|
||||
&:focus,
|
||||
&:hover {
|
||||
background-color: $white-color;
|
||||
color: $gray-color;
|
||||
}
|
||||
&.btn-link {
|
||||
color: $white-color;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
&.btn-link:hover,
|
||||
&.btn-link:focus,
|
||||
&.btn-link:active {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
@include hover-focus();
|
||||
|
||||
//---
|
||||
// btn-raised
|
||||
&.btn-raised,
|
||||
.btn-group-raised & {
|
||||
// baseline shadow
|
||||
// @include box-shadow($bmd-shadow-2dp);
|
||||
|
||||
// reverse any of the above for links
|
||||
&.btn-link {
|
||||
box-shadow: none;
|
||||
@include bmd-hover-focus-active() {
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
@include bmd-disabled() {
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
//---
|
||||
// btn-outline
|
||||
@include bmd-outline-button-color();
|
||||
|
||||
// Size variations
|
||||
&.btn-lg,
|
||||
.btn-group-lg & {
|
||||
@include button-size($input-btn-padding-y-lg, $input-btn-padding-x-lg, $bmd-btn-font-size, $btn-lg-line-height, $border-radius-sm);
|
||||
}
|
||||
&.btn-sm,
|
||||
.btn-group-sm & {
|
||||
@include button-size($input-btn-padding-y-sm, $input-btn-padding-x-sm, $bmd-btn-font-size-sm, $line-height-sm, $border-radius-sm);
|
||||
}
|
||||
|
||||
&.btn-round {
|
||||
border-radius: $border-radius-extreme;
|
||||
}
|
||||
|
||||
&.btn-fab,
|
||||
&.btn-just-icon {
|
||||
// see above for color variations
|
||||
font-size: $mdb-btn-fab-font-size;
|
||||
height: $mdb-btn-fab-size;
|
||||
min-width: $mdb-btn-fab-size;
|
||||
width: $mdb-btn-fab-size;
|
||||
// margin: auto;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
line-height: $mdb-btn-fab-size;
|
||||
|
||||
&.btn-round{
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.btn-group-sm &,
|
||||
&.btn-sm,
|
||||
&.btn-fab-mini{
|
||||
height: $mdb-btn-fab-size-mini + 1;
|
||||
min-width: $mdb-btn-fab-size-mini + 1;
|
||||
width: $mdb-btn-fab-size-mini + 1;
|
||||
|
||||
.material-icons,
|
||||
.fa{
|
||||
font-size: $mdb-btn-icon-size-mini;
|
||||
line-height: $mdb-btn-fab-size-mini;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-group-lg &,
|
||||
&.btn-lg{
|
||||
height: $mdb-btn-fab-size-lg + 1;
|
||||
min-width: $mdb-btn-fab-size-lg + 1;
|
||||
width: $mdb-btn-fab-size-lg + 1;
|
||||
line-height: $mdb-btn-fab-size-lg;
|
||||
|
||||
.material-icons,
|
||||
.fa{
|
||||
font-size: $mdb-btn-icon-size;
|
||||
line-height: $mdb-btn-fab-size-lg;
|
||||
}
|
||||
}
|
||||
|
||||
.material-icons,
|
||||
.fa {
|
||||
margin-top: 0;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
transform: none;
|
||||
left: 0;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
|
||||
line-height: $mdb-btn-fab-size;
|
||||
font-size: $mdb-btn-just-icon-font-size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-just-icon{
|
||||
&.btn-lg{
|
||||
font-size: $mdb-btn-fab-font-size;
|
||||
height: $mdb-btn-fab-size;
|
||||
min-width: $mdb-btn-fab-size;
|
||||
width: $mdb-btn-fab-size;
|
||||
}
|
||||
}
|
||||
|
||||
.input-group-btn > .btn{
|
||||
border: 0;
|
||||
}
|
||||
|
||||
|
||||
// Align icons inside buttons with text
|
||||
.btn .material-icons,
|
||||
.btn:not(.btn-just-icon):not(.btn-fab) .fa{
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
top: 0;
|
||||
margin-top: -1em;
|
||||
margin-bottom: -1em;
|
||||
font-size: 1.1rem;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
// Disabled buttons and button groups
|
||||
.btn,
|
||||
.input-group-btn .btn,
|
||||
.btn-group,
|
||||
.btn-group-vertical {
|
||||
// have to ratchet up the specificity to kill drop shadows on disabled raised buttons
|
||||
@include bmd-disabled() {
|
||||
.bg-inverse & {
|
||||
color: $bmd-inverse-btn-disabled;
|
||||
}
|
||||
|
||||
// flat buttons shouldn't lose transparency on disabled hover/focus
|
||||
}
|
||||
}
|
||||
|
||||
// btn-group variations
|
||||
.btn-group,
|
||||
.btn-group-vertical {
|
||||
position: relative;
|
||||
margin: 10px 1px;
|
||||
|
||||
// spec: https://www.google.com/design/spec/components/buttons.html#buttons-toggle-buttons
|
||||
//&.open {
|
||||
// .dropdown-toggle {
|
||||
// }
|
||||
//
|
||||
// > .dropdown-toggle.btn {
|
||||
// @include bmd-raised-button-color-bg();
|
||||
// }
|
||||
//}
|
||||
|
||||
.dropdown-menu {
|
||||
border-radius: 0 0 $border-radius $border-radius;
|
||||
}
|
||||
|
||||
&.btn-group-raised {
|
||||
@include box-shadow($bmd-shadow-2dp);
|
||||
}
|
||||
|
||||
.btn + .btn,
|
||||
.btn,
|
||||
.btn:active,
|
||||
.btn-group {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
// remove margin from nested btn-group(s) to properly align them with the outer buttons
|
||||
> .btn-group {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
661
resources/theme/material-dashboard/assets/scss/material-dashboard/_cards.scss
vendored
Normal file
@@ -0,0 +1,661 @@
|
||||
//https://www.google.com/design/spec/components/cards.html#cards-content-blocks
|
||||
// Card resting elevation: 2dp
|
||||
.card {
|
||||
border: 0;
|
||||
margin-bottom: 30px;
|
||||
margin-top: 30px;
|
||||
border-radius: $border-radius-large;
|
||||
color: $gray-dark;
|
||||
background: $white-color;
|
||||
width: 100%;
|
||||
|
||||
.card-category:not([class*="text-"]) {
|
||||
color: $gray-color;
|
||||
}
|
||||
.card-category{
|
||||
margin-top: 10px;
|
||||
|
||||
.material-icons{
|
||||
position: relative;
|
||||
top: 8px;
|
||||
line-height: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.form-check {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.card-title{
|
||||
margin-top: 0.625rem;
|
||||
|
||||
&:last-child{
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Cards have a default elevation of 2dp.
|
||||
@include box-shadow($bmd-shadow-2dp);
|
||||
@extend %std-font;
|
||||
|
||||
|
||||
&.no-shadow {
|
||||
.card-header-image,
|
||||
.card-header-image img {
|
||||
box-shadow: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.card-body,
|
||||
.card-footer {
|
||||
padding: $padding-card-body-y $padding-card-body-x;
|
||||
}
|
||||
|
||||
.card-body {
|
||||
& + .card-footer{
|
||||
padding-top: 0rem;
|
||||
border: 0;
|
||||
border-radius: $border-radius-large;
|
||||
}
|
||||
}
|
||||
|
||||
.card-footer {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
|
||||
.author,
|
||||
.stats {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.stats {
|
||||
color: $gray-color;
|
||||
|
||||
.material-icons {
|
||||
position: relative;
|
||||
top: -10px;
|
||||
margin-right: 3px;
|
||||
margin-left: 3px;
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.bmd-card-raised {
|
||||
// Card raised elevation: 8dp
|
||||
@include box-shadow($bmd-shadow-8dp);
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
// On desktop, cards can have a resting elevation of 0dp and gain an elevation of 8dp on hover.
|
||||
&.bmd-card-flat {
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
.card-header {
|
||||
border-bottom: none;
|
||||
background: transparent;
|
||||
.title{
|
||||
color: $white-color;
|
||||
}
|
||||
|
||||
&:not([class*="card-header-"]){
|
||||
// @include shadow-big();
|
||||
}
|
||||
|
||||
.nav-tabs {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
&.card-header-image {
|
||||
position: relative;
|
||||
padding: 0;
|
||||
z-index: 1;
|
||||
margin-left: 15px;
|
||||
margin-right: 15px;
|
||||
margin-top: -30px;
|
||||
border-radius: $border-radius-large;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
border-radius: $border-radius-large;
|
||||
pointer-events: none;
|
||||
@include shadow-big-image();
|
||||
}
|
||||
.card-title {
|
||||
position: absolute;
|
||||
bottom: 15px;
|
||||
left: 15px;
|
||||
color: $white-color;
|
||||
font-size: $font-size-h4;
|
||||
text-shadow: 0 2px 5px rgba(33, 33, 33, 0.5);
|
||||
}
|
||||
|
||||
.colored-shadow{
|
||||
transform: scale(0.94);
|
||||
top: 12px;
|
||||
filter: blur(12px);
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-size: cover;
|
||||
z-index: -1;
|
||||
transition: opacity .45s;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
&.no-shadow{
|
||||
box-shadow: none;
|
||||
|
||||
&.shadow-normal{
|
||||
@include shadow-big();
|
||||
}
|
||||
|
||||
.colored-shadow{
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-header-primary .card-icon,
|
||||
.card-header-primary .card-text,
|
||||
.card-header-primary:not(.card-header-icon):not(.card-header-text),
|
||||
&.bg-primary,
|
||||
&.card-rotate.bg-primary .front,
|
||||
&.card-rotate.bg-primary .back{
|
||||
background: linear-gradient(60deg, $blue-400, $blue-600);
|
||||
}
|
||||
.card-header-info .card-icon,
|
||||
.card-header-info .card-text,
|
||||
.card-header-info:not(.card-header-icon):not(.card-header-text),
|
||||
&.bg-info,
|
||||
&.card-rotate.bg-info .front,
|
||||
&.card-rotate.bg-info .back{
|
||||
background: linear-gradient(60deg, $cyan-400, $cyan-600);
|
||||
}
|
||||
.card-header-success .card-icon,
|
||||
.card-header-success .card-text,
|
||||
.card-header-success:not(.card-header-icon):not(.card-header-text),
|
||||
&.bg-success,
|
||||
&.card-rotate.bg-success .front,
|
||||
&.card-rotate.bg-success .back{
|
||||
background: linear-gradient(60deg, $green-400, $green-600);
|
||||
}
|
||||
.card-header-warning .card-icon,
|
||||
.card-header-warning .card-text,
|
||||
.card-header-warning:not(.card-header-icon):not(.card-header-text),
|
||||
&.bg-warning,
|
||||
&.card-rotate.bg-warning .front,
|
||||
&.card-rotate.bg-warning .back{
|
||||
background: linear-gradient(60deg, $orange-400, $orange-600);
|
||||
}
|
||||
.card-header-danger .card-icon,
|
||||
.card-header-danger .card-text,
|
||||
.card-header-danger:not(.card-header-icon):not(.card-header-text),
|
||||
&.bg-danger,
|
||||
&.card-rotate.bg-danger .front,
|
||||
&.card-rotate.bg-danger .back{
|
||||
background: linear-gradient(60deg, $red-400, $red-600);
|
||||
}
|
||||
|
||||
.card-header-rose .card-icon,
|
||||
.card-header-rose .card-text,
|
||||
.card-header-rose:not(.card-header-icon):not(.card-header-text),
|
||||
&.bg-rose,
|
||||
&.card-rotate.bg-rose .front,
|
||||
&.card-rotate.bg-rose .back{
|
||||
background: linear-gradient(60deg, $pink-400, $pink-600);
|
||||
}
|
||||
|
||||
.card-header-primary .card-icon,
|
||||
.card-header-primary:not(.card-header-icon):not(.card-header-text),
|
||||
.card-header-primary .card-text{
|
||||
@include shadow-big-color($brand-primary);
|
||||
|
||||
//@include shadow-8dp-color($brand-primary);
|
||||
//@include shadow-16dp-color($brand-primary);
|
||||
}
|
||||
.card-header-danger .card-icon,
|
||||
.card-header-danger:not(.card-header-icon):not(.card-header-text),
|
||||
.card-header-danger .card-text{
|
||||
@include shadow-big-color($brand-danger);
|
||||
}
|
||||
|
||||
.card-header-rose .card-icon,
|
||||
.card-header-rose:not(.card-header-icon):not(.card-header-text),
|
||||
.card-header-rose .card-text{
|
||||
@include shadow-big-color($brand-rose);
|
||||
}
|
||||
|
||||
.card-header-warning .card-icon,
|
||||
.card-header-warning:not(.card-header-icon):not(.card-header-text),
|
||||
.card-header-warning .card-text{
|
||||
@include shadow-big-color($brand-warning);
|
||||
}
|
||||
|
||||
.card-header-info .card-icon,
|
||||
.card-header-info:not(.card-header-icon):not(.card-header-text),
|
||||
.card-header-info .card-text{
|
||||
@include shadow-big-color($brand-info);
|
||||
}
|
||||
|
||||
.card-header-success .card-icon,
|
||||
.card-header-success:not(.card-header-icon):not(.card-header-text),
|
||||
.card-header-success .card-text{
|
||||
@include shadow-big-color($brand-success);
|
||||
}
|
||||
|
||||
[class*="card-header-"],
|
||||
&[class*="bg-"]{
|
||||
color: $white-color;
|
||||
|
||||
.card-title a,
|
||||
.card-title,
|
||||
.icon i{
|
||||
color: $white-color;
|
||||
}
|
||||
|
||||
.icon i{
|
||||
border-color: rgba(255, 255, 255, 0.25);
|
||||
}
|
||||
.author a,
|
||||
.stats,
|
||||
.card-category,
|
||||
.card-description{
|
||||
color: $white-transparent;
|
||||
}
|
||||
|
||||
.author a{
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active{
|
||||
color: $white-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.author{
|
||||
.avatar{
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
overflow: hidden;
|
||||
border-radius: 50%;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
a{
|
||||
color: $black-color;
|
||||
text-decoration: none;
|
||||
|
||||
.ripple-container{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-category-social{
|
||||
.fa{
|
||||
font-size: 24px;
|
||||
position: relative;
|
||||
margin-top: -4px;
|
||||
top: 2px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.material-icons{
|
||||
position: relative;
|
||||
top: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
&[class*="bg-"],
|
||||
&[class*="bg-"] .card-body{
|
||||
border-radius: $border-radius-large;
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3{
|
||||
small{
|
||||
color: $white-transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-stats{
|
||||
background: transparent;
|
||||
display: flex;
|
||||
|
||||
.author,
|
||||
.stats{
|
||||
display: inline-flex;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card {
|
||||
box-shadow: 0 1px 4px 0 rgba(0,0,0,0.14);
|
||||
|
||||
.table tr:first-child td{
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.card-title{
|
||||
margin-top: 0;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.card-body{
|
||||
padding: $padding-card-body-y 20px;
|
||||
position: relative;
|
||||
|
||||
.form-group {
|
||||
margin: 8px 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
.card-header {
|
||||
z-index: 3 !important;
|
||||
|
||||
.card-title{
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.card-category{
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
&.card-header-text {
|
||||
display: inline-block;
|
||||
|
||||
&:after {
|
||||
content: "";
|
||||
display: table;
|
||||
}
|
||||
}
|
||||
|
||||
&.card-header-icon,
|
||||
&.card-header-text {
|
||||
i {
|
||||
width: 33px;
|
||||
height: 33px;
|
||||
text-align: center;
|
||||
line-height: 33px;
|
||||
}
|
||||
.card-title{
|
||||
margin-top: 15px;
|
||||
color: $black-color;
|
||||
}
|
||||
h4{
|
||||
font-weight: 300;
|
||||
}
|
||||
}
|
||||
|
||||
&.card-header-tabs {
|
||||
.nav-tabs {
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
}
|
||||
.nav-tabs-title {
|
||||
float: left;
|
||||
padding: 10px 10px 10px 0;
|
||||
line-height: 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.card-plain {
|
||||
.card-header {
|
||||
&.card-header-icon + .card-body .card-title,
|
||||
&.card-header-icon + .card-body .card-category {
|
||||
margin-top: -20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-actions {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
top: -50px;
|
||||
width: calc(100% - 30px);
|
||||
left: 17px;
|
||||
right: 17px;
|
||||
text-align: center;
|
||||
|
||||
.card-header{
|
||||
padding: 0;
|
||||
min-height: 160px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding-left: 12px;
|
||||
padding-right: 12px;
|
||||
}
|
||||
.fix-broken-card {
|
||||
position: absolute;
|
||||
top: -65px;
|
||||
}
|
||||
}
|
||||
|
||||
&.card-chart {
|
||||
.card-footer i:nth-child(1n+2){
|
||||
width: 18px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.card-category{
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.card-body + .card-footer,
|
||||
.card-footer{
|
||||
padding: 0;
|
||||
padding-top: 10px;
|
||||
margin: 0 15px 10px;
|
||||
border-radius: 0;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
h6 {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.stats{
|
||||
color: #999999;
|
||||
font-size: 12px;
|
||||
line-height: 22px;
|
||||
|
||||
.card-category{
|
||||
padding-top: 7px;
|
||||
padding-bottom: 7px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.material-icons{
|
||||
position: relative;
|
||||
top: 4px;
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
[class*="card-header-"] {
|
||||
margin: 0px 15px 0;
|
||||
padding: 0;
|
||||
|
||||
.card-title + .card-category{
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
a {
|
||||
color: $white-color;
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.card-header-icon):not(.card-header-text):not(.card-header-image){
|
||||
border-radius: $border-radius-base;
|
||||
margin-top: -20px;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.card-icon,
|
||||
.card-text{
|
||||
border-radius: $border-radius-base;
|
||||
background-color: $gray-color;
|
||||
padding: 15px;
|
||||
margin-top: -20px;
|
||||
margin-right: 15px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.card-text{
|
||||
float: none;
|
||||
display: inline-block;
|
||||
margin-right: 0;
|
||||
|
||||
.card-title{
|
||||
color: $white-color;
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
position: relative;
|
||||
|
||||
.ct-chart{
|
||||
.card-title{
|
||||
color: $white-color;
|
||||
}
|
||||
.card-category{
|
||||
margin-bottom: 0;
|
||||
color: rgba($white-color, .62);
|
||||
}
|
||||
|
||||
.ct-label{
|
||||
color: rgba($white-color, .7);
|
||||
}
|
||||
.ct-grid{
|
||||
stroke: rgba(255, 255, 255, 0.2);
|
||||
}
|
||||
.ct-series-a .ct-point,
|
||||
.ct-series-a .ct-line,
|
||||
.ct-series-a .ct-bar,
|
||||
.ct-series-a .ct-slice-donut{
|
||||
stroke: rgba(255,255,255,.8);
|
||||
}
|
||||
.ct-series-a .ct-slice-pie,
|
||||
.ct-series-a .ct-area{
|
||||
fill: rgba(255,255,255,.4);
|
||||
}
|
||||
.ct-series-a .ct-bar{
|
||||
stroke-width: 10px;
|
||||
}
|
||||
.ct-point{
|
||||
stroke-width: 10px;
|
||||
stroke-linecap: round;
|
||||
}
|
||||
.ct-line{
|
||||
fill: none;
|
||||
stroke-width: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[data-header-animation="true"] {
|
||||
@include transform-translate-y(0);
|
||||
-webkit-transition: all 300ms cubic-bezier(0.34, 1.61, 0.7, 1);
|
||||
-moz-transition: all 300ms cubic-bezier(0.34, 1.61, 0.7, 1);
|
||||
-o-transition: all 300ms cubic-bezier(0.34, 1.61, 0.7, 1);
|
||||
-ms-transition: all 300ms cubic-bezier(0.34, 1.61, 0.7, 1);
|
||||
transition: all 300ms cubic-bezier(0.34, 1.61, 0.7, 1);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
[data-header-animation="true"]{
|
||||
@include transform-translate-y(-50px);
|
||||
}
|
||||
}
|
||||
|
||||
.map {
|
||||
height: 280px;
|
||||
border-radius: $border-radius-large;
|
||||
margin-top: 15px;
|
||||
|
||||
&.map-big{
|
||||
height: 420px;
|
||||
}
|
||||
}
|
||||
|
||||
.card-body.table-full-width{
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.card-plain .card-header-icon {
|
||||
margin-right: 15px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.table-sales{
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.iframe-container {
|
||||
width: 100%;
|
||||
|
||||
iframe {
|
||||
width: 100%;
|
||||
height: 500px;
|
||||
border: 0;
|
||||
@include shadow-big();
|
||||
}
|
||||
}
|
||||
|
||||
.card-wizard {
|
||||
.nav.nav-pills {
|
||||
.nav-item {
|
||||
margin: 0;
|
||||
|
||||
.nav-link {
|
||||
padding: 6px 15px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
.nav-pills:not(.flex-column) .nav-item + .nav-item:not(:first-child) {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.nav-item .nav-link.active,
|
||||
.nav-item .nav-link:hover,
|
||||
.nav-item .nav-link:focus {
|
||||
background-color: inherit !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
.input-group-text {
|
||||
padding: 6px 15px 0px !important;
|
||||
}
|
||||
.card-footer {
|
||||
border-top: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.card-chart,
|
||||
.card-product {
|
||||
.card-body + .card-footer {
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
}
|
||||
|
||||
.card-product{
|
||||
.price{
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
.card-collapse {
|
||||
margin-bottom: 15px;
|
||||
|
||||
.card .card-header a[aria-expanded="true"]{
|
||||
color: #e91e63;
|
||||
}
|
||||
}
|
||||
210
resources/theme/material-dashboard/assets/scss/material-dashboard/_checkboxes.scss
vendored
Normal file
@@ -0,0 +1,210 @@
|
||||
.form-check {
|
||||
margin-bottom: .5rem;
|
||||
padding-left: 0;
|
||||
|
||||
.form-check-label {
|
||||
cursor: pointer;
|
||||
padding-left: 0; // Reset for Bootstrap rule
|
||||
// color: $mdb-checkbox-label-color;
|
||||
@include mdb-label-color-toggle-focus();
|
||||
}
|
||||
|
||||
// Hide native checkbox
|
||||
.form-check-input {
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
margin: 0;
|
||||
z-index: -1;
|
||||
width: 0;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
left: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.form-check-sign {
|
||||
vertical-align: middle;
|
||||
position: relative;
|
||||
top: -2px;
|
||||
float: left;
|
||||
padding-right: 10px;
|
||||
display: inline-block;
|
||||
|
||||
&:before {
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
content: "";
|
||||
background-color: rgba(0,0,0,.84);
|
||||
height: $mdb-checkbox-size;
|
||||
width: $mdb-checkbox-size;
|
||||
border-radius: 100%;
|
||||
z-index: 1;
|
||||
opacity: 0;
|
||||
margin: 0;
|
||||
top: 0;
|
||||
@include transform-scale3d(unquote('2.3,2.3,1'));
|
||||
}
|
||||
|
||||
.check {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: $mdb-checkbox-size;
|
||||
height: $mdb-checkbox-size;
|
||||
border: 1px solid $mdb-checkbox-border-color;
|
||||
overflow: hidden;
|
||||
z-index: 1;
|
||||
border-radius: $border-radius-base;
|
||||
|
||||
&:before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
transform: rotate(45deg);
|
||||
display: block;
|
||||
margin-top: -3px;
|
||||
margin-left: 7px;
|
||||
width: 0;
|
||||
color: $white-color;
|
||||
height: 0;
|
||||
box-shadow:
|
||||
0 0 0 0,
|
||||
0 0 0 0,
|
||||
0 0 0 0,
|
||||
0 0 0 0,
|
||||
0 0 0 0,
|
||||
0 0 0 0,
|
||||
0 0 0 0 inset;
|
||||
animation: checkboxOff $mdb-checkbox-animation-check forwards;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.form-check-input{
|
||||
|
||||
&:focus + .form-check-sign .check:after {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
&:checked {
|
||||
& + .form-check-sign .check {
|
||||
background: $mdb-checkbox-checked-color;
|
||||
}
|
||||
|
||||
& + .form-check-sign .check:before {
|
||||
color: #FFFFFF;
|
||||
box-shadow: 0 0 0 10px,
|
||||
10px -10px 0 10px,
|
||||
32px 0 0 20px,
|
||||
0px 32px 0 20px,
|
||||
-5px 5px 0 10px,
|
||||
20px -12px 0 11px;
|
||||
animation: checkboxOn $mdb-checkbox-animation-check forwards;
|
||||
}
|
||||
|
||||
& + .form-check-sign:before {
|
||||
animation: rippleOn $mdb-checkbox-animation-ripple;
|
||||
}
|
||||
|
||||
& + .form-check-sign .check:after {
|
||||
//background-color: $brand-success; // FIXME: seems like tho wrong color, test and make sure it can be removed
|
||||
animation: rippleOn $mdb-checkbox-animation-ripple forwards;
|
||||
}
|
||||
}
|
||||
|
||||
&:not(:checked) {
|
||||
& + .form-check-sign:before {
|
||||
animation: rippleOff $mdb-checkbox-animation-ripple;
|
||||
}
|
||||
|
||||
& + .form-check-sign .check:after {
|
||||
animation: rippleOff $mdb-checkbox-animation-ripple; // Ripple effect on uncheck
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
.rtl {
|
||||
.form-check {
|
||||
.form-check-sign {
|
||||
.check::before{
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Style for disabled inputs
|
||||
fieldset[disabled] &,
|
||||
fieldset[disabled] & .form-check-input,
|
||||
.form-check-input[disabled] ~ .form-check-sign .check,
|
||||
.form-check-input[disabled] + .circle {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.form-check-input[disabled] ~ .form-check-sign .check{
|
||||
border-color: #000000;
|
||||
opacity: .26;
|
||||
}
|
||||
|
||||
.form-check-input[disabled] + .form-check-sign .check:after {
|
||||
background-color: $mdb-text-color-primary;
|
||||
transform: rotate(-45deg);
|
||||
}
|
||||
|
||||
.form-check-input[disabled][checked] + .form-check-sign .check{
|
||||
background-color: $black;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes checkboxOn {
|
||||
0% {
|
||||
box-shadow:
|
||||
0 0 0 10px,
|
||||
10px -10px 0 10px,
|
||||
32px 0 0 20px,
|
||||
0px 32px 0 20px,
|
||||
-5px 5px 0 10px,
|
||||
15px 2px 0 11px;
|
||||
}
|
||||
50% {
|
||||
box-shadow:
|
||||
0 0 0 10px,
|
||||
10px -10px 0 10px,
|
||||
32px 0 0 20px,
|
||||
0px 32px 0 20px,
|
||||
-5px 5px 0 10px,
|
||||
20px 2px 0 11px;
|
||||
}
|
||||
100% {
|
||||
box-shadow:
|
||||
0 0 0 10px,
|
||||
10px -10px 0 10px,
|
||||
32px 0 0 20px,
|
||||
0px 32px 0 20px,
|
||||
-5px 5px 0 10px,
|
||||
20px -12px 0 11px;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes rippleOn {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
50% {
|
||||
opacity: 0.2;
|
||||
}
|
||||
100% {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
@keyframes rippleOff {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
50% {
|
||||
opacity: 0.2;
|
||||
}
|
||||
100% {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
66
resources/theme/material-dashboard/assets/scss/material-dashboard/_core-bootstrap.scss
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
// FIXME: only necessary because there isn't an underscored file - see https://github.com/twbs/bootstrap/issues/18350
|
||||
//@import "../bower_components/bootstrap/scss/
|
||||
//@import "../../bootstrap/scss/
|
||||
|
||||
// Core variables and mixins
|
||||
@import "./bootstrap/scss/functions";
|
||||
@import "./bootstrap/scss/variables";
|
||||
@import "./bootstrap/scss/mixins";
|
||||
|
||||
// #853 start - https://github.com/twbs/bootstrap/pull/18976/files
|
||||
// hack
|
||||
@mixin pull-left {
|
||||
float: left !important;
|
||||
@if $enable-flex {
|
||||
margin-right: auto;
|
||||
}
|
||||
}
|
||||
@mixin pull-right {
|
||||
float: right !important;
|
||||
@if $enable-flex {
|
||||
margin-left: auto;
|
||||
}
|
||||
}
|
||||
// #853 end - https://github.com/twbs/bootstrap/pull/18976/files
|
||||
|
||||
// Reset and dependencies
|
||||
@import "./bootstrap/scss/reboot";
|
||||
@import "./bootstrap/scss/print";
|
||||
|
||||
// Core CSS
|
||||
@import "./bootstrap/scss/reboot";
|
||||
@import "./bootstrap/scss/type";
|
||||
@import "./bootstrap/scss/images";
|
||||
@import "./bootstrap/scss/code";
|
||||
@import "./bootstrap/scss/grid";
|
||||
@import "./bootstrap/scss/tables";
|
||||
@import "./bootstrap/scss/forms";
|
||||
@import "./bootstrap/scss/buttons";
|
||||
@import "./bootstrap/scss/transitions";
|
||||
|
||||
// Components
|
||||
@import "./bootstrap/scss/dropdown";
|
||||
@import "./bootstrap/scss/button-group";
|
||||
@import "./bootstrap/scss/input-group";
|
||||
@import "./bootstrap/scss/custom-forms";
|
||||
@import "./bootstrap/scss/nav";
|
||||
@import "./bootstrap/scss/navbar";
|
||||
@import "./bootstrap/scss/card";
|
||||
@import "./bootstrap/scss/breadcrumb";
|
||||
@import "./bootstrap/scss/pagination";
|
||||
@import "./bootstrap/scss/jumbotron";
|
||||
@import "./bootstrap/scss/alert";
|
||||
@import "./bootstrap/scss/progress";
|
||||
@import "./bootstrap/scss/media";
|
||||
@import "./bootstrap/scss/list-group";
|
||||
@import "./bootstrap/scss/close";
|
||||
@import "./bootstrap/scss/badge";
|
||||
|
||||
// Components w/ JavaScript
|
||||
@import "./bootstrap/scss/modal";
|
||||
@import "./bootstrap/scss/tooltip";
|
||||
@import "./bootstrap/scss/popover";
|
||||
@import "./bootstrap/scss/carousel";
|
||||
|
||||
// Utility classes
|
||||
@import "./bootstrap/scss/utilities";
|
||||
209
resources/theme/material-dashboard/assets/scss/material-dashboard/_dropdown.scss
vendored
Normal file
@@ -0,0 +1,209 @@
|
||||
// Menus https://www.google.com/design/spec/components/menus.html#menus-specs
|
||||
// Dropdown buttons (mobile and desktop) https://www.google.com/design/spec/components/buttons.html#buttons-dropdown-buttons
|
||||
|
||||
.dropdown-menu {
|
||||
display: none;
|
||||
padding: $bmd-dropdown-margin-y 0;
|
||||
border: 0;
|
||||
opacity: 0;
|
||||
transform: scale(0);
|
||||
transform-origin: 0 0;
|
||||
will-change: transform, opacity;
|
||||
transition: transform $bmd-menu-expand-duration $bmd-animation-curve-default,
|
||||
opacity $bmd-menu-fade-duration $bmd-animation-curve-default;
|
||||
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
|
||||
|
||||
&.showing {
|
||||
animation-name: bmd-dropdown-animation;
|
||||
animation-duration: $bmd-menu-expand-duration;
|
||||
animation-fill-mode: forwards;
|
||||
animation-timing-function: $bmd-animation-curve-default;
|
||||
}
|
||||
|
||||
.open > &,
|
||||
&.show {
|
||||
display: block;
|
||||
opacity: 1;
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
&.hiding {
|
||||
display: block;
|
||||
opacity: 0;
|
||||
transform: scale(0);
|
||||
}
|
||||
|
||||
&[x-placement="bottom-start"] {
|
||||
transform-origin: 0 0;
|
||||
}
|
||||
|
||||
&[x-placement="bottom-end"] {
|
||||
transform-origin: 100% 0;
|
||||
}
|
||||
|
||||
&[x-placement="top-start"] {
|
||||
transform-origin: 0 100%;
|
||||
}
|
||||
|
||||
&[x-placement="top-end"] {
|
||||
transform-origin: 100% 100%;
|
||||
}
|
||||
|
||||
.disabled > a{
|
||||
color: $bmd-dropdown-header-color;
|
||||
|
||||
&:focus,
|
||||
&:hover{
|
||||
text-decoration: none;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
color: $bmd-dropdown-header-color;
|
||||
}
|
||||
}
|
||||
|
||||
&.dropdown-with-icons .dropdown-item{
|
||||
padding: $dropdown-item-padding-y + 0.125 $dropdown-item-padding-x $dropdown-item-padding-y + 0.125 $dropdown-item-padding-y + 0.125;
|
||||
|
||||
& .material-icons{
|
||||
vertical-align: middle;
|
||||
font-size: 24px;
|
||||
position: relative;
|
||||
margin-top: -4px;
|
||||
top: 1px;
|
||||
margin-right: 12px;
|
||||
opacity: .5;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// https://www.google.com/design/spec/components/menus.html#menus-specs
|
||||
.dropdown-item,
|
||||
li > a{ // used to properly size the ripple container
|
||||
position: relative;
|
||||
width: auto;
|
||||
display: flex;
|
||||
flex-flow: nowrap;
|
||||
align-items: center;
|
||||
color: $bmd-dropdown-link-color;
|
||||
font-weight: normal;
|
||||
text-decoration: none;
|
||||
font-size: .8125rem;
|
||||
border-radius: $border-radius / 2;
|
||||
margin: 0 $bmd-dropdown-margin-y;
|
||||
@include transitions($fast-transition-time, $transition-linear);
|
||||
min-width: $bmd-menu-item-min-width;
|
||||
padding: $dropdown-item-padding-y $dropdown-item-padding-x;
|
||||
overflow: hidden;
|
||||
line-height: $bmd-line-height;
|
||||
text-overflow: ellipsis;
|
||||
word-wrap: break-word;
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
padding-right: $bmd-menu-item-padding-right-md;
|
||||
padding-left: $bmd-menu-item-padding-left-md;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-item:hover,
|
||||
.dropdown-item:focus,
|
||||
a:hover,
|
||||
a:focus,
|
||||
a:active {
|
||||
@include shadow-small-color($brand-primary);
|
||||
background-color: $brand-primary;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
a[data-toggle="collapse"][aria-expanded="true"] .caret,
|
||||
a[aria-expanded="true"] .caret,
|
||||
.dropdown.open .caret,
|
||||
.dropup.open .caret,
|
||||
.btn-group.bootstrap-select.open .caret {
|
||||
@include rotate-180();
|
||||
}
|
||||
|
||||
|
||||
// this could be in a .btn-group or .dropdown
|
||||
.dropdown-toggle {
|
||||
&.bmd-btn-icon,
|
||||
&.bmd-btn-fab {
|
||||
// remove the dropdown icon
|
||||
&::after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
~ .dropdown-menu {
|
||||
&.dropdown-menu-top-left,
|
||||
&.dropdown-menu-top-right {
|
||||
bottom: $bmd-btn-icon-size; // push up the bottom of the menu the height of the button
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:after{
|
||||
will-change: transform;
|
||||
transition: transform $bmd-animation-dropdown-caret linear;
|
||||
}
|
||||
|
||||
&.bmd-btn-fab-sm {
|
||||
~ .dropdown-menu {
|
||||
&.dropdown-menu-top-left,
|
||||
&.dropdown-menu-top-right {
|
||||
bottom: $bmd-btn-fab-size-sm; // push up the bottom of the menu the height of the button
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.bmd-btn-icon {
|
||||
~ .dropdown-menu {
|
||||
// collapse some spacing
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.show > &:not(.dropdown-item):after {
|
||||
@include rotate-180();
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-header{
|
||||
font-size: 0.75rem;
|
||||
padding-top: .625rem;
|
||||
padding-bottom: .625rem;;
|
||||
text-transform: none;
|
||||
color: $bmd-dropdown-header-color;
|
||||
line-height: $bmd-line-height;
|
||||
font-weight: inherit;
|
||||
}
|
||||
|
||||
@keyframes bmd-dropdown-animation {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: scale(0);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu.bootstrap-datetimepicker-widget{
|
||||
opacity: 0;
|
||||
transform: scale(0);
|
||||
transition-duration: $bmd-menu-expand-duration;
|
||||
transition-timing-function: $bmd-animation-curve-default;
|
||||
transform-origin: 0 0;
|
||||
will-change: transform, opacity;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.dropdown-menu.bootstrap-datetimepicker-widget.top{
|
||||
transform-origin: 0 100%;
|
||||
}
|
||||
|
||||
.dropdown-menu.bootstrap-datetimepicker-widget.open{
|
||||
opacity: 1;
|
||||
transform: scale(1);
|
||||
top: 0;
|
||||
}
|
||||
86
resources/theme/material-dashboard/assets/scss/material-dashboard/_example-pages.scss
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
.card-signup {
|
||||
.card-header {
|
||||
.social-line {
|
||||
.btn {
|
||||
color: $white-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
.text-divider {
|
||||
margin-top: 30px;
|
||||
margin-bottom: 0px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.login-page {
|
||||
.card-login {
|
||||
.card-header {
|
||||
margin-top: -40px !important;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.social-line {
|
||||
padding: 0;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.card-title {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.signup-page {
|
||||
.page-header {
|
||||
.container{
|
||||
padding-top: 20vh;
|
||||
}
|
||||
}
|
||||
|
||||
.card-signup {
|
||||
border-radius: $border-radius-base * 2;
|
||||
@include shadow-16dp();
|
||||
margin-bottom: 100px;
|
||||
padding: 40px 0px;
|
||||
|
||||
}
|
||||
.info-horizontal {
|
||||
padding: 0px 0px 20px;
|
||||
}
|
||||
|
||||
.social {
|
||||
.btn {
|
||||
margin: 5px;
|
||||
}
|
||||
h4 {
|
||||
margin-top: 20px;
|
||||
}
|
||||
}
|
||||
.footer {
|
||||
.container {
|
||||
padding: 0;
|
||||
}
|
||||
.copyright,
|
||||
a{
|
||||
color: $white-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.register-page {
|
||||
.page-header{
|
||||
background-position: top center;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (max-width: 991px) {
|
||||
.page-header {
|
||||
&.pricing-page,
|
||||
&.register-page{
|
||||
min-height: fit-content !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
334
resources/theme/material-dashboard/assets/scss/material-dashboard/_fixed-plugin.scss
vendored
Normal file
@@ -0,0 +1,334 @@
|
||||
.fixed-plugin{
|
||||
.dropdown{
|
||||
.dropdown-menu{
|
||||
border-radius: 10px;
|
||||
li.adjustments-line{
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
li{
|
||||
padding: 5px 2px !important;
|
||||
}
|
||||
.adjustments-line{
|
||||
.bootstrap-switch{
|
||||
position: absolute;
|
||||
right: 10px !important;
|
||||
}
|
||||
label{
|
||||
margin-bottom: .1rem !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
position: relative;
|
||||
padding: 12px 30px;
|
||||
margin: .6rem 1px;
|
||||
font-size: .75rem; // 12px
|
||||
border-radius: $border-radius-sm;
|
||||
transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
will-change: box-shadow, transform;
|
||||
|
||||
@include bmd-raised-button-color();
|
||||
@include undo-bs-tab-focus();
|
||||
|
||||
&.btn-round {
|
||||
border-radius: $border-radius-extreme;
|
||||
}
|
||||
}
|
||||
|
||||
.button-container .btn:not(.btn-facebook):not(.btn-twitter) {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.button-container.github-star{
|
||||
margin-left: 100px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.fixed-plugin li > a,
|
||||
.fixed-plugin .badge{
|
||||
transition: all .34s;
|
||||
-webkit-transition: all .34s;
|
||||
-moz-transition: all .34s;
|
||||
}
|
||||
|
||||
.fixed-plugin{
|
||||
position: fixed;
|
||||
top: 115px;
|
||||
right: 0;
|
||||
width: 64px;
|
||||
background: rgba(0,0,0,.3);
|
||||
z-index: 1031;
|
||||
border-radius: 8px 0 0 8px;
|
||||
text-align: center;
|
||||
}
|
||||
.fixed-plugin .fa-cog{
|
||||
color: #FFFFFF;
|
||||
padding: 10px;
|
||||
border-radius: 0 0 6px 6px;
|
||||
width: auto;
|
||||
}
|
||||
.fixed-plugin .dropdown-menu{
|
||||
right: 80px;
|
||||
left: auto;
|
||||
width: 290px;
|
||||
border-radius: 0.1875rem;
|
||||
padding: 0 10px;
|
||||
}
|
||||
.fixed-plugin .dropdown-menu:after, .fixed-plugin .dropdown-menu:before{
|
||||
right: 10px;
|
||||
margin-left: auto;
|
||||
left: auto;
|
||||
}
|
||||
.fixed-plugin .fa-circle-thin{
|
||||
color: #FFFFFF;
|
||||
}
|
||||
.fixed-plugin .active .fa-circle-thin{
|
||||
color: #00bbff;
|
||||
}
|
||||
|
||||
.fixed-plugin .dropdown-menu > .active > a,
|
||||
.fixed-plugin .dropdown-menu > .active > a:hover,
|
||||
.fixed-plugin .dropdown-menu > .active > a:focus{
|
||||
color: #777777;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fixed-plugin img{
|
||||
border-radius: 0;
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.fixed-plugin .dropdown-menu li > a:hover,
|
||||
.fixed-plugin .dropdown-menu li > a:focus{
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.fixed-plugin .badge{
|
||||
border: 3px solid #FFFFFF;
|
||||
border-radius: 50%;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
height: 23px;
|
||||
margin-right: 5px;
|
||||
position: relative;
|
||||
width: 23px;
|
||||
padding: 8px;
|
||||
}
|
||||
.fixed-plugin .badge.active,
|
||||
.fixed-plugin .badge:hover{
|
||||
border-color: #00bbff;
|
||||
}
|
||||
|
||||
.fixed-plugin .badge-black{
|
||||
background-color: #000;
|
||||
}
|
||||
.fixed-plugin .badge-azure{
|
||||
background-color: #2CA8FF;
|
||||
}
|
||||
.fixed-plugin .badge-green{
|
||||
background-color: #18ce0f;
|
||||
}
|
||||
.fixed-plugin .badge-orange{
|
||||
background-color: #f96332;
|
||||
}
|
||||
.fixed-plugin .badge-yellow{
|
||||
background-color: #FFB236;
|
||||
}
|
||||
.fixed-plugin .badge-danger{
|
||||
background-color: #f44336;
|
||||
}
|
||||
.fixed-plugin .badge-purple{
|
||||
background-color: #9368E9;
|
||||
}
|
||||
.fixed-plugin .badge-white{
|
||||
background-color: rgba(200, 200, 200, 0.2);
|
||||
}
|
||||
.fixed-plugin .badge-rose{
|
||||
background-color: #e91e63;
|
||||
}
|
||||
.fixed-plugin .badge-red{
|
||||
background-color: #f44336;
|
||||
}
|
||||
|
||||
.fixed-plugin h5{
|
||||
font-size: 14px;
|
||||
margin: 10px;
|
||||
}
|
||||
.fixed-plugin .dropdown-menu li{
|
||||
display: block;
|
||||
padding: 18px 2px;
|
||||
width: 25%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fixed-plugin li.adjustments-line,
|
||||
.fixed-plugin li.header-title,
|
||||
.fixed-plugin li.button-container{
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
min-height: inherit;
|
||||
}
|
||||
|
||||
.fixed-plugin li.button-container{
|
||||
height: auto;
|
||||
}
|
||||
.fixed-plugin li.button-container div{
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.fixed-plugin #sharrreTitle{
|
||||
text-align: center;
|
||||
padding: 10px 0;
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
.fixed-plugin li.header-title{
|
||||
height: 30px;
|
||||
line-height: 25px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fixed-plugin .adjustments-line p{
|
||||
float: left;
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
font-size: 1em;
|
||||
color: #3C4858;
|
||||
padding-top: 0px;
|
||||
}
|
||||
|
||||
.fixed-plugin .adjustments-line a .badge-colors{
|
||||
position: relative;
|
||||
top: -2px;
|
||||
}
|
||||
|
||||
.fixed-plugin .adjustments-line .togglebutton{
|
||||
padding-right: 7px;
|
||||
}
|
||||
|
||||
.fixed-plugin .adjustments-line .togglebutton .toggle{
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.fixed-plugin .dropdown-menu > li.adjustments-line > a{
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
/*border-bottom: 1px solid #ddd;*/
|
||||
border-radius: 0;
|
||||
margin: 0;
|
||||
}
|
||||
.fixed-plugin .dropdown-menu > li > a.img-holder{
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
border-radius: 10px;
|
||||
background-color: #FFF;
|
||||
border: 3px solid #FFF;
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
opacity: 1;
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
max-height: 100px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
min-width: 25%;
|
||||
}
|
||||
|
||||
.fixed-plugin .dropdown-menu > li > a.switch-trigger:hover,
|
||||
.fixed-plugin .dropdown-menu > li > a.switch-trigger:focus{
|
||||
background-color: transparent;
|
||||
}
|
||||
.fixed-plugin .dropdown-menu > li:hover > a.img-holder,
|
||||
.fixed-plugin .dropdown-menu > li:focus > a.img-holder{
|
||||
border-color: rgba(0, 187, 255, 0.53);;
|
||||
}
|
||||
.fixed-plugin .dropdown-menu > .active > a.img-holder,
|
||||
.fixed-plugin .dropdown-menu > .active > a.img-holder{
|
||||
border-color: #00bbff;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
.fixed-plugin .dropdown-menu > li > a img{
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
.fixed-plugin .btn-social{
|
||||
width: 50%;
|
||||
display: block;
|
||||
width: 48%;
|
||||
float: left;
|
||||
font-weight: 600;
|
||||
}
|
||||
.fixed-plugin .btn-social i{
|
||||
margin-right: 5px;
|
||||
}
|
||||
.fixed-plugin .btn-social:first-child{
|
||||
margin-right: 2%;
|
||||
}
|
||||
|
||||
.fixed-plugin .adjustments-line a:hover,
|
||||
.fixed-plugin .adjustments-line a:focus,
|
||||
.fixed-plugin .adjustments-line a{
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
.fixed-plugin .dropdown .dropdown-menu{
|
||||
top: -40px !important;
|
||||
opacity: 0;
|
||||
left: -303px !important;
|
||||
transform-origin: 100% 0;
|
||||
}
|
||||
.fixed-plugin .dropdown.show .dropdown-menu{
|
||||
opacity: 1;
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
.fixed-plugin .dropdown-menu:before,
|
||||
.fixed-plugin .dropdown-menu:after{
|
||||
content: "";
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
top: 65px;
|
||||
width: 16px;
|
||||
transform: translateY(-50%);
|
||||
-webkit-transform: translateY(-50%);
|
||||
-moz-transform: translateY(-50%);
|
||||
|
||||
}
|
||||
.fixed-plugin .dropdown-menu:before{
|
||||
border-bottom: 16px solid rgba(0, 0, 0, 0);
|
||||
border-left: 16px solid rgba(0,0,0,0.2);
|
||||
border-top: 16px solid rgba(0,0,0,0);
|
||||
right: -16px;
|
||||
}
|
||||
|
||||
.fixed-plugin .dropdown-menu:after{
|
||||
border-bottom: 16px solid rgba(0, 0, 0, 0);
|
||||
border-left: 16px solid #fff;
|
||||
border-top: 16px solid rgba(0,0,0,0);
|
||||
right: -15px;
|
||||
}
|
||||
|
||||
.wrapper-full-page ~ .fixed-plugin .dropdown.open .dropdown-menu{
|
||||
-webkit-transform: translateY(-17%);
|
||||
-moz-transform: translateY(-17%);
|
||||
-o-transform: translateY(-17%);
|
||||
-ms-transform: translateY(-17%);
|
||||
transform: translateY(-17%);
|
||||
}
|
||||
|
||||
.wrapper-full-page ~ .fixed-plugin .dropdown .dropdown-menu{
|
||||
-webkit-transform: translateY(-19%);
|
||||
-moz-transform: translateY(-19%);
|
||||
-o-transform: translateY(-19%);
|
||||
-ms-transform: translateY(-19%);
|
||||
transform: translateY(-19%);
|
||||
}
|
||||
71
resources/theme/material-dashboard/assets/scss/material-dashboard/_footers-extend.scss
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
.footer-big{
|
||||
padding: $padding-general-x * 2 0;
|
||||
|
||||
.content{
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.social-feed{
|
||||
|
||||
i{
|
||||
font-size: 20px;
|
||||
display: table-cell;
|
||||
padding-right: 10px;
|
||||
}
|
||||
p{
|
||||
display: table-cell;
|
||||
vertical-align: top;
|
||||
overflow: hidden;
|
||||
padding-bottom: 10px;
|
||||
max-width: 300px;
|
||||
}
|
||||
}
|
||||
|
||||
.gallery-feed{
|
||||
img{
|
||||
width: 20%;
|
||||
margin-right: 5%;
|
||||
margin-bottom: 5%;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
.footer-white{
|
||||
background-color: $white-color;
|
||||
}
|
||||
.footer-gray{
|
||||
background-color: $gray-lighter;
|
||||
}
|
||||
.footer-black{
|
||||
@include radial-gradient(#232323,#585858);
|
||||
|
||||
a{
|
||||
color: $white-color;
|
||||
opacity: .86;
|
||||
|
||||
&:hover,
|
||||
&:focus{
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.footer-brand{
|
||||
color: $white-color;
|
||||
|
||||
&:hover,
|
||||
&:focus{
|
||||
color: $white-color;
|
||||
}
|
||||
}
|
||||
|
||||
h5,
|
||||
h4,
|
||||
i,
|
||||
.copyright{
|
||||
color: $white-color;
|
||||
}
|
||||
|
||||
hr{
|
||||
border-color: rgba($white-color, .2);
|
||||
}
|
||||
}
|
||||
111
resources/theme/material-dashboard/assets/scss/material-dashboard/_footers.scss
vendored
Normal file
@@ -0,0 +1,111 @@
|
||||
.footer{
|
||||
padding: $padding-general-x 0;
|
||||
text-align: center;
|
||||
display: -webkit-flex; /* Safari */ /* Safari 6.1+ */
|
||||
display: flex;
|
||||
|
||||
ul{
|
||||
margin-bottom: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
|
||||
li{
|
||||
display: inline-block;
|
||||
|
||||
a{
|
||||
color: inherit;
|
||||
padding: $padding-general-x;
|
||||
font-weight: $font-weight-bold;
|
||||
font-size: $mdb-btn-font-size-base;
|
||||
text-transform: uppercase;
|
||||
border-radius: $border-radius-base;
|
||||
text-decoration: none;
|
||||
position: relative;
|
||||
display: block;
|
||||
|
||||
&:hover{
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.btn{
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.links-horizontal{
|
||||
&:first-child a{
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
&:last-child a{
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.links-vertical{
|
||||
li{
|
||||
display: block;
|
||||
margin-left: -5px;
|
||||
margin-right: -5px;
|
||||
|
||||
a{
|
||||
padding: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.social-buttons{
|
||||
a,
|
||||
.btn{
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.footer-brand{
|
||||
float: left;
|
||||
height: 50px;
|
||||
padding: 15px 15px;
|
||||
font-size: 18px;
|
||||
line-height: 20px;
|
||||
margin-left: -15px;
|
||||
|
||||
&:hover,
|
||||
&:focus{
|
||||
color: $black-color;
|
||||
}
|
||||
}
|
||||
.copyright{
|
||||
padding: 15px 0;
|
||||
.material-icons{
|
||||
font-size: 18px;
|
||||
position: relative;
|
||||
top: 3px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.pull-center{
|
||||
display: inline-block;
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
|
||||
.off-canvas-sidebar {
|
||||
.footer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px){
|
||||
.footer{
|
||||
.copyright {
|
||||
padding-right: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
95
resources/theme/material-dashboard/assets/scss/material-dashboard/_forms-extend.scss
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
.card{
|
||||
.card-body{
|
||||
.col-form-label,
|
||||
.label-on-right{
|
||||
padding: 17px 5px 0 0;
|
||||
text-align: right;
|
||||
|
||||
&.label-checkbox {
|
||||
padding-top: 13px;
|
||||
}
|
||||
}
|
||||
.label-on-right{
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
.label-on-right{
|
||||
|
||||
|
||||
code{
|
||||
padding: 2px 4px;
|
||||
font-size: 90%;
|
||||
color: #c7254e;
|
||||
background-color: #f9f2f4;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-wizard {
|
||||
.input-group .form-group {
|
||||
width: 80%
|
||||
}
|
||||
}
|
||||
|
||||
form {
|
||||
.form-group {
|
||||
margin: 8px 0 0;
|
||||
|
||||
label[for="inputState"]{
|
||||
position: absolute;
|
||||
top: -12px;
|
||||
}
|
||||
|
||||
select.form-control {
|
||||
position: absolute;
|
||||
top: -5px;
|
||||
}
|
||||
|
||||
.error {
|
||||
font-size: 0.8rem;
|
||||
color: $brand-danger;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.card {
|
||||
.card-footer {
|
||||
.form-check {
|
||||
margin-left: 7px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.checkbox-radios {
|
||||
margin-top: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.bmd-label-static {
|
||||
top: -7px !important;
|
||||
}
|
||||
|
||||
.form-check .form-check-label {
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
@media all and (max-width: 991px) {
|
||||
.card{
|
||||
.card-body{
|
||||
.col-form-label,
|
||||
.label-on-right{
|
||||
text-align: left;
|
||||
padding-left: 15px;
|
||||
padding-top: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.bmd-form-group.is-focused {
|
||||
.bmd-label-floating {
|
||||
top: -0.7rem !important;
|
||||
}
|
||||
}
|
||||
374
resources/theme/material-dashboard/assets/scss/material-dashboard/_forms.scss
vendored
Normal file
@@ -0,0 +1,374 @@
|
||||
form {
|
||||
// ensure enough room at the bottom of any form to display a one-line bmd-help
|
||||
margin-bottom: ($bmd-help-size-ratio * $font-size-base) * $line-height-base;
|
||||
|
||||
.card &{
|
||||
margin: 0;
|
||||
}
|
||||
// reverse the above for navbars (no help expected in a navbar form)
|
||||
.navbar & {
|
||||
margin-bottom: 0; // only adjust bottom so that pull-xs-right flexed margin-left: auto works
|
||||
|
||||
.bmd-form-group {
|
||||
display: inline-block;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.btn {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// -----
|
||||
// Inputs
|
||||
//
|
||||
// Reference http://www.google.com/design/spec/components/text-fields.html
|
||||
// MDL implementation: http://www.getmdl.io/components/index.html#textfields-section
|
||||
.form-control {
|
||||
background: $bmd-form-control-bg-repeat-y $bmd-form-control-bg-position;
|
||||
background-size: $bmd-form-control-bg-size;
|
||||
border: 0;
|
||||
height: 36px;
|
||||
transition: background 0s ease-out;
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
border-radius: 0;
|
||||
font-size: $mdb-input-font-size-base;
|
||||
|
||||
// The border bottom should be static in all states, the decorator will be animated over this.
|
||||
&:focus,
|
||||
.bmd-form-group.is-focused & {
|
||||
background-size: $bmd-form-control-bg-size-active;
|
||||
//border-bottom: $input-btn-border-width solid $input-border-color;
|
||||
transition-duration: 0.3s;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
@include material-placeholder() {
|
||||
color: $mdb-input-placeholder-color;
|
||||
font-weight: 400;
|
||||
font-size: $mdb-input-font-size-base;
|
||||
}
|
||||
|
||||
.has-white &{
|
||||
@include material-placeholder(){
|
||||
color: $white-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Help blocks (not in v4)
|
||||
// position: absolute approach - uses no vertical space and there is no form jumping, but text wrapping - not so good.
|
||||
// FIXME: width/wrapping isn't automatic and overflows occur. What are some solutions?
|
||||
//
|
||||
.bmd-help {
|
||||
position: absolute;
|
||||
display: none;
|
||||
font-size: .8rem;
|
||||
font-weight: normal;
|
||||
@extend .text-muted;
|
||||
|
||||
.bmd-form-group.is-focused & {
|
||||
display: block;
|
||||
}
|
||||
|
||||
//--------------------------------------
|
||||
// Multiple help blocks
|
||||
// - absolute positioning is used above to prevent bouncing
|
||||
// - when there is more than one, this will bounce but will at least show
|
||||
&:nth-of-type(2) {
|
||||
padding-top: 1rem; // the first one requires top padding to push it below the first one which is absolute positioned
|
||||
}
|
||||
|
||||
+ .bmd-help {
|
||||
position: relative;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// -----
|
||||
// State coloring: default, success, info, warning, danger
|
||||
//
|
||||
@include bmd-selection-color();
|
||||
@include bmd-form-color($bmd-label-color, $bmd-label-color-focus, $input-border-color, $input-border-color);
|
||||
|
||||
.has-success {
|
||||
@include bmd-form-color($brand-success, $brand-success, $brand-success, $input-border-color);
|
||||
}
|
||||
|
||||
.has-info {
|
||||
@include bmd-form-color($brand-info, $brand-info, $brand-info, $input-border-color);
|
||||
}
|
||||
|
||||
.has-white{
|
||||
@include bmd-form-color($white-color, $white-color, $white-color, $input-border-color-white);
|
||||
|
||||
.form-control{
|
||||
&:focus{
|
||||
color: $white-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.has-warning {
|
||||
@include bmd-form-color($brand-warning, $brand-warning, $brand-warning, $input-border-color);
|
||||
}
|
||||
|
||||
.has-danger {
|
||||
@include bmd-form-color($brand-danger, $brand-danger, $brand-danger, $input-border-color);
|
||||
}
|
||||
|
||||
.has-rose {
|
||||
@include bmd-form-color($brand-rose, $brand-rose, $brand-rose, $input-border-color);
|
||||
}
|
||||
|
||||
// Reference http://www.google.com/design/spec/components/text-fields.html
|
||||
// MDL implementation: http://www.getmdl.io/components/index.html#textfields-section
|
||||
//.variations(unquote(" label"), color, $bmd-input-placeholder-color); // default label color variations
|
||||
|
||||
// Whereas .form-group adds structure, bmd-form-group just needs to make sure we have enough padding for our labels to work. That's the only purpose.
|
||||
.bmd-form-group {
|
||||
position: relative;
|
||||
|
||||
// -----
|
||||
// Labels
|
||||
//
|
||||
// Reference http://www.google.com/design/spec/components/text-fields.html
|
||||
// MDL implementation: http://www.getmdl.io/components/index.html#textfields-section
|
||||
|
||||
&:not(.has-success):not(.has-danger){
|
||||
[class^='bmd-label'],
|
||||
[class*=' bmd-label']{
|
||||
&.bmd-label-floating{
|
||||
color: $mdb-input-placeholder-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
[class^='bmd-label'],
|
||||
[class*=' bmd-label'] {
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
transition: 0.3s ease all;
|
||||
|
||||
// hint to browser for optimization
|
||||
&.bmd-label-floating {
|
||||
will-change: left, top, contents;
|
||||
margin: 0;
|
||||
line-height: 1.4;
|
||||
font-weight: 400;
|
||||
}
|
||||
}
|
||||
|
||||
// hide label-placeholders when the field is filled
|
||||
&.is-filled .bmd-label-placeholder {
|
||||
display: none;
|
||||
}
|
||||
|
||||
// Optional class to make the text field inline collapsible/expandable (collapsed by default)
|
||||
// This uses the BS collapse js to make the width expand.
|
||||
// `width` class must also be on the element FIXME: do this with JS, it is a marker class and should be implicit because after all, we are an bmd-collapse-inline
|
||||
// FIXME: js needs to do the focus on shown.bs.collapse event http://v4-alpha.getbootstrap.com/components/collapse/#events
|
||||
&.bmd-collapse-inline {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0; // get rid of any padding as this is a width transition
|
||||
min-height: 2.1em;
|
||||
|
||||
// Expandable Holder.
|
||||
.collapse {
|
||||
flex: 1;
|
||||
display: none;
|
||||
&.show {
|
||||
// This is an unfortunate hack. Animating between widths in percent (%)
|
||||
// in many browsers (Chrome, Firefox) only animates the inner visual style
|
||||
// of the input - the outer bounding box still 'jumps'.
|
||||
// Thus assume a sensible maximum, and animate to/from that value.
|
||||
max-width: 1200px;
|
||||
}
|
||||
}
|
||||
|
||||
.collapsing,
|
||||
.width:not(.collapse),
|
||||
// collapsing is removed and momentarily only width is present
|
||||
.collapse.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.collapsing {
|
||||
@include material-animation-default();
|
||||
}
|
||||
}
|
||||
|
||||
// default floating size/location with an bmd-form-group
|
||||
@include bmd-form-size-variant($font-size-base, $bmd-label-top-margin-base, $input-padding-y, $bmd-form-line-height, "bmd-form-group default");
|
||||
|
||||
// sm floating size/location
|
||||
&.bmd-form-group-sm {
|
||||
@include bmd-form-size-variant($font-size-sm, $bmd-label-top-margin-sm, $input-padding-y-sm, $bmd-form-line-height-sm, "bmd-form-group sm");
|
||||
}
|
||||
|
||||
// lg floating size/location
|
||||
&.bmd-form-group-lg {
|
||||
@include bmd-form-size-variant($font-size-lg, $bmd-label-top-margin-lg, $input-padding-y-lg, $bmd-form-line-height-sm, "bmd-form-group lg");
|
||||
}
|
||||
}
|
||||
|
||||
// default floating size/location without a form-group (will skip form-group styles, and just render default sizing variation) - IMPORTANT for non-form-group spacing such as radio/checkbox/switch
|
||||
@include bmd-form-size-variant($font-size-base, $bmd-label-top-margin-base, $input-padding-y, $bmd-form-line-height);
|
||||
|
||||
select {
|
||||
&,
|
||||
&.form-control {
|
||||
// Use vendor prefixes as `appearance` isn't part of the CSS spec. OSX doesn't obey the border-radius: 0 without this.
|
||||
-moz-appearance: none;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Input files - hide actual input - requires specific markup in the sample.
|
||||
//.bmd-form-group input[type=file] {
|
||||
// opacity: 0;
|
||||
// position: absolute;
|
||||
// top: 0;
|
||||
// right: 0;
|
||||
// bottom: 0;
|
||||
// left: 0;
|
||||
// width: 100%;
|
||||
// height: 100%;
|
||||
// z-index: 100;
|
||||
//}
|
||||
|
||||
//
|
||||
//
|
||||
//.form-horizontal {
|
||||
//
|
||||
// // Consistent vertical alignment of radios and checkboxes
|
||||
// .radio,
|
||||
// .checkbox,
|
||||
// .radio-inline,
|
||||
// .checkbox-inline {
|
||||
// padding-top: 0;
|
||||
// }
|
||||
//
|
||||
// .radio {
|
||||
// margin-bottom: 10px;
|
||||
// }
|
||||
//
|
||||
// label {
|
||||
// text-align: right;
|
||||
// }
|
||||
//
|
||||
// label {
|
||||
// margin: 0;
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
.form-inline {
|
||||
@include media-breakpoint-up(sm) {
|
||||
.input-group {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.form-control-feedback{
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 0;
|
||||
z-index: 2;
|
||||
display: block;
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
line-height: 34px;
|
||||
text-align: center;
|
||||
pointer-events: none;
|
||||
opacity: 0;
|
||||
|
||||
.has-success &{
|
||||
color: $green;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.has-danger &{
|
||||
color: $red;
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.form-group{
|
||||
padding-bottom: 10px;
|
||||
position: relative;
|
||||
margin: 8px 0 0;
|
||||
|
||||
.bmd-label-static {
|
||||
top: -10px;
|
||||
}
|
||||
}
|
||||
|
||||
textarea{
|
||||
height: auto !important;
|
||||
resize: none;
|
||||
line-height: $bmd-line-height !important;
|
||||
}
|
||||
|
||||
.form-group input[type=file] {
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.form-newsletter{
|
||||
.input-group,
|
||||
.form-group{
|
||||
float: left;
|
||||
width: 78%;
|
||||
margin-right: 2%;
|
||||
margin-top: 9px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.btn{
|
||||
float: left;
|
||||
width: 20%;
|
||||
margin: 9px 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
.form-file-upload{
|
||||
.input-group-btn:last-child>.btn-round{
|
||||
border-radius: 30px;
|
||||
}
|
||||
|
||||
.input-group-btn .btn{
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.input-group{
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.input-group .input-group-btn{
|
||||
padding: 0 12px;
|
||||
}
|
||||
|
||||
.form-control[disabled],
|
||||
fieldset[disabled] .form-control,
|
||||
.form-group .form-control[disabled],
|
||||
fieldset[disabled] .form-group .form-control{
|
||||
background-color: transparent;
|
||||
cursor: not-allowed;
|
||||
border-bottom: 1px dotted $input-border-color;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
179
resources/theme/material-dashboard/assets/scss/material-dashboard/_headers.scss
vendored
Normal file
@@ -0,0 +1,179 @@
|
||||
.page-header{
|
||||
min-height: 100vh;
|
||||
max-height: 1000px;
|
||||
display: flex !important;
|
||||
height: 100%;
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
color: $white-color;
|
||||
position: relative;
|
||||
align-items: center;
|
||||
|
||||
.page-header-image{
|
||||
position: absolute;
|
||||
background-size: cover;
|
||||
background-position: center center;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.content-center{
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
z-index: 2;
|
||||
-ms-transform: translate(-50%, -50%);
|
||||
-webkit-transform: translate(-50%, -50%);
|
||||
transform: translate(-50%, -50%);
|
||||
text-align: center;
|
||||
color: #FFFFFF;
|
||||
padding: 0 15px;
|
||||
width: 100%;
|
||||
max-width: 880px;
|
||||
|
||||
}
|
||||
|
||||
footer{
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.container{
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
}
|
||||
&.header-small{
|
||||
height: 65vh;
|
||||
min-height: 65vh;
|
||||
}
|
||||
|
||||
.iframe-container{
|
||||
iframe{
|
||||
width: 100%;
|
||||
box-shadow: 0 16px 38px -12px rgba(0, 0, 0, 0.56),
|
||||
0 4px 25px 0px rgba(0, 0, 0, 0.12),
|
||||
0 8px 10px -5px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.header-filter{
|
||||
position: relative;
|
||||
|
||||
&:before,
|
||||
&:after{
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: block;
|
||||
left: 0;
|
||||
top: 0;
|
||||
content: "";
|
||||
}
|
||||
|
||||
&::before,{
|
||||
background: rgba(0,0,0,.5);
|
||||
}
|
||||
|
||||
.container{
|
||||
z-index: 2;
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
.clear-filter::before {
|
||||
background: none;
|
||||
}
|
||||
|
||||
.purple-filter:after{
|
||||
background: rgba(101, 47, 142, 0.64);
|
||||
background: linear-gradient(45deg, rgba(101, 47, 142, 0.88) 0%, rgba(125, 46, 185, 0.45) 100%);
|
||||
background: -moz-linear-gradient(135deg, rgba(101, 47, 142, 0.88) 0%, rgba(125, 46, 185, 0.45) 100%);
|
||||
background: -webkit-linear-gradient(135deg, rgba(101, 47, 142, 0.88) 0%, rgba(125, 46, 185, 0.45) 100%);
|
||||
}
|
||||
|
||||
.header-filter{
|
||||
|
||||
&[filter-color="purple"],
|
||||
&[filter-color="primary"]{
|
||||
&:after{
|
||||
@include linear-gradient(rgba($purple-100,.56), rgba($purple-300,.95));
|
||||
|
||||
}
|
||||
}
|
||||
&[filter-color="blue"],
|
||||
&[filter-color="info"]{
|
||||
&:after{
|
||||
@include linear-gradient(rgba($cyan-100,.56), rgba($cyan-300,.95));
|
||||
}
|
||||
}
|
||||
&[filter-color="green"],
|
||||
&[filter-color="success"]{
|
||||
&:after{
|
||||
@include linear-gradient(rgba($green-200,.56), rgba($green-400,.95));
|
||||
}
|
||||
}
|
||||
&[filter-color="orange"],
|
||||
&[filter-color="warning"]{
|
||||
&:after{
|
||||
@include linear-gradient(rgba($orange-100,.56), rgba($orange-300,.95));
|
||||
}
|
||||
}
|
||||
|
||||
&[filter-color="red"],
|
||||
&[filter-color="danger"]{
|
||||
&:after{
|
||||
@include linear-gradient(rgba($red-200,.56), rgba($red-400,.95));
|
||||
}
|
||||
}
|
||||
&[filter-color="rose"]{
|
||||
&:after{
|
||||
@include linear-gradient(rgba($pink-100,.56), rgba($pink-300,.95));
|
||||
}
|
||||
}
|
||||
}
|
||||
.clear-filter{
|
||||
&:before{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.header-1,
|
||||
.header-2,
|
||||
.header-3{
|
||||
.wrapper{
|
||||
background: #CCCCCC;
|
||||
}
|
||||
}
|
||||
|
||||
.header-2{
|
||||
.page-header{
|
||||
.container{
|
||||
padding-top:25vh;
|
||||
}
|
||||
.card{
|
||||
margin-top: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.header-3{
|
||||
.btn{
|
||||
margin: 0;
|
||||
}
|
||||
h6{
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.card-form-horizontal{
|
||||
.form-group{
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
10
resources/theme/material-dashboard/assets/scss/material-dashboard/_images.scss
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
.img-thumbnail{
|
||||
border-radius: 16px;
|
||||
}
|
||||
.img-raised{
|
||||
@include shadow-big-image();
|
||||
}
|
||||
|
||||
.rounded{
|
||||
border-radius: $border-radius-large !important;
|
||||
}
|
||||
57
resources/theme/material-dashboard/assets/scss/material-dashboard/_info-areas.scss
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
.info{
|
||||
max-width: 360px;
|
||||
margin: 0 auto;
|
||||
padding: 70px 0 30px;
|
||||
|
||||
.icon{
|
||||
color: $gray-color;
|
||||
|
||||
> i{
|
||||
font-size: 3.85rem;
|
||||
}
|
||||
}
|
||||
.info-title{
|
||||
color: $black-color;
|
||||
margin: 0.875rem * 2 0 0.875rem;
|
||||
}
|
||||
p{
|
||||
color: $gray-color;
|
||||
}
|
||||
}
|
||||
|
||||
.info-horizontal{
|
||||
.icon{
|
||||
float: left;
|
||||
margin-top: 24px;
|
||||
margin-right: 10px;
|
||||
|
||||
>i{
|
||||
font-size: $font-size-h2;
|
||||
}
|
||||
}
|
||||
.description{
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.icon {
|
||||
&.icon-primary {
|
||||
color: $brand-primary;
|
||||
}
|
||||
&.icon-info {
|
||||
color: $brand-info;
|
||||
}
|
||||
&.icon-success {
|
||||
color: $brand-success;
|
||||
}
|
||||
&.icon-warning {
|
||||
color: $brand-warning;
|
||||
}
|
||||
&.icon-danger {
|
||||
color: $brand-danger;
|
||||
}
|
||||
&.icon-rose {
|
||||
color: $brand-rose;
|
||||
}
|
||||
}
|
||||
36
resources/theme/material-dashboard/assets/scss/material-dashboard/_input-group.scss
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
// -----------------------------------------
|
||||
// input-group and input-group-addon styles
|
||||
// note: form-groups are not required
|
||||
//
|
||||
@mixin input-group-button-variation($vertical-padding) {
|
||||
.input-group-btn {
|
||||
.btn {
|
||||
//margin: 0 0 $vertical-padding 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// default margin - no form-group required
|
||||
@include input-group-button-variation(input-padding-y);
|
||||
|
||||
.bmd-form-group-sm {
|
||||
@include input-group-button-variation($input-padding-y-sm);
|
||||
}
|
||||
|
||||
.bmd-form-group-lg {
|
||||
@include input-group-button-variation($input-padding-y-lg);
|
||||
}
|
||||
|
||||
.input-group {
|
||||
// may be in or outside of form-group
|
||||
|
||||
.input-group-text {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 0 15px 0 15px;
|
||||
background-color: transparent;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
}
|
||||
494
resources/theme/material-dashboard/assets/scss/material-dashboard/_misc-extend.scss
vendored
Normal file
@@ -0,0 +1,494 @@
|
||||
a{
|
||||
color: $link-color;
|
||||
&:hover,
|
||||
&:focus{
|
||||
color: darken($link-color, 5%);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&.text-info{
|
||||
&:hover, &:focus{
|
||||
color: darken($brand-info, 5%);
|
||||
}
|
||||
}
|
||||
|
||||
& .material-icons {
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.animation-transition-fast,
|
||||
.navbar,
|
||||
.bootstrap-tagsinput .tag,
|
||||
.bootstrap-tagsinput [data-role="remove"],
|
||||
.card-collapse .card-header a i{
|
||||
@include transitions($fast-transition-time, $transition-ease);
|
||||
}
|
||||
|
||||
.signup-page{
|
||||
.card-signup{
|
||||
form{
|
||||
.form-check{
|
||||
padding-left: 20px;
|
||||
|
||||
.form-check-label{
|
||||
padding-left: 35px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// style for index.html (free version)
|
||||
|
||||
.section-signup{
|
||||
.card-signup{
|
||||
.card-header{
|
||||
width: auto;
|
||||
}
|
||||
.card-body{
|
||||
.input-group{
|
||||
padding-bottom: 7px;
|
||||
margin: 27px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// offline-doc
|
||||
.offline-doc,
|
||||
.offline-free-doc {
|
||||
.page-header {
|
||||
height: 100vh !important;
|
||||
|
||||
&:after {
|
||||
background: rgba(0, 0, 0, 0.5) !important;
|
||||
}
|
||||
}
|
||||
.footer {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
background: transparent;
|
||||
bottom: 0;
|
||||
color: $white-color;
|
||||
z-index: 1;
|
||||
|
||||
.copyright a{
|
||||
color: $white-color;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar {
|
||||
.navbar-brand,
|
||||
.navbar-collapse .nav-link {
|
||||
color: $white-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// hinge card
|
||||
|
||||
|
||||
|
||||
@-webkit-keyframes hinge {
|
||||
0% {
|
||||
-webkit-transform-origin: top left;
|
||||
transform-origin: top left;
|
||||
-webkit-animation-timing-function: ease-in-out;
|
||||
animation-timing-function: ease-in-out;
|
||||
}
|
||||
|
||||
20%, 60% {
|
||||
-webkit-transform: rotate3d(0, 0, 1, 80deg);
|
||||
transform: rotate3d(0, 0, 1, 80deg);
|
||||
-webkit-transform-origin: top left;
|
||||
transform-origin: top left;
|
||||
-webkit-animation-timing-function: ease-in-out;
|
||||
animation-timing-function: ease-in-out;
|
||||
}
|
||||
|
||||
40%, 80% {
|
||||
-webkit-transform: rotate3d(0, 0, 1, 60deg);
|
||||
transform: rotate3d(0, 0, 1, 60deg);
|
||||
-webkit-transform-origin: top left;
|
||||
transform-origin: top left;
|
||||
-webkit-animation-timing-function: ease-in-out;
|
||||
animation-timing-function: ease-in-out;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
to {
|
||||
-webkit-transform: translate3d(0, 700px, 0);
|
||||
transform: translate3d(0, 700px, 0);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes hinge {
|
||||
0% {
|
||||
-webkit-transform-origin: top left;
|
||||
transform-origin: top left;
|
||||
-webkit-animation-timing-function: ease-in-out;
|
||||
animation-timing-function: ease-in-out;
|
||||
}
|
||||
|
||||
20%, 60% {
|
||||
-webkit-transform: rotate3d(0, 0, 1, 80deg);
|
||||
transform: rotate3d(0, 0, 1, 80deg);
|
||||
-webkit-transform-origin: top left;
|
||||
transform-origin: top left;
|
||||
-webkit-animation-timing-function: ease-in-out;
|
||||
animation-timing-function: ease-in-out;
|
||||
}
|
||||
|
||||
40%, 80% {
|
||||
-webkit-transform: rotate3d(0, 0, 1, 60deg);
|
||||
transform: rotate3d(0, 0, 1, 60deg);
|
||||
-webkit-transform-origin: top left;
|
||||
transform-origin: top left;
|
||||
-webkit-animation-timing-function: ease-in-out;
|
||||
animation-timing-function: ease-in-out;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
to {
|
||||
-webkit-transform: translate3d(0, 700px, 0);
|
||||
transform: translate3d(0, 700px, 0);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.hinge {
|
||||
-webkit-animation-name: hinge;
|
||||
animation-name: hinge;
|
||||
}
|
||||
|
||||
.animated.hinge {
|
||||
-webkit-animation-duration: 2s;
|
||||
animation-duration: 2s;
|
||||
}
|
||||
|
||||
.animated {
|
||||
-webkit-animation-duration: 1s;
|
||||
animation-duration: 1s;
|
||||
-webkit-animation-fill-mode: both;
|
||||
animation-fill-mode: both;
|
||||
}
|
||||
|
||||
.tim-row{
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.tim-white-buttons {
|
||||
background-color: #777777;
|
||||
}
|
||||
.title{
|
||||
margin-top: 30px;
|
||||
margin-bottom: 25px;
|
||||
min-height: 32px;
|
||||
}
|
||||
|
||||
#map {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
width: 100%;
|
||||
height: calc(100vh - 70px);
|
||||
margin-top: 70px;
|
||||
}
|
||||
|
||||
.tim-typo{
|
||||
padding-left: 25%;
|
||||
margin-bottom: 40px;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
.tim-typo .tim-note{
|
||||
bottom: 5px;
|
||||
color: #c0c1c2;
|
||||
display: block;
|
||||
font-weight: 400;
|
||||
font-size: 13px;
|
||||
line-height: 15px;
|
||||
left: 0;
|
||||
margin-left: 20px;
|
||||
position: absolute;
|
||||
width: 260px;
|
||||
}
|
||||
.tim-row{
|
||||
padding-top: 50px;
|
||||
}
|
||||
.tim-row h3{
|
||||
margin-top: 0;
|
||||
}
|
||||
#typography h1, #typography h2, #typography h3,
|
||||
#typography h4, #typography h5, #typography h6{
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.switch{
|
||||
margin-right: 20px;
|
||||
}
|
||||
#navbar-full .navbar{
|
||||
border-radius: 0 !important;
|
||||
margin-bottom: 15px;
|
||||
z-index: 2;
|
||||
}
|
||||
.space{
|
||||
height: 130px;
|
||||
display: block;
|
||||
}
|
||||
.space-110{
|
||||
height: 110px;
|
||||
display: block;
|
||||
}
|
||||
.space-50{
|
||||
height: 50px;
|
||||
display: block;
|
||||
}
|
||||
.space-70{
|
||||
height: 70px;
|
||||
display: block;
|
||||
}
|
||||
.navigation-example .img-src{
|
||||
background-attachment: scroll;
|
||||
}
|
||||
|
||||
.navigation-example{
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
margin-top:0;
|
||||
min-height: 740px;
|
||||
}
|
||||
#notifications{
|
||||
background-color: $white-color;
|
||||
display: block;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
}
|
||||
#notifications .alert-danger{
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
.tim-note{
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
#buttons .btn{
|
||||
margin: 0 0px 15px;
|
||||
}
|
||||
.space-100{
|
||||
height: 100px;
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
// PARALLAX
|
||||
|
||||
.parallax{
|
||||
width:100%;
|
||||
height:570px;
|
||||
|
||||
display: block;
|
||||
background-attachment: fixed;
|
||||
background-repeat:no-repeat;
|
||||
background-size:cover;
|
||||
background-position: center center;
|
||||
|
||||
}
|
||||
.parallax .parallax-image{
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
}
|
||||
.parallax .parallax-image img{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@media (max-width: 768px){
|
||||
.parallax .parallax-image{
|
||||
width: 100%;
|
||||
height: 640px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.parallax .parallax-image img{
|
||||
height: 100%;
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.separator{
|
||||
content: "Separator";
|
||||
color: #FFFFFF;
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 20px;
|
||||
}
|
||||
.separator-line{
|
||||
background-color: #EEE;
|
||||
height: 1px;
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
.separator.separator-gray{
|
||||
background-color: #EEEEEE;
|
||||
}
|
||||
.social-buttons-demo .btn{
|
||||
margin: 10px 5px 7px 1px;
|
||||
}
|
||||
|
||||
.img-container{
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
.img-container img{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.section-black {
|
||||
background-color: #333;
|
||||
}
|
||||
|
||||
.animate {
|
||||
transition: 1.5s ease-in-out;
|
||||
-moz-transition: 1.5s ease-in-out;
|
||||
-webkit-transition: 1.5s ease-in-out;
|
||||
}
|
||||
|
||||
.sharing-area{
|
||||
margin-top: 80px;
|
||||
}
|
||||
.sharing-area .btn{
|
||||
margin: 15px 4px 0;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
.sharing-area .btn i{
|
||||
font-size: 18px;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
#navbar{
|
||||
margin-bottom: -20px;
|
||||
}
|
||||
.sharing-area .btn-twitter{
|
||||
background-color: #55acee;
|
||||
}
|
||||
.sharing-area .btn-facebook{
|
||||
background-color: #3b5998;
|
||||
}
|
||||
.sharing-area .btn-google-plus{
|
||||
background-color: #dd4b39;
|
||||
}
|
||||
.sharing-area .btn-github{
|
||||
background-color: #333333;
|
||||
}
|
||||
#navbar .navbar{
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 830px){
|
||||
.main-raised{
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// for data-live-search inside the selectpicker
|
||||
|
||||
.bootstrap-select .hidden{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.disabled {
|
||||
pointer-events: none;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
// documentation
|
||||
|
||||
.bd-docs {
|
||||
.alert-dismissible {
|
||||
.close {
|
||||
top: 10px;
|
||||
}
|
||||
}
|
||||
.bd-example {
|
||||
.btn.btn-social {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.bd-content {
|
||||
.bd-title {
|
||||
.btn {
|
||||
padding: 7px 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// multilevel dropdown
|
||||
|
||||
.dropdown {
|
||||
.dropdown-menu {
|
||||
.dropdown-item.dropdown-toggle + .dropdown-menu {
|
||||
transform: scale(0);
|
||||
transform-origin: 0 0;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
.dropdown-menu.show {
|
||||
.dropdown-item.dropdown-toggle + .dropdown-menu.show {
|
||||
left: 101% !important;
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
.dropdown-toggle.open:after {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// menu-on-left
|
||||
|
||||
@media all and (max-width: 991px) {
|
||||
.menu-on-left .navbar{
|
||||
.container,
|
||||
.container-fluid {
|
||||
display: flex;
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
}
|
||||
|
||||
.timepicker {
|
||||
.btn .ripple-container {
|
||||
top: -11px;
|
||||
left: 3px;
|
||||
z-index: 1;
|
||||
width: 40px;
|
||||
border-radius: 50% !important;
|
||||
height: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.card-calendar {
|
||||
.fc-button:focus {
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.error-page .title {
|
||||
font-size: 12em;
|
||||
color: $white-color;
|
||||
letter-spacing: $mdb-input-font-size-base;
|
||||
font-weight: $font-weight-extra-bold;
|
||||
}
|
||||