From 03b713e8c778ff56fbbc094a9b84b8cfa4e3b71d Mon Sep 17 00:00:00 2001 From: Chip Senkbeil Date: Sat, 26 Sep 2015 19:55:35 -0500 Subject: Added initial project templates, added vex (dialog library) to use with projects --- layouts/partials/project/collection.html | 7 + layouts/partials/project/item.html | 21 ++ layouts/partials/project/list.html | 16 ++ layouts/partials/project/single.html | 15 ++ layouts/project/single.html | 2 + layouts/section/project.html | 2 + static/css/vex-theme-default.css | 388 +++++++++++++++++++++++++++++++ static/css/vex.css | 248 ++++++++++++++++++++ static/js/vex.combined.min.js | 2 + 9 files changed, 701 insertions(+) create mode 100644 layouts/partials/project/collection.html create mode 100644 layouts/partials/project/item.html create mode 100644 layouts/partials/project/list.html create mode 100644 layouts/partials/project/single.html create mode 100644 layouts/project/single.html create mode 100644 layouts/section/project.html create mode 100644 static/css/vex-theme-default.css create mode 100644 static/css/vex.css create mode 100644 static/js/vex.combined.min.js 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 @@ + +
+ {{ range .Paginator.Pages }} + {{ partial "project/item.html" . }} + {{ end }} +
+ 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 }} + +
+ +
+ 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" . }} + + + {{ partial "core/main-menu.html" . }} + +
+ {{ partial "project/collection.html" . }} + {{ partial "extra/pagination.html" . }} +
+ + {{ partial "core/js.html" . }} + + +{{ 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" . }} + + + {{ partial "core/main-menu.html" . }} + +
+ {{ partial "project/item" . }} +
+ + {{ partial "core/js.html" . }} + + +{{ 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("
").addClass(c.baseClassNames.vex).addClass(b.className).css(b.css).data({vex:b}),b.$vexOverlay=a("
").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("
").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("
").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('
')}}},"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:'',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:'",input:''},b=a.extend({},c,b),d.open(b))},d.buildDialogForm=function(b){var c,e,f;return c=a('
'),f=a('
'),e=a('
'),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('
'),a.each(c,function(e,f){var g;return g=a('').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 -- cgit v1.2.3