Skip to content

Commit 166452b

Browse files
committed
[feature] accept hex code for tile colour
1 parent 097a56a commit 166452b

File tree

5 files changed

+98
-38
lines changed

5 files changed

+98
-38
lines changed

‎src/css/form.css‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ input[type="text"]{
1313
font-family:var(--font-regular);
1414
line-height:2.5em;
1515
height:2.5em;
16+
min-width:0;
1617
width:100%;
1718
border-width:var(--form-input-border);
1819
border-style: solid;
@@ -1039,6 +1040,18 @@ input[type="range"][disabled]::-moz-range-progress{
10391040
width:100%;
10401041
}
10411042

1043+
.form-group-item-shrink{
1044+
flex-grow:0;
1045+
}
1046+
1047+
.form-group-item-grow{
1048+
flex-grow:1;
1049+
}
1050+
1051+
.form-group-item-half{
1052+
flex-basis:50%;
1053+
}
1054+
10421055
.form-groupbutton,
10431056
.form-group .button,
10441057
.form-group>input[type="email"],

‎src/js/helper.js‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,15 @@ var helper = (function(){
564564
returntrue;
565565
};
566566

567+
varisHexNumber=function(string){
568+
varregex=/[0-9A-Fa-f]{6}/g;
569+
if(regex.test(string)&&string.length==7&&string.substring(0,1)=="#"){
570+
returntrue;
571+
}else{
572+
returnfalse;
573+
};
574+
};
575+
567576
// exposed methods
568577
return{
569578
e: e,
@@ -589,7 +598,8 @@ var helper = (function(){
589598
toWords: toWords,
590599
ordinalWords: ordinalWords,
591600
ordinalNumber: ordinalNumber,
592-
isJsonString: isJsonString
601+
isJsonString: isJsonString,
602+
isHexNumber: isHexNumber
593603
};
594604

595605
})();

‎src/js/link.js‎

Lines changed: 72 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,21 @@ var link = (function(){
497497
form.querySelector(".link-form-input-name").value=stagedLink.data.name;
498498
form.querySelector(".link-form-input-url").value=stagedLink.data.url;
499499
if(stagedLink.data.accent.override){
500-
form.querySelector(".link-form-input-color").value=helper.rgbToHex(stagedLink.data.accent.color);
500+
form.querySelector(".link-form-input-accent-global").checked=false;
501+
form.querySelector(".link-form-input-accent-custom").checked=true;
502+
form.querySelector(".link-form-input-accent-picker").removeAttribute("disabled");
503+
form.querySelector(".link-form-input-accent-hex").removeAttribute("disabled");
504+
helper.removeClass(form.querySelector(".link-form-input-accent-helper"),"disabled");
505+
}else{
506+
form.querySelector(".link-form-input-accent-global").checked=true;
507+
form.querySelector(".link-form-input-accent-custom").checked=false;
508+
form.querySelector(".link-form-input-accent-picker").setAttribute("disabled","");
509+
form.querySelector(".link-form-input-accent-hex").setAttribute("disabled","");
510+
helper.addClass(form.querySelector(".link-form-input-accent-helper"),"disabled");
511+
};
512+
if(stagedLink.data.accent.color.r!=null&&stagedLink.data.accent.color.g!=null&&stagedLink.data.accent.color.b!=null){
513+
form.querySelector(".link-form-input-accent-picker").value=helper.rgbToHex(stagedLink.data.accent.color);
514+
form.querySelector(".link-form-input-accent-hex").value=helper.rgbToHex(stagedLink.data.accent.color);
501515
};
502516
modal.open({
503517
heading: "Edit "+stagedLink.data.name,
@@ -583,17 +597,17 @@ var link = (function(){
583597
render.form=function(){
584598
varform=helper.node("form|class:link-form");
585599
varfieldset=helper.node("fieldset");
586-
varletterFormIndet=helper.node("div|class:form-indent");
600+
varletterFormIndent=helper.node("div|class:form-indent");
587601
varletterInputWrap=helper.node("div|class:input-wrap");
588602
varletterInput=helper.node("input|type:text,class:link-form-input-letter mb-0,id:link-form-input-letter,placeholder:E,tabindex:1,autocomplete:off,autocorrect:off,autocapitalize:off,spellcheck:false");
589-
variconFormIndet=helper.node("div|class:form-indent");
603+
variconFormIndent=helper.node("div|class:form-indent");
590604
variconFormGroupWrap=helper.node("div|class:input-wrap");
591-
variconFormGroup=helper.node("div|class:form-group auto-suggest-wrapper");
592-
variconInput=helper.node("input|type:text,class:link-form-input-icon auto-suggest-input,id:link-form-input-icon,placeholder:Search for Brands or Icons,tabindex:1,autocomplete:off,autocorrect:off,autocapitalize:off,spellcheck:false,disabled");
605+
variconFormGroup=helper.node("div|class:form-group mb-0 auto-suggest-wrapper");
606+
variconInput=helper.node("input|type:text,class:form-group-item-grow link-form-input-icon auto-suggest-input,id:link-form-input-icon,placeholder:Search for Brands or Icons,tabindex:1,autocomplete:off,autocorrect:off,autocapitalize:off,spellcheck:false,disabled");
593607
variconFormGroupText=helper.node("div|class:form-group-text link-form-text-icon,tabindex:-1,disabled");
594608
variconFormGroupClear=helper.node("button|class:link-form-icon-clear button mb-0,type:button,tabindex:1,disabled");
595609
variconFormGroupClearIcon=helper.node("span|class:icon-close");
596-
variconPara=helper.node("p:Refer to the \"Free\" and \"Brand\" icons from FontAwesome for full set of icons supported.|class:link-form-input-icon-helper form-helper small muted disabled");
610+
variconHelper=helper.node("p:Refer to the \"Free\" and \"Brand\" icons from FontAwesome for full set of icons supported.|class:link-form-input-icon-helper form-helper small muted disabled");
597611
varnameInputWrap=helper.node("div|class:input-wrap");
598612
varnameLabel=helper.node("label:Name|for:link-form-input-name");
599613
varnameInput=helper.node("input|type:text,class:link-form-input-name mb-0,id:link-form-input-name,placeholder:Example,tabindex:1,autocomplete:off,autocorrect:off,autocapitalize:off,spellcheck:false");
@@ -608,26 +622,32 @@ var link = (function(){
608622
value: "form-helper small muted"
609623
}]
610624
});
611-
varcolorWrap=helper.node("div|class:input-wrap");
612-
varcolorFormGroup=helper.node("div|class:form-group mb-0");
613-
varcolorLabel=helper.node("label:Accent override|for:link-form-input-color");
614-
varcolorInput=helper.node("input|id:link-form-input-color,class:link-form-input-color mb-0,type:color,value:"+helper.rgbToHex(state.get().theme.accent.current)+",tabindex:1");
615-
varcolorButtonRefresh=helper.node("button|class:button mb-0,type:button,tabindex:1");
616-
varcolorButtonRefreshIcon=helper.node("span|class:icon-refresh");
617-
varcolorInputHelper=helper.node("p:Use this colour to override the global Accent colour.|class:form-helper small muted");
618625
varletterRadioInputWrap=helper.node("div|class:input-wrap");
619626
varletterRadioInput=helper.node("input|class:link-form-input-display-letter,id:link-form-input-display-letter,type:radio,name:link-form-input-display,tabindex:1,checked,value:letter");
620627
varletterRadioLable=helper.node("label:Letters|for:link-form-input-display-letter");
621628
variconRadioInputWrap=helper.node("div|class:input-wrap");
622629
variconRadioInput=helper.node("input|class:link-form-input-display-icon,id:link-form-input-display-icon,type:radio,name:link-form-input-display,tabindex:1,value:icon");
623630
variconRadioLable=helper.node("label:Icon|for:link-form-input-display-icon");
631+
varaccentLabel=helper.node("label:Accent colour");
632+
varaccentGlobalRadioInputWrap=helper.node("div|class:input-wrap");
633+
varaccentGlobalRadioInput=helper.node("input|class:link-form-input-accent-global,id:link-form-input-accent-global,type:radio,name:link-form-input-accent,tabindex:1,checked,value:global");
634+
varaccentGlobalRadioLabel=helper.node("label:Global|for:link-form-input-accent-global");
635+
varaccentCustomRadioInputWrap=helper.node("div|class:input-wrap");
636+
varaccentCustomRadioInput=helper.node("input|class:link-form-input-accent-custom,id:link-form-input-accent-custom,type:radio,name:link-form-input-accent,tabindex:1,value:custom");
637+
varaccentCustomRadioLabel=helper.node("label:Custom|for:link-form-input-accent-custom");
638+
varaccentFormIndent=helper.node("div|class:form-indent");
639+
varaccentColorInputWrap=helper.node("div|class:input-wrap");
640+
varaccentColorFormGroup=helper.node("div|class:form-group mb-0");
641+
varaccentColorPicker=helper.node("input|id:link-form-input-accent-picker,class:form-group-item-half link-form-input-accent-picker mb-0,type:color,value:#000000,tabindex:1,disabled");
642+
varaccentColorHex=helper.node("input|id:link-form-input-accent-hex,class:form-group-item-half link-form-input-accent-hex mb-0,type:text,placeholder:Hex code,value:#000000,tabindex:1,maxlength:7,disabled");
643+
varaccentCustomInputHelper=helper.node("p:Use this colour to override the global Accent colour.|class:link-form-input-accent-helper form-helper small muted disabled");
624644

625645
letterRadioInputWrap.appendChild(letterRadioInput);
626646
letterRadioInputWrap.appendChild(letterRadioLable);
627647
fieldset.appendChild(letterRadioInputWrap);
628648
letterInputWrap.appendChild(letterInput);
629-
letterFormIndet.appendChild(letterInputWrap);
630-
fieldset.appendChild(letterFormIndet);
649+
letterFormIndent.appendChild(letterInputWrap);
650+
fieldset.appendChild(letterFormIndent);
631651
iconRadioInputWrap.appendChild(iconRadioInput);
632652
iconRadioInputWrap.appendChild(iconRadioLable);
633653
fieldset.appendChild(iconRadioInputWrap);
@@ -636,9 +656,9 @@ var link = (function(){
636656
iconFormGroup.appendChild(iconFormGroupText);
637657
iconFormGroup.appendChild(iconFormGroupClear);
638658
iconFormGroupWrap.appendChild(iconFormGroup);
639-
iconFormGroupWrap.appendChild(iconPara);
640-
iconFormIndet.appendChild(iconFormGroupWrap);
641-
fieldset.appendChild(iconFormIndet);
659+
iconFormIndent.appendChild(iconFormGroupWrap);
660+
iconFormIndent.appendChild(iconHelper);
661+
fieldset.appendChild(iconFormIndent);
642662
fieldset.appendChild(helper.node("hr"));
643663
nameInputWrap.appendChild(nameLabel);
644664
nameInputWrap.appendChild(nameInput);
@@ -648,13 +668,19 @@ var link = (function(){
648668
fieldset.appendChild(urlInputWrap);
649669
fieldset.appendChild(urlInputHelper);
650670
fieldset.appendChild(helper.node("hr"));
651-
colorFormGroup.appendChild(colorInput);
652-
colorButtonRefresh.appendChild(colorButtonRefreshIcon);
653-
colorFormGroup.appendChild(colorButtonRefresh);
654-
colorWrap.appendChild(colorLabel);
655-
colorWrap.appendChild(colorFormGroup);
656-
fieldset.appendChild(colorWrap);
657-
fieldset.appendChild(colorInputHelper);
671+
fieldset.appendChild(accentLabel);
672+
accentGlobalRadioInputWrap.appendChild(accentGlobalRadioInput);
673+
accentGlobalRadioInputWrap.appendChild(accentGlobalRadioLabel);
674+
fieldset.appendChild(accentGlobalRadioInputWrap);
675+
accentCustomRadioInputWrap.appendChild(accentCustomRadioInput);
676+
accentCustomRadioInputWrap.appendChild(accentCustomRadioLabel);
677+
fieldset.appendChild(accentCustomRadioInputWrap);
678+
accentColorFormGroup.appendChild(accentColorPicker);
679+
accentColorFormGroup.appendChild(accentColorHex);
680+
accentColorInputWrap.appendChild(accentColorFormGroup);
681+
accentFormIndent.appendChild(accentColorInputWrap);
682+
accentFormIndent.appendChild(accentCustomInputHelper);
683+
fieldset.appendChild(accentFormIndent);
658684
form.appendChild(fieldset);
659685

660686
letterRadioInput.addEventListener("change",function(event){
@@ -672,17 +698,29 @@ var link = (function(){
672698
urlInput.addEventListener("input",function(event){
673699
stagedLink.data.url=this.value;
674700
},false);
675-
colorInput.addEventListener("change",function(event){
701+
accentGlobalRadioInput.addEventListener("change",function(){
702+
stagedLink.data.accent.override=false;
703+
accentColorPicker.setAttribute("disabled","");
704+
accentColorHex.setAttribute("disabled","");
705+
helper.addClass(accentCustomInputHelper,"disabled");
706+
},false);
707+
accentCustomRadioInput.addEventListener("change",function(){
676708
stagedLink.data.accent.override=true;
677-
stagedLink.data.accent.color=helper.hexToRgb(this.value);
709+
stagedLink.data.accent.color=helper.hexToRgb(accentColorPicker.value);
710+
accentColorPicker.removeAttribute("disabled");
711+
accentColorHex.removeAttribute("disabled");
712+
helper.removeClass(accentCustomInputHelper,"disabled");
678713
},false);
679-
colorButtonRefresh.addEventListener("click",function(event){
680-
colorInput.value=helper.rgbToHex(state.get().theme.accent.current);
681-
stagedLink.data.accent.override=false;
682-
stagedLink.data.accent.color={
683-
r: null,
684-
g: null,
685-
b: null
714+
accentColorPicker.addEventListener("change",function(){
715+
if(helper.isHexNumber(this.value)){
716+
stagedLink.data.accent.color=helper.hexToRgb(this.value);
717+
accentColorHex.value=this.value;
718+
};
719+
},false);
720+
accentColorHex.addEventListener("input",function(){
721+
if(helper.isHexNumber(this.value)){
722+
stagedLink.data.accent.color=helper.hexToRgb(this.value);
723+
accentColorPicker.value=this.value;
686724
};
687725
},false);
688726
iconFormGroupClear.addEventListener("click",function(event){
@@ -758,7 +796,6 @@ var link = (function(){
758796
pagelock.unlock();
759797
},
760798
cancelAction: function(){
761-
console.log("hit");
762799
mod.add.close();
763800
stagedLink.reset();
764801
autoSuggest.close();

‎src/js/version.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
varversion=(function(){
33

4-
varcurrent="3.69.1";
4+
varcurrent="3.70.0";
55

66
varcompare=function(a,b){
77
varpa=a.split(".");

‎src/manifest.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "nightTab",
33
"short_name": "nightTab",
44
"description": "A neutral new tab page accented with a chosen colour. Customise the layout, style, background and bookmarks in nightTab.",
5-
"version": "3.69.1",
5+
"version": "3.70.0",
66
"manifest_version": 2,
77
"chrome_url_overrides":{
88
"newtab": "index.html"

0 commit comments

Comments
(0)