/** * (c) jSuites Javascript Web Components * * Author: Paul Hodel * Website: https://bossanova.uk/jsuites/ * Description: Create amazing web based applications. * * MIT License * */ .japp { height: 100%; box-sizing: border-box; overflow: scroll; background-color: #fafafa; line-height: 1.4; font-size: 16px; font-family:-apple-system,SF UI Text,Helvetica Neue,Helvetica,Arial,sans-serif !important; } .japp a { text-decoration: none; } .japp input, .japp textarea, .japp select, .japp div { font-family:-apple-system,SF UI Text,Helvetica Neue,Helvetica,Arial,sans-serif !important; } .japp .red { color: red; border-color: 1px solid red; } .japp .link { color: var(--active-color); cursor: pointer; } .japp button { border-radius: 4px; width: 100%; border: 1px solid var(--active-color); color: var(--active-color); background-color: transparent; padding: 4px; outline: none; } .japp button:active { border: 1px solid #000; color: #000; } .japp.warning::before { content: 'No internet connection'; background-color: red; color: #fff; padding: 2px; position: fixed; top: 0px; left: 0px; z-index: 10; width: 100%; font-size: 0.55em; text-align: center; } japp.jwarning .page { padding-top: 60px; } /** Navbar **/ .japp .navbar { position:fixed; top: 0; width: 100%; z-index: 1; margin: 0; -webkit-backface-visibility: hidden; -webkit-transform: translate3d(0,0,0); -webkit-box-sizing: border-box; backface-visibility: hidden; box-sizing: border-box; transform: translate3d(0,0,0); height: 44px; background-color: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.1); } .japp.jwarning .navbar { top:16px; } .japp .navbar-container { padding: 0 8px; position: absolute; left: 0; top: 0; width: 100%; height: 100%; -webkit-box-sizing: border-box; box-sizing: border-box; vertical-align:middle; display: flex; -webkit-flex-flow: row wrap; justify-content: space-between; align-items:center; } .japp .navbar-container div { text-align:center; } .japp .navbar-container div.title { display: flex; } .japp .navbar-container div.title div { line-height:24px; } .japp .navbar-container div.icon { width:24px; } .japp .navbar-container div i { display:block; } .japp .navbar-container div img { height:28px; display:block; } .japp .navbar-container div.title div img { border-radius:12px; width:24px; height:24px; margin-right:6px; } .japp .navbar .icon { color:var(--active-color); } .japp .title { font-size:1.2em; } .japp .block { padding:15px; color: #6d6d72; font-size:0.9em; box-sizing: border-box; } .japp .block-title { text-transform: uppercase; color: #6d6d72; margin: 25px 15px 10px; line-height: 17px; position: relative; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; line-height: 1; font-size:0.9em; } .japp .block-strong { background-color:#fff; color: #000; } .japp .block-border { border-top:1px solid #ddd; border-bottom:1px solid #ddd; } .japp .block-footer { text-transform: uppercase; padding:15px; color: #6d6d72; font-size:0.7em; } .japp .block-collapse { max-height:100px; overflow-y:hidden; } .japp .block-instruction { text-transform: uppercase; padding:15px; color: #6d6d72; font-size:0.7em; text-align:center; } .japp .pages { position: absolute; display: flex; flex-wrap: nowrap; align-items: flex-start; height: 100%; width: 100%; } .japp .page { padding-top: 45px; padding-bottom: 45px; min-height: 100%; min-width: 100%; box-sizing: border-box; overflow-y: auto; /*will-change: scroll-position; -webkit-overflow-scrolling: touch; -webkit-transform: translateZ(0px); -webkit-transform: translate3d(0,0,0); -webkit-perspective: 1000;*/ } .japp .panel { position:fixed; top: 0; left: 0; margin: 0; width:60vw; max-width:220px; height:100vh; background: #fff; z-index: 2; -webkit-box-sizing: border-box; box-sizing: border-box; box-shadow: 0 -1px 2px rgba(0,0,0,.1); padding:4px; } .japp .panel-left { -webkit-box-shadow: 0px 2px 15px -5px rgba(0, 0, 0, 0.7); box-shadow: 0px 2px 15px -5px rgba(0, 0, 0, 0.7); } .japp .panel a { color:var(--active-color); } /** Options **/ .japp .options { background-color:#fff; border-top:1px solid #e6e6e8; border-bottom:1px solid #e6e6e8; padding-left:15px; margin-top:10px; } .japp .options:empty { display:none; } .japp .options .option { padding-top:10px; padding-bottom:10px; text-transform:uppercase; font-size:1em; border-bottom:1px solid #e6e6e8; overflow-x:hidden; -webkit-box-sizing: border-box; box-sizing: border-box; vertical-align:middle; display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex; -webkit-flex-flow: row nowrap; justify-content: space-between; align-items:center; flex-wrap:nowrap; } .japp .options .option:last-child { border-bottom:0px; } .japp .options label { width:100%; } .japp .options input[type='text'], .japp .options textarea { outline:none; border:1px solid transparent; font-size:1em; margin:0px; padding:0px; width:100%; box-sizing:border-box; } .japp .options textarea { height:100px; } .japp .options input[type='checkbox'], .japp .options input[type='radio'] { visibility: hidden; } .japp .options input[type='checkbox'] ~ i, .japp .options input[type='radio'] ~ i { background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxeiIgZmlsbD0iIzAwN2FmZiIvPjwvc3ZnPg=='); background-repeat: no-repeat; content:''; visibility: hidden; margin-right:10px; line-height:24px; width:24px; height:24px; } .japp .options input[type='checkbox']:checked ~ i, .japp .options input[type='radio']:checked ~ i { visibility: visible; } .japp .options .jdropdown { display: block; } .japp .options .jdropdown .jdropdown-header { border: 0px; padding: 0px; border-bottom: 1px solid #e6e6e8; text-transform: uppercase; outline: none; } .japp .options .jdropdown:last-child .jdropdown-header { border-bottom: 0px; } .japp .options .jdropdown-searchbar.jdropdown-focus .jdropdown-header { border:0px; padding: 5px; } .japp .options .jcalendar-input { background-position: top 50% right 8px; } .japp .options .icon { float:left; margin-right:10px; max-width:40px; max-height:40px; border-radius:20px; color:#929292; } .japp .options .option .option-actions { display:flex; transform: translateX(100%); width:0px; } .japp .options .option .option-actions > div { padding-right:5px; } .japp .options .option .option-actions > div > i { width:40px; height:40px; color:#fff; font-size:24px; line-height:40px; text-align:center; border-radius:30px; background-color:red; } .japp .options .option .option-actions.small > div > i { color:#000; width:24px; height:24px; font-size:24px; line-height:24px; border-radius:24px; background-color:transparent; } .japp .options .option-title { display:block; padding-top:10px; padding-bottom:10px; text-transform:uppercase; font-size:1em; vertical-align:center; } .japp .options .option-title::after { content:'\e313'; font-family: 'material icons'; font-size:24px; margin-right:10px; float:right; width:24px; height:24px; line-height:24px; } .japp .options .option-title.selected::after { content:'\e316'; } .japp .options .option-title.selected ~ div { display:block; } .japp .options .option-group { border-top:1px solid #e6e6e8; background-color:#fff; display:none; } .japp .options .option-link:after { content:'\e315'; font-family: 'material icons'; color:var(--active-color); font-size:24px; margin-right:10px; float:right; width:24px; height:24px; line-height:24px; display:block; } .japp .options .option-header { padding-left:10px; padding-right:10px; flex-grow:10; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .japp .options .option .option-name { font-size:1em; text-overflow: ellipsis; width: 100%; overflow: hidden; } .japp .options .option .option-small { font-size:0.7em; color: #6d6d72; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; display:block; } .japp .options .option .option-image img { width:40px; height:40px; border-radius:20px; display:block; } .japp .options .option .option-image-small img { width:24px; height:auto; border-radius:50px; display:block; } .japp .options .option .option-image .option-badge { position: absolute; background-color: red; color: #fff; width: 16px; height: 16px; line-height: 16px; border-radius: 16px; text-align: center; font-size: 7px; margin: 28px; } .japp .options .option .option-image-small .option-badge { position: absolute; background-color: red; color: #fff; width: 16px; height: 16px; line-height: 16px; border-radius: 16px; text-align: center; font-size: 7px; margin: 12px; } .japp .options .option .option-badge.solid { background-color: red; color: red; } .japp .options .option .option-badge.solid-green { background-color: green; color: green; } .japp .options .option .option-badge:empty { display:none; } .japp .options .option .option-date { float:right; font-size:0.6em; color:#888; margin-right:15px; white-space: nowrap; } .japp .options .option .option-right { margin-right:15px; } .japp .options .option .option-badget { background-color:red; border-radius:12px; width:24px; height:24px; line-height:24px; font-size:0.7em; color:#fff; text-align:center; } .japp .options .option .option-badget:empty { display:none; } .japp .options input::-webkit-input-placeholder { text-transform:uppercase; } .japp .options input::-moz-placeholder { text-transform:uppercase; } .japp .options input:-ms-input-placeholder { text-transform:uppercase; } .japp .options input:-moz-placeholder { text-transform:uppercase; } /** Actionsheet **/ .jactionsheet { position:fixed; left: 0; bottom: 0; width: 100%; min-height:100%; z-index:10; background-color:rgba(0,0,0,0.5); -webkit-transition-duration: .2s; transition-duration: .2s; display: flex; -ms-flex-align: baseline; -webkit-align-items: baseline; -webkit-box-align: baseline; align-items: baseline; } .jactionsheet .jactionsheet-content { width:100%; align-self: flex-end; } .jactionsheet .jactionsheet-title { font-size:1em; font-weight:bold; padding:8px; } .jactionsheet .jactionsheet-message { padding:4px; } .jactionsheet .jactionsheet-group { box-sizing: border-box; margin:10px; background-color:#fff; border-radius:5px; } .jactionsheet .jactionsheet-group > div { font-size:1.4em; font-weight:bold; padding:4px; border-top:1px solid #ccc; text-align:center; width:100%; box-sizing: border-box; } .jactionsheet .jactionsheet-group > div:first-child { border-top:0px; } .jactionsheet .jactionsheet-group input { border:0px; margin:0px; background-color:transparent; color:var(--active-color); width:100%; outline:none; font-size:1em; } .jactionsheet .jactionsheet-group input.jactionsheet-cancel { color:red; } /** Badge **/ .japp .jbadge { position:relative; display:inline-block; top:-12px; left:-12px; } .japp .jbadge > div { background-color:red; color:#fff; width:16px; height:16px; line-height:16px; border-radius:16px; text-align:center; font-size:8px; position:absolute; } .japp .jbadge > div:empty { display:none; } /** Progressbar **/ .japp .progressbar-container { margin: 15px; margin-left: 0px; margin-right: 0px; margin-top: 5px; } .japp .progressbar { width:100%; border:1px solid var(--active-color); border-radius:1px; } .japp .progressbar-title { margin-bottom:2px; text-transform:uppercase; display:flex; justify-content:space-between; } .japp .progressbar div { background-color:var(--active-color); height:4px; width:0%; } /** Topsearch **/ .japp .top-search { margin: 0px; padding: 10px; border-bottom: 1px solid #ddd; } .japp .top-search input { background-color: #e6e6e6; border: 0px; border-radius: 4px; outline: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='gray'%3E%3Cpath d='M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: 5px center; width: 100%; padding: 8px; padding-left: 32px; } /** Range **/ .japp .range { -webkit-appearance: none; margin: 18px 0; width: 100%; } .japp .range:focus { outline: none; } .japp .range::-webkit-slider-runnable-track { width: 100%; height: 4px; cursor: pointer; animation: 0.2s; background: #ccc; border-radius: 1.3px; } .japp .range::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; width:24px; height:24px; background:#fff; cursor:pointer; border-radius:24px; margin-top:-10px; border:0px; box-shadow:0px 1px 3px 1px #bbb; } .japp .range::-moz-range-track { width:100%; cursor:pointer; animation:0.2s; background:#ccc; border-radius:1.3px; } .japp .range::-moz-range-thumb { width:24px; height:24px; background:#fff; cursor:pointer; border-radius:24px; border:0px; box-shadow:0px 1px 3px 1px #bbb; } .japp .range::-ms-track { width: 100%; cursor: pointer; animation: 0.2s; background: transparent; border-color: transparent; border-width: 16px 0; color: transparent; border-radius:1.3px; } .japp .range::-ms-fill-lower { background:#ccc; height:5px; } .japp .range::-ms-fill-upper { background:#ccc; height:5px; } .japp .range::-ms-thumb { width:24px; height:24px; background:#fff; cursor:pointer; border-radius:24px; border:0px; box-shadow:0px 1px 3px 1px #bbb; } .japp .range:focus::-ms-fill-lower { background: #ccc; } .japp .range:focus::-ms-fill-upper { background: #ccc; } /** Placeholders **/ .japp *::placeholder { color: #cccccc; opacity: 1; } .japp *:-ms-input-placeholder { color: #cccccc; } .japp *::-ms-input-placeholder { color: #cccccc; } .japp *::-webkit-input-placeholder { color: #cccccc; } @supports (-webkit-overflow-scrolling: touch) { .app .options input:checked:before { top:-12px; } } @media only screen and (max-device-width : 800px) { .jsuites * { -webkit-tap-highlight-color: transparent; -webkit-touch-callout: none; } body.jsuites { margin: 0px; padding: 0px; width: 100%; height: 100%; min-height: 100%; line-height: 1.4; font-family: -apple-system,SF UI Text,Helvetica Neue,Helvetica,Arial,sans-serif !important; background-color: #fff; } .jsuites input, .jsuites select, .jsuites textarea, .jsuites div { font-family:-apple-system,SF UI Text,Helvetica Neue,Helvetica,Arial,sans-serif !important; } } .app .jtemplate-empty { text-align:center; padding-top:10px; padding-bottom:10px; margin-right:10px; } /** * Dialog v1.0.1 * Author: paul.hodel@gmail.com * https://github.com/paulhodel/jtools */ .jdialog { position:fixed; left: 0; top: 0; width: 100%; min-height:100%; z-index:10; background-color:rgba(0,0,0,0.5); -webkit-transition-duration: .1s; transition-duration: .1s; display: flex; -ms-flex-align: center; -webkit-align-items: center; -webkit-box-align: center; align-items: center; } .jdialog .jdialog-container { width:100%; max-width:280px; box-sizing: border-box; margin:0 auto; vertical-align:middle; background-color:#fff; border-radius:10px; opacity: 0; transition: opacity .2s; -webkit-transition: opacity .2s; } .jdialog .jdialog-header { padding:10px; text-align:center; } .jdialog .jdialog-header .jdialog-title { font-size:1em; font-weight:bold; padding:8px; } .jdialog .jdialog-header .jdialog-message { padding: 4px; } .jdialog .jdialog-footer { border-top: 1px solid #ccc; display: flex; flex-wrap: wrap; align-content: stretch; align-items: center; text-align: center; } .jdialog .jdialog-footer > div { padding:4px; border-left:1px solid #ccc; text-align:center; flex: 1; } .jdialog .jdialog-footer > div:first-child { border-left:0px; } .jdialog .jdialog-footer input { border: 0px; margin: 0px; background-color: transparent; color: var(--active-color); width: 100%; outline: none; } .jrefresh { background-image: url("data:image/svg+xml,%3Csvg class='lds-typing' width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 100 100' preserveAspectRatio='xMidYMid'%3E%3Ccircle cx='27.5' cy='38.1294' r='5' fill='%23df1317'%3E%3Canimate attributeName='cy' calcMode='spline' keySplines='0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5' repeatCount='indefinite' values='62.5;37.5;62.5;62.5' keyTimes='0;0.25;0.5;1' dur='1s' begin='-0.5s'%3E%3C/animate%3E%3C/circle%3E%3Ccircle cx='42.5' cy='38.9606' r='5' fill='%23e4934b'%3E%3Canimate attributeName='cy' calcMode='spline' keySplines='0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5' repeatCount='indefinite' values='62.5;37.5;62.5;62.5' keyTimes='0;0.25;0.5;1' dur='1s' begin='-0.375s'%3E%3C/animate%3E%3C/circle%3E%3Ccircle cx='57.5' cy='48.6466' r='5' fill='%23e2bb8b'%3E%3Canimate attributeName='cy' calcMode='spline' keySplines='0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5' repeatCount='indefinite' values='62.5;37.5;62.5;62.5' keyTimes='0;0.25;0.5;1' dur='1s' begin='-0.25s'%3E%3C/animate%3E%3C/circle%3E%3Ccircle cx='72.5' cy='62.5' r='5' fill='%23e1e7e7'%3E%3Canimate attributeName='cy' calcMode='spline' keySplines='0 0.5 0.5 1;0.5 0 1 0.5;0.5 0.5 0.5 0.5' repeatCount='indefinite' values='62.5;37.5;62.5;62.5' keyTimes='0;0.25;0.5;1' dur='1s' begin='-0.125s'%3E%3C/animate%3E%3C/circle%3E%3C/svg%3E"); background-repeat: no-repeat; background-size: 70px; background-position: center; backgrounnd-color: transparent; width: 100%; height: 70px; } .jrefresh.holding { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E"); background-size: 24px; } .jrefresh.ready { transform: rotate(-180deg); transition: transform 150ms ease; }