From 1111bf72d677f0b7a4e26889e7ce7da37c9ba313 Mon Sep 17 00:00:00 2001 From: Attila Kerekes Date: Tue, 22 Nov 2022 22:53:07 +0100 Subject: [PATCH] feat: Add basic keyboard navigation --- public/css/app.css | 2 +- public/js/app.js | 2 +- public/mix-manifest.json | 4 +-- resources/assets/js/keyBindings.js | 35 +++++++++++++++++++++++++++ resources/assets/sass/_app.scss | 3 +++ resources/views/layouts/app.blade.php | 12 ++++----- webpack.mix.js | 3 ++- 7 files changed, 50 insertions(+), 11 deletions(-) create mode 100644 resources/assets/js/keyBindings.js diff --git a/public/css/app.css b/public/css/app.css index b0c4f029..1cea94b8 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -1,4 +1,4 @@ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{background:#cfd2d4}#switchuser{background:rgba(0,0,0,.5);position:absolute;padding:10px;color:#fff;text-align:center;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;align-items:center;border-top:2px solid hsla(0,0%,100%,.15);border-right:2px solid hsla(0,0%,100%,.15);box-shadow:0 0 10px 0 rgba(0,0,0,.4);border-radius:0 9px 0 0;line-height:1.5;font-size:14px}#switchuser img{width:50px;margin-bottom:5px;border-radius:50%}#switchuser .btn{font-size:13px;color:#fff;text-decoration:none;margin:8px -10px -10px;border-radius:0;width:calc(100% + 22px);background:hsla(0,0%,100%,.15);transition:all .35s ease-in-out}#switchuser .btn:hover{background:#d64d55}#tile-preview{align-items:center}.create .textarea{width:100%;margin:0 20px}.create .textarea textarea{width:100%;border:1px solid #dedfe2;padding:15px;border-radius:6px;height:100px;font-size:14px}.create .textarea label:not(.switch){width:100%;font-size:13px;color:#9094a5;margin-bottom:15px;display:block;font-weight:300}.appoptions{flex-direction:column;padding:20px;gap:5px}.appoptions,.appoptions .optdetails{display:flex}.appoptions .optdetails .input{margin:0 20px;width:200px}.appoptions .optvalue{display:flex;align-items:center;opacity:0;width:0;height:0;overflow:hidden}.appoptions .optvalue.active{opacity:1;width:auto;height:auto;overflow:visible}.appoptions button.dark{background:#1b1b1b;border:none;padding:12px 15px;border-radius:4px;color:#fff;min-width:240px}#app{min-height:100vh;background-image:url(../img/bg1.jpg);background-repeat:no-repeat;background-size:cover;background-position:bottom}#app,#app nav{display:flex;flex-direction:column}#app nav{height:100%;position:absolute;width:340px;left:-340px;transition:all .35s ease-in-out;background:rgba(0,0,0,.7);color:#fff;z-index:2}#app .content{flex-grow:1;display:flex;flex-direction:column}#app .content .appheader{background:rgba(0,0,0,.4);text-align:center;position:absolute;height:58px;width:100%;top:-58px;transition:all .35s ease-in-out;z-index:1}#app .content .appheader ul{display:inline-block;list-style:none;height:58px;border-left:1px solid rgba(0,0,0,.6);border-right:1px solid hsla(0,0%,100%,.1);margin:0;padding:0}#app .content .appheader li{display:inline-block;border-right:1px solid rgba(0,0,0,.6);border-left:1px solid hsla(0,0%,100%,.1)}#app .content .appheader a{display:inline-block;color:#fff;text-decoration:none;padding:20px}#app main{flex-direction:column}#app #sortable,#app main{padding:30px 10px;display:flex;justify-content:center;align-items:center;flex:1;position:relative;flex-wrap:wrap;align-content:center;list-style:none;margin:0}#config-buttons{position:fixed;bottom:0;right:0;display:flex;flex-direction:column}#config-buttons a{width:50px;height:50px;background:rgba(0,0,0,.8);text-align:center;line-height:50px;color:#fff;margin-top:1px}#config-buttons a img{width:26px;height:26px;margin-top:12px}.userlist,.userlist .user{display:flex;justify-content:center;align-items:center}.userlist .user{background:rgba(0,0,0,.5);padding:15px;flex-direction:column;margin:20px;color:#fff;text-decoration:none;border-radius:15px;border:5px solid hsla(0,0%,100%,.7);box-shadow:0 0 10px 0 rgba(0,0,0,.4)}.userlist .user-img{width:130px;height:130px;border-radius:50%;margin:10px 10px 15px}.userlist #password{color:#2f313a;width:100%;padding:5px 10px;margin:15px -5px}.userlist .btn{width:100%}.userlist .forgot{color:#fff;font-size:12px;margin-top:25px}.item-container{position:relative}.item-container .item-edit{color:#fff;position:absolute;bottom:20px;left:8px;width:30px;height:30px;background:rgba(0,0,0,.7);border-radius:50%;text-align:center;line-height:30px;display:none;z-index:1}.item-container .tooltip{padding:25px;border-radius:5px;background:rgba(0,0,0,.78);color:#fff;position:absolute;bottom:120px;left:0;right:0;font-size:13px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:0;opacity:0;transform:translateY(-20px);transition:all .3s}.item-container .tooltip.active{transform:translateY(0);opacity:1;z-index:4}.tile-actions{position:absolute;top:0;left:0;padding:7px;background:rgba(0,0,0,.85);font-size:12px;line-height:1;border-radius:6px;width:80px;height:90px;display:flex;opacity:0;align-items:center;justify-content:center;transition:all .3s;flex-direction:column;text-align:center;cursor:pointer}.tile-actions.active{opacity:1}.refresh{z-index:3}.refresh .icon{font-size:20px;margin-bottom:5px}.black{color:#000!important}.white{color:#fff!important}.message-container,.message-container2{width:100%;padding:10px 20px}.alert{margin:30px auto;text-align:center;max-width:800px;background:#f1f4f7;display:flex;justify-content:center;padding:5px 20px 5px 80px;box-shadow:0 0 15px 3px rgba(0,0,0,.3)}.alert.alert-danger,.alert.alert-success{position:relative}.alert.alert-danger:before,.alert.alert-success:before{content:"\F00C";font-family:Font Awesome\ 5 Pro;font-weight:900;position:absolute;top:0;left:0;bottom:0;width:60px;background:#0eb584;text-align:center;color:#fff;line-height:57px;font-size:24px;align-items:center;justify-content:center;display:flex}.alert.alert-danger:before{content:"\F00D";background:#d64d55}.alert a{color:#91a1b3}#app.header .add-item,#app.header .item{transform:scale(.9);opacity:.8;margin:20px 0}#app.sidebar nav{left:0}.add-item{width:280px;height:90px;margin:20px;flex:0 0 280px;border-radius:6px;padding:20px;border:4px dashed hsla(0,0%,100%,.7);box-shadow:0 0 20px 2px rgba(0,0,0,.3);color:#fff;overflow:hidden;position:relative;display:none;outline:1px solid transparent}.add-item.active,.add-item a{display:block}.add-item a{width:100%;text-align:center;line-height:40px;color:#fff;font-size:19px}.item{width:280px;height:90px;margin:20px;flex:0 0 280px;background-image:linear-gradient(90deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.25));border-radius:6px;padding:15px 55px 15px 15px;color:#fff;overflow:hidden;position:relative;transition:all .35s ease-in-out;outline:1px solid transparent;display:flex;align-items:center;border:1px solid #4a4a4a;border:1px solid rgba(76,76,76,.4);-webkit-background-clip:padding-box;background-clip:padding-box}.item:after{content:"";width:90px;height:90px;border-radius:50%;position:absolute;right:-48px;top:0;background:hsla(0,0%,100%,.1);box-shadow:0 0 40px 0 rgba(0,0,0,.2)}.item .link{position:absolute;right:0;top:0;height:100%;width:100%;text-align:right;line-height:90px;color:#fff;font-size:24px;z-index:1;padding-right:10px}.item .title{font-size:16px}.item .details{width:100%}.text-center{text-align:center!important}.module-container{box-shadow:0 0 10px 0 rgba(0,0,0,.4);border:1px solid #cdced8;background:#f9fafd;max-width:1000px;width:100%;margin:10px 40px;border-radius:5px;overflow:hidden}.module-container footer,.module-container header{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #fff;background:#f2f3f6;font-size:16px;border-bottom:1px solid #dbdce3;height:60px;position:relative}.module-container footer .section-title,.module-container header .section-title{font-size:18px;color:#5b5b5b;margin-left:25px}.module-container footer{border-top:1px solid #dbdce3}.module-container .table{width:100%;margin:0;background:#fff}.module-container .table thead th{background:#f2f3f6;color:#767d94;border-top:1px solid #fff;text-align:left;font-size:13px;text-transform:uppercase;padding:15px 25px}.module-container .table tbody tr:hover{background:#fefbf2}.module-container .table tbody tr:hover td:first-child{position:relative}.module-container .table tbody tr:hover td:first-child:before{content:"";position:absolute;top:0;left:0;bottom:0;width:5px;background:#0eb584}.module-container .table tbody td{padding:20px 25px;font-size:13px;color:#2f313a;max-width:500px;word-break:break-word}.module-container .table tbody td.form-error{background:#e69191;color:#fff;text-align:center}.module-container .table tbody a{color:#2f313a}.homesearch{height:51px}.toggleinput{display:flex;flex-direction:column-reverse;line-height:1;font-size:9px;font-weight:400;text-transform:uppercase;color:#ababab;padding:0 20px}.toggleinput label.name{margin-top:6px}.module-actions{display:flex;justify-content:space-between;align-items:center}.module-actions .button{font-size:18px;color:#515564;padding:0 10px;border:none;border-left:1px solid #cdced8;display:flex;line-height:1;position:relative;background:transparent;flex-direction:column;justify-content:center;align-items:center;min-width:65px;height:60px;text-decoration:none;box-sizing:border-box}.module-actions .button:after{position:absolute;content:"";top:0;left:0;bottom:0;border-right:1px solid #fff}.module-actions .button span{display:inline-block;line-height:1;font-size:9px;font-weight:400;text-transform:uppercase;color:#ababab;position:relative;top:4px;margin:0}.input{position:relative}.input .help{position:absolute;bottom:-22px;left:10px;color:#c00}div.create{padding:30px 15px;display:flex;flex-wrap:wrap}div.create .input{width:280px;margin:20px}div.create .input label:not(.switch){width:100%;font-size:13px;color:#9094a5;margin-bottom:15px;display:block;font-weight:300}div.create .input input,div.create .input select{width:100%;border:1px solid #dedfe2;padding:10px;border-radius:6px}.app-icon-container{width:60px;height:60px;display:flex;justify-content:center;align-items:center;margin-right:15px;flex:0 0 60px}.app-icon{max-width:60px;display:block;max-height:60px}.sidenav{position:relative}.sidenav .close-sidenav{position:absolute;top:20px;right:20px;font-size:24px;color:#ccc}.sidenav h2{font-weight:300;padding:20px;margin:0}.sidenav ul{list-style:none;margin:0;padding:20px}.sidenav ul li{display:flex;justify-content:space-between;padding:5px}.sidenav ul li a{color:#2b3542}.sidenav ul li a.active{color:#46b0e6}.trashed{font-size:11px;color:#91a1b3;margin-left:20px}#websiteiconoptions{display:flex;flex-direction:column;padding:20px}#websiteiconoptions .results{display:flex;flex-wrap:wrap;align-items:center;gap:8px}#websiteiconoptions .header{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0}#websiteiconoptions .selectclose,.iconbutton{cursor:pointer}.iconbutton{width:160px;height:160px;display:flex;align-items:center;justify-content:center;border:1px solid #ccc;border-radius:4px}.selecticon{max-width:120px;height:auto}.switch{position:relative;display:inline-block;width:36px;height:20px}.switch input{display:none}.slider{cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#4a556b}.slider,.slider:before{position:absolute;transition:.4s}.slider:before{content:"";height:14px;width:14px;left:3px;bottom:3px;background-color:#fff}input:checked+.slider{background-color:#2196f3}input:focus+.slider{box-shadow:0 0 1px #2196f3}input:checked+.slider:before{transform:translateX(16px)}.slider.round{border-radius:20px}.slider.round:before{border-radius:50%}@-webkit-keyframes autofill{to{background:#f5f5f5;color:#2f313a;font-weight:700}}@keyframes autofill{to{background:#f5f5f5;color:#2f313a;font-weight:700}}input:-webkit-autofill{-webkit-animation-name:autofill;-webkit-animation-fill-mode:both}input:autofill{-webkit-animation-name:autofill;animation-name:autofill;-webkit-animation-fill-mode:both;animation-fill-mode:both}button.link{border:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent}a.settinglink{color:#2f313a;font-size:13px;margin:15px 5px;display:inline-block;font-weight:700}.setting-view-image{margin-bottom:20px;display:inline-block}.setting-view-image img{max-width:330px}.searchform{display:flex;align-self:flex-start;text-align:center;margin:50px auto;padding:14px;background:rgba(0,0,0,.2);border-radius:14px;box-shadow:inset 0 1px 6px 0 rgba(0,0,0,.3);border-top:1px solid rgba(0,0,0,.5);border-bottom:1px solid hsla(0,0%,100%,.35);width:100%;max-width:620px;position:relative;z-index:4}.searchform form{width:100%}.searchform .input-container{background:#fff;border-radius:5px;box-shadow:0 0 5px 0 rgba(0,0,0,.4);overflow:hidden;position:relative;display:flex}.searchform input{padding:17px 15px;font-size:15px;border:0;width:100%;background:transparent}.searchform button{position:absolute;right:0;top:0;border:none;font-size:16px;padding:7px 15px;line-height:38px;font-weight:500;border-top-right-radius:5px;border-bottom-right-radius:5px;color:#fff;text-transform:uppercase;background:#d64d55}.searchform select{padding:0 10px;background:#f5f5f5;border:none;border-right:1px solid #ddd}.ui-autocomplete{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;padding:4px 0;margin:0 0 10px 25px;list-style:none;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:5px;box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px}.ui-menu-item{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#555;white-space:nowrap;text-decoration:none}.ui-state-active,.ui-state-hover{font-weight:700}#appimage img{width:95px}#sapconfig,.newblock{display:none;width:100%}#sapconfig h2,.newblock h2{background:#f2f3f6;padding:2px 25px;height:60px;margin-left:-15px;width:calc(100% + 30px);border-top:1px solid #dbdce3;border-bottom:1px solid #dbdce3;font-size:18px;color:#5b5b5b;font-weight:500;display:flex;justify-content:space-between;align-items:center}#sapconfig .items,.newblock .items{display:flex}hr{margin:23px 0 18px;height:0;border-style:none;border-width:0;border-top:1px solid #eaeaea;border-bottom:1px solid #fff}.upload-btn-wrapper{position:relative;overflow:hidden;display:inline-block}.btn{border:none;background-color:#d64d55;padding:8px 12px;border-radius:8px}.btn,.btn.test{color:#fff;font-size:16px}.btn.test{font-weight:500;border-top-right-radius:5px;border-bottom-right-radius:5px;text-transform:uppercase;padding:8px 50px;background:#207774}.upload-btn-wrapper input[type=file]{font-size:100px;position:absolute;left:0;top:0;opacity:0}.icon-container{display:flex;align-items:center}.icon-container img{margin-right:15px}.ui-helper-hidden-accessible{display:none}.livestats-container .livestats{margin:5px 0 0;padding:0;display:flex;list-style:none;justify-content:space-between;width:100%}.livestats-container .livestats span{display:block;text-transform:uppercase;font-size:11px;font-weight:500;opacity:.5;line-height:1;display:flex;text-align:left}.livestats-container .livestats strong{display:block;line-height:1;display:flex;align-items:center;color:#fff;font-size:12px;line-height:1.2}.livestats-container .livestats strong span{margin-left:4px}.livestats-container .livestats li{text-align:center;margin:0;line-height:1}.livestats-container .livestats li.right{text-align:right}.livestats-container .livestats li.right span{justify-content:flex-end}.livestats-container .livestats.flexcolumn{flex-direction:column}.livestats-container.black .livestats strong{color:#000}input:-webkit-autofill,input:-webkit-autofill:focus input:-webkit-autofill,input:-webkit-autofill:hover,select:-webkit-autofill,select:-webkit-autofill:focus,select:-webkit-autofill:hover,textarea:-webkit-autofill,textarea:-webkit-autofill:hover textarea:-webkit-autofill:focus{border:inherit;-webkit-text-fill-color:inherit;-webkit-box-shadow:inherit;transition:inherit;color:#2f313a!important}.title-marquee{width:125px;overflow:hidden;display:flex;align-items:flex-start;margin-top:2px}.title-marquee>span,.title-marquee>strong{white-space:nowrap;transform:translate(0);-webkit-animation:marquee 8s linear;animation:marquee 8s linear}.no-marquee .title,.title-marquee .title{margin-right:4px}@-webkit-keyframes marquee{0%{transform:translate(0)}20%{transform:translate(0)}95%{transform:translate(-200%)}to{transform:translate(-200%)}}@keyframes marquee{0%{transform:translate(0)}20%{transform:translate(0)}95%{transform:translate(-200%)}to{transform:translate(-200%)}} +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{background:#cfd2d4}#switchuser{background:rgba(0,0,0,.5);position:absolute;padding:10px;color:#fff;text-align:center;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;align-items:center;border-top:2px solid hsla(0,0%,100%,.15);border-right:2px solid hsla(0,0%,100%,.15);box-shadow:0 0 10px 0 rgba(0,0,0,.4);border-radius:0 9px 0 0;line-height:1.5;font-size:14px}#switchuser img{width:50px;margin-bottom:5px;border-radius:50%}#switchuser .btn{font-size:13px;color:#fff;text-decoration:none;margin:8px -10px -10px;border-radius:0;width:calc(100% + 22px);background:hsla(0,0%,100%,.15);transition:all .35s ease-in-out}#switchuser .btn:hover{background:#d64d55}#tile-preview{align-items:center}.create .textarea{width:100%;margin:0 20px}.create .textarea textarea{width:100%;border:1px solid #dedfe2;padding:15px;border-radius:6px;height:100px;font-size:14px}.create .textarea label:not(.switch){width:100%;font-size:13px;color:#9094a5;margin-bottom:15px;display:block;font-weight:300}.appoptions{flex-direction:column;padding:20px;gap:5px}.appoptions,.appoptions .optdetails{display:flex}.appoptions .optdetails .input{margin:0 20px;width:200px}.appoptions .optvalue{display:flex;align-items:center;opacity:0;width:0;height:0;overflow:hidden}.appoptions .optvalue.active{opacity:1;width:auto;height:auto;overflow:visible}.appoptions button.dark{background:#1b1b1b;border:none;padding:12px 15px;border-radius:4px;color:#fff;min-width:240px}#app{min-height:100vh;background-image:url(../img/bg1.jpg);background-repeat:no-repeat;background-size:cover;background-position:bottom}#app,#app nav{display:flex;flex-direction:column}#app nav{height:100%;position:absolute;width:340px;left:-340px;transition:all .35s ease-in-out;background:rgba(0,0,0,.7);color:#fff;z-index:2}#app .content{flex-grow:1;display:flex;flex-direction:column}#app .content .appheader{background:rgba(0,0,0,.4);text-align:center;position:absolute;height:58px;width:100%;top:-58px;transition:all .35s ease-in-out;z-index:1}#app .content .appheader ul{display:inline-block;list-style:none;height:58px;border-left:1px solid rgba(0,0,0,.6);border-right:1px solid hsla(0,0%,100%,.1);margin:0;padding:0}#app .content .appheader li{display:inline-block;border-right:1px solid rgba(0,0,0,.6);border-left:1px solid hsla(0,0%,100%,.1)}#app .content .appheader a{display:inline-block;color:#fff;text-decoration:none;padding:20px}#app main{flex-direction:column}#app #sortable,#app main{padding:30px 10px;display:flex;justify-content:center;align-items:center;flex:1;position:relative;flex-wrap:wrap;align-content:center;list-style:none;margin:0}#config-buttons{position:fixed;bottom:0;right:0;display:flex;flex-direction:column}#config-buttons a{width:50px;height:50px;background:rgba(0,0,0,.8);text-align:center;line-height:50px;color:#fff;margin-top:1px}#config-buttons a img{width:26px;height:26px;margin-top:12px}.userlist,.userlist .user{display:flex;justify-content:center;align-items:center}.userlist .user{background:rgba(0,0,0,.5);padding:15px;flex-direction:column;margin:20px;color:#fff;text-decoration:none;border-radius:15px;border:5px solid hsla(0,0%,100%,.7);box-shadow:0 0 10px 0 rgba(0,0,0,.4)}.userlist .user-img{width:130px;height:130px;border-radius:50%;margin:10px 10px 15px}.userlist #password{color:#2f313a;width:100%;padding:5px 10px;margin:15px -5px}.userlist .btn{width:100%}.userlist .forgot{color:#fff;font-size:12px;margin-top:25px}.item-container{position:relative}.item-container .item-edit{color:#fff;position:absolute;bottom:20px;left:8px;width:30px;height:30px;background:rgba(0,0,0,.7);border-radius:50%;text-align:center;line-height:30px;display:none;z-index:1}.item-container .tooltip{padding:25px;border-radius:5px;background:rgba(0,0,0,.78);color:#fff;position:absolute;bottom:120px;left:0;right:0;font-size:13px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:0;opacity:0;transform:translateY(-20px);transition:all .3s}.item-container .tooltip.active{transform:translateY(0);opacity:1;z-index:4}.tile-actions{position:absolute;top:0;left:0;padding:7px;background:rgba(0,0,0,.85);font-size:12px;line-height:1;border-radius:6px;width:80px;height:90px;display:flex;opacity:0;align-items:center;justify-content:center;transition:all .3s;flex-direction:column;text-align:center;cursor:pointer}.tile-actions.active{opacity:1}.refresh{z-index:3}.refresh .icon{font-size:20px;margin-bottom:5px}.black{color:#000!important}.white{color:#fff!important}.message-container,.message-container2{width:100%;padding:10px 20px}.alert{margin:30px auto;text-align:center;max-width:800px;background:#f1f4f7;display:flex;justify-content:center;padding:5px 20px 5px 80px;box-shadow:0 0 15px 3px rgba(0,0,0,.3)}.alert.alert-danger,.alert.alert-success{position:relative}.alert.alert-danger:before,.alert.alert-success:before{content:"\F00C";font-family:Font Awesome\ 5 Pro;font-weight:900;position:absolute;top:0;left:0;bottom:0;width:60px;background:#0eb584;text-align:center;color:#fff;line-height:57px;font-size:24px;align-items:center;justify-content:center;display:flex}.alert.alert-danger:before{content:"\F00D";background:#d64d55}.alert a{color:#91a1b3}#app.header .add-item,#app.header .item{transform:scale(.9);opacity:.8;margin:20px 0}#app.sidebar nav{left:0}.add-item{width:280px;height:90px;margin:20px;flex:0 0 280px;border-radius:6px;padding:20px;border:4px dashed hsla(0,0%,100%,.7);box-shadow:0 0 20px 2px rgba(0,0,0,.3);color:#fff;overflow:hidden;position:relative;display:none;outline:1px solid transparent}.add-item.active,.add-item a{display:block}.add-item a{width:100%;text-align:center;line-height:40px;color:#fff;font-size:19px}.item{width:280px;height:90px;margin:20px;flex:0 0 280px;background-image:linear-gradient(90deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.25));border-radius:6px;padding:15px 55px 15px 15px;color:#fff;overflow:hidden;position:relative;transition:all .35s ease-in-out;outline:1px solid transparent;display:flex;align-items:center;border:1px solid #4a4a4a;border:1px solid rgba(76,76,76,.4);-webkit-background-clip:padding-box;background-clip:padding-box}.item:after{content:"";width:90px;height:90px;border-radius:50%;position:absolute;right:-48px;top:0;background:hsla(0,0%,100%,.1);box-shadow:0 0 40px 0 rgba(0,0,0,.2)}.item .link{position:absolute;right:0;top:0;height:100%;width:100%;text-align:right;line-height:90px;color:#fff;font-size:24px;z-index:1;padding-right:10px}.item .link:focus{background-color:rgba(10,10,10,.4)}.item .title{font-size:16px}.item .details{width:100%}.text-center{text-align:center!important}.module-container{box-shadow:0 0 10px 0 rgba(0,0,0,.4);border:1px solid #cdced8;background:#f9fafd;max-width:1000px;width:100%;margin:10px 40px;border-radius:5px;overflow:hidden}.module-container footer,.module-container header{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #fff;background:#f2f3f6;font-size:16px;border-bottom:1px solid #dbdce3;height:60px;position:relative}.module-container footer .section-title,.module-container header .section-title{font-size:18px;color:#5b5b5b;margin-left:25px}.module-container footer{border-top:1px solid #dbdce3}.module-container .table{width:100%;margin:0;background:#fff}.module-container .table thead th{background:#f2f3f6;color:#767d94;border-top:1px solid #fff;text-align:left;font-size:13px;text-transform:uppercase;padding:15px 25px}.module-container .table tbody tr:hover{background:#fefbf2}.module-container .table tbody tr:hover td:first-child{position:relative}.module-container .table tbody tr:hover td:first-child:before{content:"";position:absolute;top:0;left:0;bottom:0;width:5px;background:#0eb584}.module-container .table tbody td{padding:20px 25px;font-size:13px;color:#2f313a;max-width:500px;word-break:break-word}.module-container .table tbody td.form-error{background:#e69191;color:#fff;text-align:center}.module-container .table tbody a{color:#2f313a}.homesearch{height:51px}.toggleinput{display:flex;flex-direction:column-reverse;line-height:1;font-size:9px;font-weight:400;text-transform:uppercase;color:#ababab;padding:0 20px}.toggleinput label.name{margin-top:6px}.module-actions{display:flex;justify-content:space-between;align-items:center}.module-actions .button{font-size:18px;color:#515564;padding:0 10px;border:none;border-left:1px solid #cdced8;display:flex;line-height:1;position:relative;background:transparent;flex-direction:column;justify-content:center;align-items:center;min-width:65px;height:60px;text-decoration:none;box-sizing:border-box}.module-actions .button:after{position:absolute;content:"";top:0;left:0;bottom:0;border-right:1px solid #fff}.module-actions .button span{display:inline-block;line-height:1;font-size:9px;font-weight:400;text-transform:uppercase;color:#ababab;position:relative;top:4px;margin:0}.input{position:relative}.input .help{position:absolute;bottom:-22px;left:10px;color:#c00}div.create{padding:30px 15px;display:flex;flex-wrap:wrap}div.create .input{width:280px;margin:20px}div.create .input label:not(.switch){width:100%;font-size:13px;color:#9094a5;margin-bottom:15px;display:block;font-weight:300}div.create .input input,div.create .input select{width:100%;border:1px solid #dedfe2;padding:10px;border-radius:6px}.app-icon-container{width:60px;height:60px;display:flex;justify-content:center;align-items:center;margin-right:15px;flex:0 0 60px}.app-icon{max-width:60px;display:block;max-height:60px}.sidenav{position:relative}.sidenav .close-sidenav{position:absolute;top:20px;right:20px;font-size:24px;color:#ccc}.sidenav h2{font-weight:300;padding:20px;margin:0}.sidenav ul{list-style:none;margin:0;padding:20px}.sidenav ul li{display:flex;justify-content:space-between;padding:5px}.sidenav ul li a{color:#2b3542}.sidenav ul li a.active{color:#46b0e6}.trashed{font-size:11px;color:#91a1b3;margin-left:20px}#websiteiconoptions{display:flex;flex-direction:column;padding:20px}#websiteiconoptions .results{display:flex;flex-wrap:wrap;align-items:center;gap:8px}#websiteiconoptions .header{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0}#websiteiconoptions .selectclose,.iconbutton{cursor:pointer}.iconbutton{width:160px;height:160px;display:flex;align-items:center;justify-content:center;border:1px solid #ccc;border-radius:4px}.selecticon{max-width:120px;height:auto}.switch{position:relative;display:inline-block;width:36px;height:20px}.switch input{display:none}.slider{cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#4a556b}.slider,.slider:before{position:absolute;transition:.4s}.slider:before{content:"";height:14px;width:14px;left:3px;bottom:3px;background-color:#fff}input:checked+.slider{background-color:#2196f3}input:focus+.slider{box-shadow:0 0 1px #2196f3}input:checked+.slider:before{transform:translateX(16px)}.slider.round{border-radius:20px}.slider.round:before{border-radius:50%}@-webkit-keyframes autofill{to{background:#f5f5f5;color:#2f313a;font-weight:700}}@keyframes autofill{to{background:#f5f5f5;color:#2f313a;font-weight:700}}input:-webkit-autofill{-webkit-animation-name:autofill;-webkit-animation-fill-mode:both}input:autofill{-webkit-animation-name:autofill;animation-name:autofill;-webkit-animation-fill-mode:both;animation-fill-mode:both}button.link{border:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent}a.settinglink{color:#2f313a;font-size:13px;margin:15px 5px;display:inline-block;font-weight:700}.setting-view-image{margin-bottom:20px;display:inline-block}.setting-view-image img{max-width:330px}.searchform{display:flex;align-self:flex-start;text-align:center;margin:50px auto;padding:14px;background:rgba(0,0,0,.2);border-radius:14px;box-shadow:inset 0 1px 6px 0 rgba(0,0,0,.3);border-top:1px solid rgba(0,0,0,.5);border-bottom:1px solid hsla(0,0%,100%,.35);width:100%;max-width:620px;position:relative;z-index:4}.searchform form{width:100%}.searchform .input-container{background:#fff;border-radius:5px;box-shadow:0 0 5px 0 rgba(0,0,0,.4);overflow:hidden;position:relative;display:flex}.searchform input{padding:17px 15px;font-size:15px;border:0;width:100%;background:transparent}.searchform button{position:absolute;right:0;top:0;border:none;font-size:16px;padding:7px 15px;line-height:38px;font-weight:500;border-top-right-radius:5px;border-bottom-right-radius:5px;color:#fff;text-transform:uppercase;background:#d64d55}.searchform select{padding:0 10px;background:#f5f5f5;border:none;border-right:1px solid #ddd}.ui-autocomplete{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;padding:4px 0;margin:0 0 10px 25px;list-style:none;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:5px;box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px}.ui-menu-item{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#555;white-space:nowrap;text-decoration:none}.ui-state-active,.ui-state-hover{font-weight:700}#appimage img{width:95px}#sapconfig,.newblock{display:none;width:100%}#sapconfig h2,.newblock h2{background:#f2f3f6;padding:2px 25px;height:60px;margin-left:-15px;width:calc(100% + 30px);border-top:1px solid #dbdce3;border-bottom:1px solid #dbdce3;font-size:18px;color:#5b5b5b;font-weight:500;display:flex;justify-content:space-between;align-items:center}#sapconfig .items,.newblock .items{display:flex}hr{margin:23px 0 18px;height:0;border-style:none;border-width:0;border-top:1px solid #eaeaea;border-bottom:1px solid #fff}.upload-btn-wrapper{position:relative;overflow:hidden;display:inline-block}.btn{border:none;background-color:#d64d55;padding:8px 12px;border-radius:8px}.btn,.btn.test{color:#fff;font-size:16px}.btn.test{font-weight:500;border-top-right-radius:5px;border-bottom-right-radius:5px;text-transform:uppercase;padding:8px 50px;background:#207774}.upload-btn-wrapper input[type=file]{font-size:100px;position:absolute;left:0;top:0;opacity:0}.icon-container{display:flex;align-items:center}.icon-container img{margin-right:15px}.ui-helper-hidden-accessible{display:none}.livestats-container .livestats{margin:5px 0 0;padding:0;display:flex;list-style:none;justify-content:space-between;width:100%}.livestats-container .livestats span{display:block;text-transform:uppercase;font-size:11px;font-weight:500;opacity:.5;line-height:1;display:flex;text-align:left}.livestats-container .livestats strong{display:block;line-height:1;display:flex;align-items:center;color:#fff;font-size:12px;line-height:1.2}.livestats-container .livestats strong span{margin-left:4px}.livestats-container .livestats li{text-align:center;margin:0;line-height:1}.livestats-container .livestats li.right{text-align:right}.livestats-container .livestats li.right span{justify-content:flex-end}.livestats-container .livestats.flexcolumn{flex-direction:column}.livestats-container.black .livestats strong{color:#000}input:-webkit-autofill,input:-webkit-autofill:focus input:-webkit-autofill,input:-webkit-autofill:hover,select:-webkit-autofill,select:-webkit-autofill:focus,select:-webkit-autofill:hover,textarea:-webkit-autofill,textarea:-webkit-autofill:hover textarea:-webkit-autofill:focus{border:inherit;-webkit-text-fill-color:inherit;-webkit-box-shadow:inherit;transition:inherit;color:#2f313a!important}.title-marquee{width:125px;overflow:hidden;display:flex;align-items:flex-start;margin-top:2px}.title-marquee>span,.title-marquee>strong{white-space:nowrap;transform:translate(0);-webkit-animation:marquee 8s linear;animation:marquee 8s linear}.no-marquee .title,.title-marquee .title{margin-right:4px}@-webkit-keyframes marquee{0%{transform:translate(0)}20%{transform:translate(0)}95%{transform:translate(-200%)}to{transform:translate(-200%)}}@keyframes marquee{0%{transform:translate(0)}20%{transform:translate(0)}95%{transform:translate(-200%)}to{transform:translate(-200%)}} /*! Huebee v2.0.0 http://huebee.buzz ---------------------------------------------- */.huebee{position:absolute;z-index:1;transform:translateY(0);transition:opacity .15s,transform .15s}.huebee.is-hidden{opacity:0;transform:translateY(10px)}.huebee.is-static-open{position:relative;z-index:auto}.huebee__container{position:absolute;left:0;top:5px;padding:10px;background:#eee;border-radius:5px;box-shadow:0 5px 10px rgba(0,0,0,.3)}.huebee.is-static-open .huebee__container{position:relative;display:inline-block;left:auto;top:auto;box-shadow:none}.huebee__canvas{display:block;cursor:pointer}.huebee__cursor{width:15px;height:15px;position:absolute;left:0;top:0;box-sizing:content-box;border:3px solid #fff;border-radius:5px;pointer-events:none}.huebee__cursor.is-hidden{opacity:0}.huebee__close-button{display:block;position:absolute;width:24px;height:24px;top:-9px;right:-9px;border-radius:12px;background:#222}.huebee__close-button__x{stroke:#fff;stroke-width:3;stroke-linecap:round}.huebee__close-button:hover{background:#fff;cursor:pointer}.huebee__close-button:hover .huebee__close-button__x{stroke:#222}.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:39px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;white-space:nowrap!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #dedfe2;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#f2f3f6;border:1px solid #dedfe2;border-radius:4px;cursor:default;float:left;margin-right:5px;font-size:13px;font-weight:300;margin-top:5px;padding:5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #dedfe2;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:linear-gradient(180deg,#fff 50%,#eee);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFFFFFFF",endColorstr="#FFEEEEEE",GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:linear-gradient(180deg,#eee 50%,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFEEEEEE",endColorstr="#FFCCCCCC",GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:linear-gradient(180deg,#fff 0,#eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFFFFFFF",endColorstr="#FFEEEEEE",GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:linear-gradient(180deg,#eee 50%,#fff);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFEEEEEE",endColorstr="#FFFFFFFF",GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} \ No newline at end of file diff --git a/public/js/app.js b/public/js/app.js index 5505b180..4642faf7 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1 +1 @@ -function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==("undefined"==typeof module?"undefined":_typeof(module))&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var n=this._events=this._events||{},i=n[t]=n[t]||[];return-1==i.indexOf(e)&&i.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var n=this._onceEvents=this._onceEvents||{};return(n[t]=n[t]||{})[e]=!0,this}},e.off=function(t,e){var n=this._events&&this._events[t];if(n&&n.length){var i=n.indexOf(e);return-1!=i&&n.splice(i,1),this}},e.emitEvent=function(t,e){var n=this._events&&this._events[t];if(n&&n.length){var i=0,o=n[i];e=e||[];for(var s=this._onceEvents&&this._onceEvents[t];o;){var r=s&&s[o];r&&(this.off(t,o),delete s[o]),o.apply(this,e),o=n[i+=r?0:1]}return this}},t}),function(t,e){"function"==typeof define&&define.amd?define("unipointer/unipointer",["ev-emitter/ev-emitter"],function(n){return e(t,n)}):"object"==("undefined"==typeof module?"undefined":_typeof(module))&&module.exports?module.exports=e(t,require("ev-emitter")):t.Unipointer=e(t,t.EvEmitter)}(window,function(t,e){function n(){}var i=n.prototype=Object.create(e.prototype);i.bindStartEvent=function(t){this._bindStartEvent(t,!0)},i.unbindStartEvent=function(t){this._bindStartEvent(t,!1)},i._bindStartEvent=function(e,n){var i=(n=void 0===n||!!n)?"addEventListener":"removeEventListener";t.navigator.pointerEnabled?e[i]("pointerdown",this):t.navigator.msPointerEnabled?e[i]("MSPointerDown",this):(e[i]("mousedown",this),e[i]("touchstart",this))},i.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.getTouch=function(t){for(var e=0;e.5;var o=this.colorGrid[e.toUpperCase()];this.updateCursor(o),this.setTexts(),this.setBackgrounds(),n||this.emitEvent("change",[e,t.hue,t.sat,t.lum])}},h.setTexts=function(){if(this.setTextElems)for(var t=0;t0&&o.attr("value","*****")}$(".message-container").length&&setTimeout(function(){$(".message-container").fadeOut()},3500),void 0!==document.hidden?(t="hidden",e="visibilitychange"):void 0!==document.msHidden?(t="msHidden",e="msvisibilitychange"):void 0!==document.webkitHidden&&(t="webkitHidden",e="webkitvisibilitychange");var s=[],r=[],a=$(".livestats-container");a.length>0&&(void 0===document.addEventListener||void 0===t?console.log("This browser does not support visibilityChange"):document.addEventListener(e,function(){document[t]?function(){for(var t=0,e=s;t299||(s[t]=window.setTimeout(r,a))}})};r[t]=h,h()})),$("#upload").change(function(){!function(t){if(t.files&&t.files[0]){var e=new FileReader;e.onload=function(t){$("#appimage img").attr("src",t.target.result)},e.readAsDataURL(t.files[0])}}(this)}),$("#sortable").sortable({stop:function(t,e){var i=$("#sortable").sortable("toArray",{attribute:"data-id"});$.post(n+"order",{order:i})}}),$("#sortable").sortable("disable"),$("#main").on("mouseenter","#sortable.ui-sortable-disabled .item",function(){$(this).siblings(".tooltip").addClass("active"),$(".refresh",this).addClass("active")}).on("mouseleave",".item",function(){$(this).siblings(".tooltip").removeClass("active"),$(".refresh",this).removeClass("active")}),$("#search-container").on("input","input[name=q]",function(){var t=this.value,e=$("#sortable").children(".item-container");"tiles"===$("#search-container select[name=provider]").val()&&t.length>0?(e.hide(),e.filter(function(){return $(this).data("name").toLowerCase().includes(t.toLowerCase())}).show()):e.show()}).on("change","select[name=provider]",function(){var t=$("#sortable").children(".item-container");if("tiles"===$(this).val()){$("#search-container button").hide();var e=$("#search-container input[name=q]").val();e.length>0?(t.hide(),t.filter(function(){return $(this).data("name").toLowerCase().includes(e.toLowerCase())}).show()):t.show()}else $("#search-container button").show(),t.show()}),$("#app").on("click","#config-button",function(t){t.preventDefault();var e=$("#app"),n=e.hasClass("header");e.toggleClass("header"),n?($(".add-item").hide(),$(".item-edit").hide(),$("#app").removeClass("sidebar"),$("#sortable .tooltip").css("display",""),$("#sortable").sortable("disable")):($("#sortable .tooltip").css("display","none"),$("#sortable").sortable("enable"),setTimeout(function(){$(".add-item").fadeIn(),$(".item-edit").fadeIn()},350))}).on("click","#add-item, #pin-item",function(t){t.preventDefault();var e=$("#app");e.hasClass("sidebar");e.toggleClass("sidebar")}).on("click",".close-sidenav",function(t){t.preventDefault(),$("#app").removeClass("sidebar")}).on("click","#test_config",function(t){t.preventDefault();var e=$("#create input[name=url]").val(),i=$('#sapconfig input[name="config[override_url]"]').val();i.length&&""!=i&&(e=i);var o={};o.url=e,$(".config-item").each(function(t){var e=$(this).data("config");o[e]=$(this).val()}),o.id=$("form[data-item-id]").data("item-id"),o.password&&"*****"===o.password&&(o.password=""),$.post(n+"test_config",{data:o},function(t){alert(t)})}),$("#pinlist").on("click","a",function(t){t.preventDefault();var e=$(this),i=e.data("id"),o=e.data("tag");$.get(n+"items/pintoggle/"+i+"/true/"+o,function(t){var n=$(t).filter("#sortable").html();$("#sortable").html(n),e.toggleClass("active")})}),$("#itemform").on("submit",function(t){var e=$('input[name="config[password]"]').first();e.length>0&&"*****"===e.attr("value")&&e.attr("value","")})}); +function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==("undefined"==typeof module?"undefined":_typeof(module))&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var n=this._events=this._events||{},i=n[t]=n[t]||[];return-1==i.indexOf(e)&&i.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var n=this._onceEvents=this._onceEvents||{};return(n[t]=n[t]||{})[e]=!0,this}},e.off=function(t,e){var n=this._events&&this._events[t];if(n&&n.length){var i=n.indexOf(e);return-1!=i&&n.splice(i,1),this}},e.emitEvent=function(t,e){var n=this._events&&this._events[t];if(n&&n.length){var i=0,o=n[i];e=e||[];for(var s=this._onceEvents&&this._onceEvents[t];o;){var r=s&&s[o];r&&(this.off(t,o),delete s[o]),o.apply(this,e),o=n[i+=r?0:1]}return this}},t}),function(t,e){"function"==typeof define&&define.amd?define("unipointer/unipointer",["ev-emitter/ev-emitter"],function(n){return e(t,n)}):"object"==("undefined"==typeof module?"undefined":_typeof(module))&&module.exports?module.exports=e(t,require("ev-emitter")):t.Unipointer=e(t,t.EvEmitter)}(window,function(t,e){function n(){}var i=n.prototype=Object.create(e.prototype);i.bindStartEvent=function(t){this._bindStartEvent(t,!0)},i.unbindStartEvent=function(t){this._bindStartEvent(t,!1)},i._bindStartEvent=function(e,n){var i=(n=void 0===n||!!n)?"addEventListener":"removeEventListener";t.navigator.pointerEnabled?e[i]("pointerdown",this):t.navigator.msPointerEnabled?e[i]("MSPointerDown",this):(e[i]("mousedown",this),e[i]("touchstart",this))},i.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.getTouch=function(t){for(var e=0;e.5;var o=this.colorGrid[e.toUpperCase()];this.updateCursor(o),this.setTexts(),this.setBackgrounds(),n||this.emitEvent("change",[e,t.hue,t.sat,t.lum])}},h.setTexts=function(){if(this.setTextElems)for(var t=0;t0&&o.attr("value","*****")}$(".message-container").length&&setTimeout(function(){$(".message-container").fadeOut()},3500),void 0!==document.hidden?(t="hidden",e="visibilitychange"):void 0!==document.msHidden?(t="msHidden",e="msvisibilitychange"):void 0!==document.webkitHidden&&(t="webkitHidden",e="webkitvisibilitychange");var s=[],r=[],a=$(".livestats-container");a.length>0&&(void 0===document.addEventListener||void 0===t?console.log("This browser does not support visibilityChange"):document.addEventListener(e,function(){document[t]?function(){for(var t=0,e=s;t299||(s[t]=window.setTimeout(r,a))}})};r[t]=h,h()})),$("#upload").change(function(){!function(t){if(t.files&&t.files[0]){var e=new FileReader;e.onload=function(t){$("#appimage img").attr("src",t.target.result)},e.readAsDataURL(t.files[0])}}(this)}),$("#sortable").sortable({stop:function(t,e){var i=$("#sortable").sortable("toArray",{attribute:"data-id"});$.post(n+"order",{order:i})}}),$("#sortable").sortable("disable"),$("#main").on("mouseenter","#sortable.ui-sortable-disabled .item",function(){$(this).siblings(".tooltip").addClass("active"),$(".refresh",this).addClass("active")}).on("mouseleave",".item",function(){$(this).siblings(".tooltip").removeClass("active"),$(".refresh",this).removeClass("active")}),$("#search-container").on("input","input[name=q]",function(){var t=this.value,e=$("#sortable").children(".item-container");"tiles"===$("#search-container select[name=provider]").val()&&t.length>0?(e.hide(),e.filter(function(){return $(this).data("name").toLowerCase().includes(t.toLowerCase())}).show()):e.show()}).on("change","select[name=provider]",function(){var t=$("#sortable").children(".item-container");if("tiles"===$(this).val()){$("#search-container button").hide();var e=$("#search-container input[name=q]").val();e.length>0?(t.hide(),t.filter(function(){return $(this).data("name").toLowerCase().includes(e.toLowerCase())}).show()):t.show()}else $("#search-container button").show(),t.show()}),$("#app").on("click","#config-button",function(t){t.preventDefault();var e=$("#app"),n=e.hasClass("header");e.toggleClass("header"),n?($(".add-item").hide(),$(".item-edit").hide(),$("#app").removeClass("sidebar"),$("#sortable .tooltip").css("display",""),$("#sortable").sortable("disable")):($("#sortable .tooltip").css("display","none"),$("#sortable").sortable("enable"),setTimeout(function(){$(".add-item").fadeIn(),$(".item-edit").fadeIn()},350))}).on("click","#add-item, #pin-item",function(t){t.preventDefault();var e=$("#app");e.hasClass("sidebar");e.toggleClass("sidebar")}).on("click",".close-sidenav",function(t){t.preventDefault(),$("#app").removeClass("sidebar")}).on("click","#test_config",function(t){t.preventDefault();var e=$("#create input[name=url]").val(),i=$('#sapconfig input[name="config[override_url]"]').val();i.length&&""!=i&&(e=i);var o={};o.url=e,$(".config-item").each(function(t){var e=$(this).data("config");o[e]=$(this).val()}),o.id=$("form[data-item-id]").data("item-id"),o.password&&"*****"===o.password&&(o.password=""),$.post(n+"test_config",{data:o},function(t){alert(t)})}),$("#pinlist").on("click","a",function(t){t.preventDefault();var e=$(this),i=e.data("id"),o=e.data("tag");$.get(n+"items/pintoggle/"+i+"/true/"+o,function(t){var n=$(t).filter("#sortable").html();$("#sortable").html(n),e.toggleClass("active")})}),$("#itemform").on("submit",function(t){var e=$('input[name="config[password]"]').first();e.length>0&&"*****"===e.attr("value")&&e.attr("value","")})});var focusSearch=function(t){var e=document.querySelector('input[name="q"]');e&&(t.preventDefault(),e.focus())},openFirstNonHiddenItem=function(t){if(t.target===document.querySelector('input[name="q"]')){var e=document.querySelector('#sortable section.item-container:not([style="display: none;"]) a');"href"in e&&(t.preventDefault(),window.open(e.href))}},KEY_BINDINGS={"/":focusSearch,Enter:openFirstNonHiddenItem};document.addEventListener("keydown",function(t){try{t.key in KEY_BINDINGS&&KEY_BINDINGS[t.key](t)}catch(t){}}); diff --git a/public/mix-manifest.json b/public/mix-manifest.json index fd44314c..765ebec4 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,4 +1,4 @@ { - "/css/app.css": "/css/app.css?id=fb9e13c65ffee8ba7340", - "/js/app.js": "/js/app.js?id=6ae33b54881f793f30af" + "/css/app.css": "/css/app.css?id=52588253d9a6d5c5e6a1", + "/js/app.js": "/js/app.js?id=a6c1d3a18516685e7b15" } diff --git a/resources/assets/js/keyBindings.js b/resources/assets/js/keyBindings.js new file mode 100644 index 00000000..1e8f29b6 --- /dev/null +++ b/resources/assets/js/keyBindings.js @@ -0,0 +1,35 @@ +const focusSearch = event => { + const searchInput = document.querySelector('input[name="q"]'); + if (searchInput) { + event.preventDefault(); + searchInput.focus(); + } +}; + +const openFirstNonHiddenItem = event => { + if (event.target !== document.querySelector('input[name="q"]')) { + return; + } + + const item = document.querySelector('#sortable section.item-container:not([style="display: none;"]) a'); + + if ('href' in item) { + event.preventDefault(); + window.open(item.href); + } +}; + +const KEY_BINDINGS = { + '/': focusSearch, + 'Enter': openFirstNonHiddenItem +}; + +document.addEventListener('keydown', function (event) { + try { + if (event.key in KEY_BINDINGS) { + KEY_BINDINGS[event.key](event); + } + } catch (e) { + + } +}); \ No newline at end of file diff --git a/resources/assets/sass/_app.scss b/resources/assets/sass/_app.scss index e4a80b64..7b169b95 100644 --- a/resources/assets/sass/_app.scss +++ b/resources/assets/sass/_app.scss @@ -470,6 +470,9 @@ body { z-index: 1; padding-right: 10px; } + .link:focus { + background-color: rgba(10,10,10,.4); + } .title { font-size: 16px; } diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index e16ce610..bd5725c0 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -98,16 +98,16 @@ @if(Route::is('dash') || Route::is('tags.show')) - + @endif - + @if($current_user->id === 1) - + @endif - - - + + + diff --git a/webpack.mix.js b/webpack.mix.js index 9cfbb588..fdb51deb 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -14,7 +14,8 @@ let mix = require('laravel-mix'); mix.babel([ //'resources/assets/js/jquery-ui.min.js', 'resources/assets/js/huebee.js', - 'resources/assets/js/app.js' + 'resources/assets/js/app.js', + 'resources/assets/js/keyBindings.js', ], 'public/js/app.js') .sass('resources/assets/sass/app.scss', 'public/css').options({ processCssUrls: false