Add caret styles

This commit is contained in:
bhomie 2020-05-28 21:32:38 -07:00
parent 0eaca00b17
commit 845a19a615
5 changed files with 121 additions and 5 deletions

View file

@ -311,6 +311,26 @@ a:hover {
// transition: 0.05s;
}
#caret.block{
width: .7em;
margin-left: 0.25em;
border-radius: 0;
}
#caret.outline{
@extend #caret, .block;
background: transparent;
border: 1px solid var(--caret-color);
animation-name: caretOutlineFlash;
}
#caret.underline{
height: 2px;
width: .7em;
margin-top: 1.2em;
padding-left: .5em;
}
#caret.size125{
height: 2rem;
width: 2px;
@ -327,14 +347,20 @@ a:hover {
}
@keyframes caretFlash {
0% {
0%, 100% {
background: transparent;
}
50% {
background: var(--caret-color);
}
100% {
background: transparent;
}
@keyframes caretOutlineFlash {
0%, 100% {
border-color: transparent;
}
50% {
border-color: var(--caret-color);
}
}
@ -942,7 +968,7 @@ key {
margin-left: 2rem;
display: grid;
grid-auto-flow: column;
grid-template-columns: 1fr 1fr;
grid-auto-columns: 1fr;
gap: .5rem;
grid-area: buttons;
.button{

View file

@ -262,6 +262,16 @@
<div class="button off" tabindex="0" onclick="this.blur();">off</div>
</div>
</div>
<div class="section caretStyle" section="">
<h1>caret style</h1>
<div class="text">What the caret will look like in the test</div>
<div class="buttons">
<div class="button" caret="default" tabindex="0" onclick="this.blur();">|</div>
<div class="button" caret="block" tabindex="0" onclick="this.blur();"></div>
<div class="button" caret="outline" tabindex="0" onclick="this.blur();"></div>
<div class="button" caret="underline" tabindex="0" onclick="this.blur();">_</div>
</div>
</div>
<div class="section quickTab">
<h1>quick tab mode</h1>
<div class="text">Press <key>tab</key> to quickly restart the test. This function disables tab navigation on some parts of the website.</div>

View file

@ -58,6 +58,15 @@ let commands = {
showCommandLine();
}
},
{
id: "changeCaretStyle",
display: "Change caret...",
subgroup: true,
exec: () => {
currentCommands.push(commandsCaretStyle);
showCommandLine();
}
},
{
id: "changeTheme",
display: "Change theme...",
@ -189,6 +198,40 @@ let commandsDifficulty = {
}
let commandsCaretStyle = {
title: "Change caret...",
list: [
{
id: "setCaretStyleDefault",
display: "line",
exec: () => {
setCaretStyle('default');
}
},
{
id: "setCaretStyleBlock",
display: "block",
exec: () => {
setCaretStyle('block');
}
},
{
id: "setCaretStyleOutline",
display: "outline-block",
exec: () => {
setCaretStyle('outline');
}
},
{
id: "setCaretStyleUnderline",
display: "underline",
exec: () => {
setCaretStyle('underline');
}
}
]
}
let commandsWordCount = {
title: "Change word count...",
list: [

View file

@ -21,6 +21,7 @@ function updateSettingsPage(){
setActiveLanguageButton();
setActiveFontSizeButton();
setActiveDifficultyButton();
setActiveCaretStyleButton();
if (config.showKeyTips) {
$(".pageSettings .tip").removeClass('hidden');
@ -51,6 +52,11 @@ function setActiveLanguageButton() {
$(`.pageSettings .section.languages .language[language=${config.language}]`).addClass('active');
}
function setActiveCaretStyleButton() {
$(`.pageSettings .section.caretStyle .buttons .button`).removeClass('active');
$(`.pageSettings .section.caretStyle .buttons .button[caret=`+config.caretStyle+`]`).addClass('active');
}
function setSettingsButton(buttonSection,tf) {
if (tf) {
$(".pageSettings .section."+buttonSection+" .buttons .button.on").addClass('active');
@ -175,4 +181,12 @@ $(document).on("click",".pageSettings .section.difficulty .button", (e) => {
setDifficulty(difficulty);
showNotification('Difficulty changed', 1000);
setActiveDifficultyButton();
})
})
//caret style
$(document).on("click",".pageSettings .section.caretStyle .button", (e) => {
let caretStyle = $(e.currentTarget).attr('caret');
setCaretStyle(caretStyle);
showNotification('Caret style updated', 1000);
setActiveCaretStyleButton();
})

View file

@ -41,6 +41,7 @@ function loadConfigFromCookie() {
changeLanguage(newConfig.language,true);
changeFontSize(newConfig.fontSize,true);
setFreedomMode(newConfig.freedomMode,true);
setCaretStyle(newConfig.caretStyle,true);
setDifficulty(newConfig.difficulty,true);
if(newConfig.resultFilters == null || newConfig.resultFilters == undefined){
newConfig.resultFilters = ["all"];
@ -67,6 +68,28 @@ function setDifficulty(diff, nosave){
if(!nosave) saveConfigToCookie();
}
function setCaretStyle(caretStyle, nosave) {
if (caretStyle == null || caretStyle == undefined) {
caretStyle = 'default';
}
config.caretStyle = caretStyle;
$("#caret").removeClass('default');
$("#caret").removeClass('underline');
$("#caret").removeClass('outline');
$("#caret").removeClass('block');
if (caretStyle == 'default') {
$("#caret").addClass('default');
} else if (caretStyle == 'block') {
$("#caret").addClass('block');
} else if (caretStyle == 'outline') {
$("#caret").addClass('outline');
} else if (caretStyle == 'underline') {
$("#caret").addClass('underline');
}
if(!nosave) saveConfigToCookie();
}
//key tips
function setKeyTips(keyTips, nosave) {
config.showKeyTips = keyTips;