Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/chipsenkbeil/grid-side.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChip Senkbeil <chip.senkbeil@gmail.com>2015-09-27 03:55:35 +0300
committerChip Senkbeil <chip.senkbeil@gmail.com>2015-09-27 03:55:35 +0300
commit03b713e8c778ff56fbbc094a9b84b8cfa4e3b71d (patch)
tree364de87480a48e37c69cbedd9102259179563fdf
parentceb019f0bcba8eccd21cc7424c4b88a771cf0c9c (diff)
Added initial project templates, added vex (dialog library) to use with projects
-rw-r--r--layouts/partials/project/collection.html7
-rw-r--r--layouts/partials/project/item.html21
-rw-r--r--layouts/partials/project/list.html16
-rw-r--r--layouts/partials/project/single.html15
-rw-r--r--layouts/project/single.html2
-rw-r--r--layouts/section/project.html2
-rw-r--r--static/css/vex-theme-default.css388
-rw-r--r--static/css/vex.css248
-rw-r--r--static/js/vex.combined.min.js2
9 files changed, 701 insertions, 0 deletions
diff --git a/layouts/partials/project/collection.html b/layouts/partials/project/collection.html
new file mode 100644
index 0000000..3bc516c
--- /dev/null
+++ b/layouts/partials/project/collection.html
@@ -0,0 +1,7 @@
+
+<div class="masonry-flex-container infinite-scroll">
+ {{ range .Paginator.Pages }}
+ {{ partial "project/item.html" . }}
+ {{ end }}
+</div>
+
diff --git a/layouts/partials/project/item.html b/layouts/partials/project/item.html
new file mode 100644
index 0000000..d39d608
--- /dev/null
+++ b/layouts/partials/project/item.html
@@ -0,0 +1,21 @@
+
+{{ $url := $.Site.BaseURL }}
+{{ $image := .Params.image | urlize }}
+{{ $title := .Title }}
+{{ $summary := .Summary }}
+{{ $link := .Permalink }}
+<!-- TODO: Figure out why line height causes issues here -->
+<div class="flex-item flex-item-spacing no-line-height">
+ <div class="relative rounded-corners z-depth-1 lazyload" data-noscript="">
+ <noscript>
+ <a href="{{ $link }}">
+
+ <img src="{{ $image }}" class="fill-container-width rounded-corners z-depth-1" />
+ <div class="highlight-block rounded-corners">
+ <h3 class="white-text">{{ $title }}</h3>
+ </div>
+ </a>
+ </noscript>
+ </div>
+</div>
+
diff --git a/layouts/partials/project/list.html b/layouts/partials/project/list.html
new file mode 100644
index 0000000..581f660
--- /dev/null
+++ b/layouts/partials/project/list.html
@@ -0,0 +1,16 @@
+{{ partial "core/html-start.html" . }}
+{{ partial "core/head.html" . }}
+
+<body class="page-colors minimum-viewport-height">
+ {{ partial "core/main-menu.html" . }}
+
+ <section class="main-content">
+ {{ partial "project/collection.html" . }}
+ {{ partial "extra/pagination.html" . }}
+ </section>
+
+ {{ partial "core/js.html" . }}
+</body>
+
+{{ partial "core/html-end.html" . }}
+
diff --git a/layouts/partials/project/single.html b/layouts/partials/project/single.html
new file mode 100644
index 0000000..145b1f3
--- /dev/null
+++ b/layouts/partials/project/single.html
@@ -0,0 +1,15 @@
+{{ partial "core/html-start.html" . }}
+{{ partial "core/head.html" . }}
+
+<body class="page-colors minimum-viewport-height">
+ {{ partial "core/main-menu.html" . }}
+
+ <section class="main-content">
+ {{ partial "project/item" . }}
+ </section>
+
+ {{ partial "core/js.html" . }}
+</body>
+
+{{ partial "core/html-end.html" . }}
+
diff --git a/layouts/project/single.html b/layouts/project/single.html
new file mode 100644
index 0000000..c83858d
--- /dev/null
+++ b/layouts/project/single.html
@@ -0,0 +1,2 @@
+{{ partial "project/single.html" . }}
+
diff --git a/layouts/section/project.html b/layouts/section/project.html
new file mode 100644
index 0000000..bc82727
--- /dev/null
+++ b/layouts/section/project.html
@@ -0,0 +1,2 @@
+{{ partial "project/list.html" . }}
+
diff --git a/static/css/vex-theme-default.css b/static/css/vex-theme-default.css
new file mode 100644
index 0000000..989d261
--- /dev/null
+++ b/static/css/vex-theme-default.css
@@ -0,0 +1,388 @@
+@keyframes vex-flyin {
+ 0% {
+ opacity: 0;
+ transform: translateY(-40px);
+ -webkit-transform: translateY(-40px);
+ -moz-transform: translateY(-40px);
+ -ms-transform: translateY(-40px);
+ -o-transform: translateY(-40px); }
+
+ 100% {
+ opacity: 1;
+ transform: translateY(0);
+ -webkit-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -ms-transform: translateY(0);
+ -o-transform: translateY(0); } }
+
+@-webkit-keyframes vex-flyin {
+ 0% {
+ opacity: 0;
+ transform: translateY(-40px);
+ -webkit-transform: translateY(-40px);
+ -moz-transform: translateY(-40px);
+ -ms-transform: translateY(-40px);
+ -o-transform: translateY(-40px); }
+
+ 100% {
+ opacity: 1;
+ transform: translateY(0);
+ -webkit-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -ms-transform: translateY(0);
+ -o-transform: translateY(0); } }
+
+@-moz-keyframes vex-flyin {
+ 0% {
+ opacity: 0;
+ transform: translateY(-40px);
+ -webkit-transform: translateY(-40px);
+ -moz-transform: translateY(-40px);
+ -ms-transform: translateY(-40px);
+ -o-transform: translateY(-40px); }
+
+ 100% {
+ opacity: 1;
+ transform: translateY(0);
+ -webkit-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -ms-transform: translateY(0);
+ -o-transform: translateY(0); } }
+
+@-ms-keyframes vex-flyin {
+ 0% {
+ opacity: 0;
+ transform: translateY(-40px);
+ -webkit-transform: translateY(-40px);
+ -moz-transform: translateY(-40px);
+ -ms-transform: translateY(-40px);
+ -o-transform: translateY(-40px); }
+
+ 100% {
+ opacity: 1;
+ transform: translateY(0);
+ -webkit-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -ms-transform: translateY(0);
+ -o-transform: translateY(0); } }
+
+@-o-keyframes vex-flyin {
+ 0% {
+ opacity: 0;
+ transform: translateY(-40px);
+ -webkit-transform: translateY(-40px);
+ -moz-transform: translateY(-40px);
+ -ms-transform: translateY(-40px);
+ -o-transform: translateY(-40px); }
+
+ 100% {
+ opacity: 1;
+ transform: translateY(0);
+ -webkit-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -ms-transform: translateY(0);
+ -o-transform: translateY(0); } }
+
+@keyframes vex-flyout {
+ 0% {
+ opacity: 1;
+ transform: translateY(0);
+ -webkit-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -ms-transform: translateY(0);
+ -o-transform: translateY(0); }
+
+ 100% {
+ opacity: 0;
+ transform: translateY(-40px);
+ -webkit-transform: translateY(-40px);
+ -moz-transform: translateY(-40px);
+ -ms-transform: translateY(-40px);
+ -o-transform: translateY(-40px); } }
+
+@-webkit-keyframes vex-flyout {
+ 0% {
+ opacity: 1;
+ transform: translateY(0);
+ -webkit-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -ms-transform: translateY(0);
+ -o-transform: translateY(0); }
+
+ 100% {
+ opacity: 0;
+ transform: translateY(-40px);
+ -webkit-transform: translateY(-40px);
+ -moz-transform: translateY(-40px);
+ -ms-transform: translateY(-40px);
+ -o-transform: translateY(-40px); } }
+
+@-moz-keyframes vex-flyout {
+ 0% {
+ opacity: 1;
+ transform: translateY(0);
+ -webkit-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -ms-transform: translateY(0);
+ -o-transform: translateY(0); }
+
+ 100% {
+ opacity: 0;
+ transform: translateY(-40px);
+ -webkit-transform: translateY(-40px);
+ -moz-transform: translateY(-40px);
+ -ms-transform: translateY(-40px);
+ -o-transform: translateY(-40px); } }
+
+@-ms-keyframes vex-flyout {
+ 0% {
+ opacity: 1;
+ transform: translateY(0);
+ -webkit-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -ms-transform: translateY(0);
+ -o-transform: translateY(0); }
+
+ 100% {
+ opacity: 0;
+ transform: translateY(-40px);
+ -webkit-transform: translateY(-40px);
+ -moz-transform: translateY(-40px);
+ -ms-transform: translateY(-40px);
+ -o-transform: translateY(-40px); } }
+
+@-o-keyframes vex-flyout {
+ 0% {
+ opacity: 1;
+ transform: translateY(0);
+ -webkit-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -ms-transform: translateY(0);
+ -o-transform: translateY(0); }
+
+ 100% {
+ opacity: 0;
+ transform: translateY(-40px);
+ -webkit-transform: translateY(-40px);
+ -moz-transform: translateY(-40px);
+ -ms-transform: translateY(-40px);
+ -o-transform: translateY(-40px); } }
+
+@keyframes vex-pulse {
+ 0% {
+ -moz-box-shadow: inset 0 0 0 300px transparent;
+ -webkit-box-shadow: inset 0 0 0 300px transparent;
+ box-shadow: inset 0 0 0 300px transparent; }
+
+ 70% {
+ -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
+ -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
+ box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
+
+ 100% {
+ -moz-box-shadow: inset 0 0 0 300px transparent;
+ -webkit-box-shadow: inset 0 0 0 300px transparent;
+ box-shadow: inset 0 0 0 300px transparent; } }
+
+@-webkit-keyframes vex-pulse {
+ 0% {
+ -moz-box-shadow: inset 0 0 0 300px transparent;
+ -webkit-box-shadow: inset 0 0 0 300px transparent;
+ box-shadow: inset 0 0 0 300px transparent; }
+
+ 70% {
+ -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
+ -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
+ box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
+
+ 100% {
+ -moz-box-shadow: inset 0 0 0 300px transparent;
+ -webkit-box-shadow: inset 0 0 0 300px transparent;
+ box-shadow: inset 0 0 0 300px transparent; } }
+
+@-moz-keyframes vex-pulse {
+ 0% {
+ -moz-box-shadow: inset 0 0 0 300px transparent;
+ -webkit-box-shadow: inset 0 0 0 300px transparent;
+ box-shadow: inset 0 0 0 300px transparent; }
+
+ 70% {
+ -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
+ -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
+ box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
+
+ 100% {
+ -moz-box-shadow: inset 0 0 0 300px transparent;
+ -webkit-box-shadow: inset 0 0 0 300px transparent;
+ box-shadow: inset 0 0 0 300px transparent; } }
+
+@-ms-keyframes vex-pulse {
+ 0% {
+ -moz-box-shadow: inset 0 0 0 300px transparent;
+ -webkit-box-shadow: inset 0 0 0 300px transparent;
+ box-shadow: inset 0 0 0 300px transparent; }
+
+ 70% {
+ -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
+ -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
+ box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
+
+ 100% {
+ -moz-box-shadow: inset 0 0 0 300px transparent;
+ -webkit-box-shadow: inset 0 0 0 300px transparent;
+ box-shadow: inset 0 0 0 300px transparent; } }
+
+@-o-keyframes vex-pulse {
+ 0% {
+ -moz-box-shadow: inset 0 0 0 300px transparent;
+ -webkit-box-shadow: inset 0 0 0 300px transparent;
+ box-shadow: inset 0 0 0 300px transparent; }
+
+ 70% {
+ -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
+ -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
+ box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
+
+ 100% {
+ -moz-box-shadow: inset 0 0 0 300px transparent;
+ -webkit-box-shadow: inset 0 0 0 300px transparent;
+ box-shadow: inset 0 0 0 300px transparent; } }
+
+.vex.vex-theme-default {
+ padding-top: 160px;
+ padding-bottom: 160px; }
+ .vex.vex-theme-default.vex-closing .vex-content {
+ animation: vex-flyout 0.5s;
+ -webkit-animation: vex-flyout 0.5s;
+ -moz-animation: vex-flyout 0.5s;
+ -ms-animation: vex-flyout 0.5s;
+ -o-animation: vex-flyout 0.5s;
+ -webkit-backface-visibility: hidden; }
+ .vex.vex-theme-default .vex-content {
+ animation: vex-flyin 0.5s;
+ -webkit-animation: vex-flyin 0.5s;
+ -moz-animation: vex-flyin 0.5s;
+ -ms-animation: vex-flyin 0.5s;
+ -o-animation: vex-flyin 0.5s;
+ -webkit-backface-visibility: hidden; }
+ .vex.vex-theme-default .vex-content {
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ font-family: "Helvetica Neue", sans-serif;
+ background: #f0f0f0;
+ color: #444;
+ padding: 1em;
+ position: relative;
+ margin: 0 auto;
+ max-width: 100%;
+ width: 450px;
+ font-size: 1.1em;
+ line-height: 1.5em; }
+ .vex.vex-theme-default .vex-content h1, .vex.vex-theme-default .vex-content h2, .vex.vex-theme-default .vex-content h3, .vex.vex-theme-default .vex-content h4, .vex.vex-theme-default .vex-content h5, .vex.vex-theme-default .vex-content h6, .vex.vex-theme-default .vex-content p, .vex.vex-theme-default .vex-content ul, .vex.vex-theme-default .vex-content li {
+ color: inherit; }
+ .vex.vex-theme-default .vex-close {
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ position: absolute;
+ top: 0;
+ right: 0;
+ cursor: pointer; }
+ .vex.vex-theme-default .vex-close:before {
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ position: absolute;
+ content: "\00D7";
+ font-size: 26px;
+ font-weight: normal;
+ line-height: 31px;
+ height: 30px;
+ width: 30px;
+ text-align: center;
+ top: 3px;
+ right: 3px;
+ color: #bbb;
+ background: transparent; }
+ .vex.vex-theme-default .vex-close:hover:before, .vex.vex-theme-default .vex-close:active:before {
+ color: #777;
+ background: #e0e0e0; }
+ .vex.vex-theme-default .vex-dialog-form .vex-dialog-message {
+ margin-bottom: 0.5em; }
+ .vex.vex-theme-default .vex-dialog-form .vex-dialog-input {
+ margin-bottom: 1em; }
+ .vex.vex-theme-default .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="week"] {
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ background: #fff;
+ width: 100%;
+ padding: 0.25em 0.67em;
+ border: 0;
+ font-family: inherit;
+ font-weight: inherit;
+ font-size: inherit;
+ min-height: 2.5em;
+ margin: 0 0 0.25em; }
+ .vex.vex-theme-default .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-default .vex-dialog-form .vex-dialog-input input[type="week"]:focus {
+ -moz-box-shadow: inset 0 0 0 2px #8dbdf1;
+ -webkit-box-shadow: inset 0 0 0 2px #8dbdf1;
+ box-shadow: inset 0 0 0 2px #8dbdf1;
+ outline: none; }
+ .vex.vex-theme-default .vex-dialog-form .vex-dialog-buttons {
+ *zoom: 1; }
+ .vex.vex-theme-default .vex-dialog-form .vex-dialog-buttons:after {
+ content: "";
+ display: table;
+ clear: both; }
+ .vex.vex-theme-default .vex-dialog-button {
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ border: 0;
+ float: right;
+ margin: 0 0 0 0.5em;
+ font-family: inherit;
+ text-transform: uppercase;
+ letter-spacing: 0.1em;
+ font-size: 0.8em;
+ line-height: 1em;
+ padding: 0.75em 2em; }
+ .vex.vex-theme-default .vex-dialog-button.vex-last {
+ margin-left: 0; }
+ .vex.vex-theme-default .vex-dialog-button:focus {
+ animation: vex-pulse 1.1s infinite;
+ -webkit-animation: vex-pulse 1.1s infinite;
+ -moz-animation: vex-pulse 1.1s infinite;
+ -ms-animation: vex-pulse 1.1s infinite;
+ -o-animation: vex-pulse 1.1s infinite;
+ -webkit-backface-visibility: hidden;
+ outline: none; }
+ @media (max-width: 568px) {
+ .vex.vex-theme-default .vex-dialog-button:focus {
+ animation: none;
+ -webkit-animation: none;
+ -moz-animation: none;
+ -ms-animation: none;
+ -o-animation: none;
+ -webkit-backface-visibility: hidden; } }
+ .vex.vex-theme-default .vex-dialog-button.vex-dialog-button-primary {
+ background: #3288e6;
+ color: #fff; }
+ .vex.vex-theme-default .vex-dialog-button.vex-dialog-button-secondary {
+ background: #e0e0e0;
+ color: #777; }
+
+.vex-loading-spinner.vex-theme-default {
+ -moz-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
+ -webkit-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
+ box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
+ -moz-border-radius: 100%;
+ -webkit-border-radius: 100%;
+ border-radius: 100%;
+ background: #f0f0f0;
+ border: 0.2em solid transparent;
+ border-top-color: #bbb;
+ top: -1.1em;
+ bottom: auto; }
diff --git a/static/css/vex.css b/static/css/vex.css
new file mode 100644
index 0000000..f391221
--- /dev/null
+++ b/static/css/vex.css
@@ -0,0 +1,248 @@
+@keyframes vex-fadein {
+ 0% {
+ opacity: 0; }
+
+ 100% {
+ opacity: 1; } }
+
+@-webkit-keyframes vex-fadein {
+ 0% {
+ opacity: 0; }
+
+ 100% {
+ opacity: 1; } }
+
+@-moz-keyframes vex-fadein {
+ 0% {
+ opacity: 0; }
+
+ 100% {
+ opacity: 1; } }
+
+@-ms-keyframes vex-fadein {
+ 0% {
+ opacity: 0; }
+
+ 100% {
+ opacity: 1; } }
+
+@-o-keyframes vex-fadein {
+ 0% {
+ opacity: 0; }
+
+ 100% {
+ opacity: 1; } }
+
+@keyframes vex-fadeout {
+ 0% {
+ opacity: 1; }
+
+ 100% {
+ opacity: 0; } }
+
+@-webkit-keyframes vex-fadeout {
+ 0% {
+ opacity: 1; }
+
+ 100% {
+ opacity: 0; } }
+
+@-moz-keyframes vex-fadeout {
+ 0% {
+ opacity: 1; }
+
+ 100% {
+ opacity: 0; } }
+
+@-ms-keyframes vex-fadeout {
+ 0% {
+ opacity: 1; }
+
+ 100% {
+ opacity: 0; } }
+
+@-o-keyframes vex-fadeout {
+ 0% {
+ opacity: 1; }
+
+ 100% {
+ opacity: 0; } }
+
+@keyframes vex-rotation {
+ 0% {
+ transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg); }
+
+ 100% {
+ transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ -moz-transform: rotate(359deg);
+ -ms-transform: rotate(359deg);
+ -o-transform: rotate(359deg); } }
+
+@-webkit-keyframes vex-rotation {
+ 0% {
+ transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg); }
+
+ 100% {
+ transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ -moz-transform: rotate(359deg);
+ -ms-transform: rotate(359deg);
+ -o-transform: rotate(359deg); } }
+
+@-moz-keyframes vex-rotation {
+ 0% {
+ transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg); }
+
+ 100% {
+ transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ -moz-transform: rotate(359deg);
+ -ms-transform: rotate(359deg);
+ -o-transform: rotate(359deg); } }
+
+@-ms-keyframes vex-rotation {
+ 0% {
+ transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg); }
+
+ 100% {
+ transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ -moz-transform: rotate(359deg);
+ -ms-transform: rotate(359deg);
+ -o-transform: rotate(359deg); } }
+
+@-o-keyframes vex-rotation {
+ 0% {
+ transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg); }
+
+ 100% {
+ transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ -moz-transform: rotate(359deg);
+ -ms-transform: rotate(359deg);
+ -o-transform: rotate(359deg); } }
+
+.vex, .vex *, .vex *:before, .vex *:after {
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box; }
+
+.vex {
+ position: fixed;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+ z-index: 1111;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0; }
+
+.vex-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll; }
+
+.vex-overlay {
+ background: #000;
+ filter: alpha(opacity=40);
+ /* IE 5–7 */
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
+ /* IE 8 */ }
+
+.vex-overlay {
+ animation: vex-fadein 0.5s;
+ -webkit-animation: vex-fadein 0.5s;
+ -moz-animation: vex-fadein 0.5s;
+ -ms-animation: vex-fadein 0.5s;
+ -o-animation: vex-fadein 0.5s;
+ -webkit-backface-visibility: hidden;
+ position: fixed;
+ background: rgba(0, 0, 0, 0.4);
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0; }
+ .vex.vex-closing .vex-overlay {
+ animation: vex-fadeout 0.5s;
+ -webkit-animation: vex-fadeout 0.5s;
+ -moz-animation: vex-fadeout 0.5s;
+ -ms-animation: vex-fadeout 0.5s;
+ -o-animation: vex-fadeout 0.5s;
+ -webkit-backface-visibility: hidden; }
+
+.vex-content {
+ animation: vex-fadein 0.5s;
+ -webkit-animation: vex-fadein 0.5s;
+ -moz-animation: vex-fadein 0.5s;
+ -ms-animation: vex-fadein 0.5s;
+ -o-animation: vex-fadein 0.5s;
+ -webkit-backface-visibility: hidden;
+ background: #fff; }
+ .vex.vex-closing .vex-content {
+ animation: vex-fadeout 0.5s;
+ -webkit-animation: vex-fadeout 0.5s;
+ -moz-animation: vex-fadeout 0.5s;
+ -ms-animation: vex-fadeout 0.5s;
+ -o-animation: vex-fadeout 0.5s;
+ -webkit-backface-visibility: hidden; }
+
+.vex-close:before {
+ font-family: Arial, sans-serif;
+ content: "\00D7"; }
+
+.vex-dialog-form {
+ margin: 0; }
+
+.vex-dialog-button {
+ text-rendering: optimizeLegibility;
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ cursor: pointer;
+ -webkit-tap-highlight-color: transparent; }
+
+.vex-loading-spinner {
+ animation: vex-rotation 0.7s linear infinite;
+ -webkit-animation: vex-rotation 0.7s linear infinite;
+ -moz-animation: vex-rotation 0.7s linear infinite;
+ -ms-animation: vex-rotation 0.7s linear infinite;
+ -o-animation: vex-rotation 0.7s linear infinite;
+ -webkit-backface-visibility: hidden;
+ -moz-box-shadow: 0 0 1em rgba(0, 0, 0, 0.1);
+ -webkit-box-shadow: 0 0 1em rgba(0, 0, 0, 0.1);
+ box-shadow: 0 0 1em rgba(0, 0, 0, 0.1);
+ position: fixed;
+ z-index: 1112;
+ margin: auto;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 2em;
+ width: 2em;
+ background: #fff; }
+
+body.vex-open {
+ overflow: hidden; }
diff --git a/static/js/vex.combined.min.js b/static/js/vex.combined.min.js
new file mode 100644
index 0000000..0aa72ba
--- /dev/null
+++ b/static/js/vex.combined.min.js
@@ -0,0 +1,2 @@
+/*! vex.js, vex.dialog.js 2.3.2 */
+(function(){var a;a=function(a){var b,c;return b=!1,a(function(){var d;return d=(document.body||document.documentElement).style,b=void 0!==d.animation||void 0!==d.WebkitAnimation||void 0!==d.MozAnimation||void 0!==d.MsAnimation||void 0!==d.OAnimation,a(window).bind("keyup.vex",function(a){return 27===a.keyCode?c.closeByEscape():void 0})}),c={globalID:1,animationEndEvent:"animationend webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend",baseClassNames:{vex:"vex",content:"vex-content",overlay:"vex-overlay",close:"vex-close",closing:"vex-closing",open:"vex-open"},defaultOptions:{content:"",showCloseButton:!0,escapeButtonCloses:!0,overlayClosesOnClick:!0,appendLocation:"body",className:"",css:{},overlayClassName:"",overlayCSS:{},contentClassName:"",contentCSS:{},closeClassName:"",closeCSS:{}},open:function(b){return b=a.extend({},c.defaultOptions,b),b.id=c.globalID,c.globalID+=1,b.$vex=a("<div>").addClass(c.baseClassNames.vex).addClass(b.className).css(b.css).data({vex:b}),b.$vexOverlay=a("<div>").addClass(c.baseClassNames.overlay).addClass(b.overlayClassName).css(b.overlayCSS).data({vex:b}),b.overlayClosesOnClick&&b.$vexOverlay.bind("click.vex",function(b){return b.target===this?c.close(a(this).data().vex.id):void 0}),b.$vex.append(b.$vexOverlay),b.$vexContent=a("<div>").addClass(c.baseClassNames.content).addClass(b.contentClassName).css(b.contentCSS).append(b.content).data({vex:b}),b.$vex.append(b.$vexContent),b.showCloseButton&&(b.$closeButton=a("<div>").addClass(c.baseClassNames.close).addClass(b.closeClassName).css(b.closeCSS).data({vex:b}).bind("click.vex",function(){return c.close(a(this).data().vex.id)}),b.$vexContent.append(b.$closeButton)),a(b.appendLocation).append(b.$vex),c.setupBodyClassName(b.$vex),b.afterOpen&&b.afterOpen(b.$vexContent,b),setTimeout(function(){return b.$vexContent.trigger("vexOpen",b)},0),b.$vexContent},getSelectorFromBaseClass:function(a){return"."+a.split(" ").join(".")},getAllVexes:function(){return a("."+c.baseClassNames.vex+':not(".'+c.baseClassNames.closing+'") '+c.getSelectorFromBaseClass(c.baseClassNames.content))},getVexByID:function(b){return c.getAllVexes().filter(function(){return a(this).data().vex.id===b})},close:function(a){var b;if(!a){if(b=c.getAllVexes().last(),!b.length)return!1;a=b.data().vex.id}return c.closeByID(a)},closeAll:function(){var b;return b=c.getAllVexes().map(function(){return a(this).data().vex.id}).toArray(),(null!=b?b.length:void 0)?(a.each(b.reverse(),function(a,b){return c.closeByID(b)}),!0):!1},closeByID:function(d){var e,f,g,h,i;return f=c.getVexByID(d),f.length?(e=f.data().vex.$vex,i=a.extend({},f.data().vex),g=function(){return i.beforeClose?i.beforeClose(f,i):void 0},h=function(){return f.trigger("vexClose",i),e.remove(),a("body").trigger("vexAfterClose",i),i.afterClose?i.afterClose(f,i):void 0},b?(g(),e.unbind(c.animationEndEvent).bind(c.animationEndEvent,function(){return h()}).addClass(c.baseClassNames.closing)):(g(),h()),!0):void 0},closeByEscape:function(){var b,d,e;return e=c.getAllVexes().map(function(){return a(this).data().vex.id}).toArray(),(null!=e?e.length:void 0)?(d=Math.max.apply(Math,e),b=c.getVexByID(d),b.data().vex.escapeButtonCloses!==!0?!1:c.closeByID(d)):!1},setupBodyClassName:function(){return a("body").bind("vexOpen.vex",function(){return a("body").addClass(c.baseClassNames.open)}).bind("vexAfterClose.vex",function(){return c.getAllVexes().length?void 0:a("body").removeClass(c.baseClassNames.open)})},hideLoading:function(){return a(".vex-loading-spinner").remove()},showLoading:function(){return c.hideLoading(),a("body").append('<div class="vex-loading-spinner '+c.defaultOptions.className+'"></div>')}}},"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):window.vex=a(jQuery)}).call(this),function(){var a;a=function(a,b){var c,d;return null==b?a.error("Vex is required to use vex.dialog"):(c=function(b){var c;return c={},a.each(b.serializeArray(),function(){return c[this.name]?(c[this.name].push||(c[this.name]=[c[this.name]]),c[this.name].push(this.value||"")):c[this.name]=this.value||""}),c},d={},d.buttons={YES:{text:"OK",type:"submit",className:"vex-dialog-button-primary"},NO:{text:"Cancel",type:"button",className:"vex-dialog-button-secondary",click:function(a){return a.data().vex.value=!1,b.close(a.data().vex.id)}}},d.defaultOptions={callback:function(){},afterOpen:function(){},message:"Message",input:'<input name="vex" type="hidden" value="_vex-empty-value" />',value:!1,buttons:[d.buttons.YES,d.buttons.NO],showCloseButton:!1,onSubmit:function(e){var f,g;return f=a(this),g=f.parent(),e.preventDefault(),e.stopPropagation(),g.data().vex.value=d.getFormValueOnSubmit(c(f)),b.close(g.data().vex.id)},focusFirstInput:!0},d.defaultAlertOptions={message:"Alert",buttons:[d.buttons.YES]},d.defaultConfirmOptions={message:"Confirm"},d.open=function(c){var e;return c=a.extend({},b.defaultOptions,d.defaultOptions,c),c.content=d.buildDialogForm(c),c.beforeClose=function(a){return c.callback(a.data().vex.value)},e=b.open(c),c.focusFirstInput&&e.find('button[type="submit"], button[type="button"], input[type="submit"], input[type="button"], textarea, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"]').first().focus(),e},d.alert=function(b){return"string"==typeof b&&(b={message:b}),b=a.extend({},d.defaultAlertOptions,b),d.open(b)},d.confirm=function(b){return"string"==typeof b?a.error("dialog.confirm(options) requires options.callback."):(b=a.extend({},d.defaultConfirmOptions,b),d.open(b))},d.prompt=function(b){var c;return"string"==typeof b?a.error("dialog.prompt(options) requires options.callback."):(c={message:'<label for="vex">'+(b.label||"Prompt:")+"</label>",input:'<input name="vex" type="text" class="vex-dialog-prompt-input" placeholder="'+(b.placeholder||"")+'" value="'+(b.value||"")+'" />'},b=a.extend({},c,b),d.open(b))},d.buildDialogForm=function(b){var c,e,f;return c=a('<form class="vex-dialog-form" />'),f=a('<div class="vex-dialog-message" />'),e=a('<div class="vex-dialog-input" />'),c.append(f.append(b.message)).append(e.append(b.input)).append(d.buttonsToDOM(b.buttons)).bind("submit.vex",b.onSubmit),c},d.getFormValueOnSubmit=function(a){return a.vex||""===a.vex?"_vex-empty-value"===a.vex?!0:a.vex:a},d.buttonsToDOM=function(c){var d;return d=a('<div class="vex-dialog-buttons" />'),a.each(c,function(e,f){var g;return g=a('<button type="'+f.type+'"></button>').text(f.text).addClass(f.className+" vex-dialog-button "+(0===e?"vex-first ":"")+(e===c.length-1?"vex-last ":"")).bind("click.vex",function(c){return f.click?f.click(a(this).parents(b.getSelectorFromBaseClass(b.baseClassNames.content)),c):void 0}),g.appendTo(d)}),d},d)},"function"==typeof define&&define.amd?define(["jquery","vex"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("./vex.js")):window.vex.dialog=a(window.jQuery,window.vex)}.call(this); \ No newline at end of file