Skip to content

Commit 3f0f27e

Browse files
authored
Merge pull request #17 from MightyShadow702/Dev
Version 0.8.9
2 parents d027d3e + ff5a07e commit 3f0f27e

File tree

10 files changed

+171
-50
lines changed

10 files changed

+171
-50
lines changed

index.html

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
</head>
2323
<body onload="onload()">
2424
<div id="menu">
25-
<button id="toggle" onclick="toggle_menu()"><img src="assets/menu.svg"></img></button>
26-
<div id="menucontent">
25+
<button id="toggle" onclick="toggle_menu()" onkeyup="menu_onkeyup(event)" aria-pressed="false"><img src="assets/menu.svg" alt="menu"></img></button>
26+
<div id="menucontent" role="group" aria-labelledby="toggle">
2727
<button onclick="import_metadata()" id="bt_import">Import</button>
2828
<button onclick="export_metadata()" id="bt_export">Export</button>
2929
<button onclick="show_tutorial()" id="bt_tutorial">Tutorial</button>
@@ -33,14 +33,14 @@
3333
</div>
3434
</div>
3535
<div id="inputarea">
36-
<input id="new_item_input" onkeydown="input_onkeydown(this, event)" oninput="input_oninput(this)" placeholder="Something I need..."></input>
36+
<input id="new_item_input" onkeyup="input_onkeyup(this, event)" oninput="input_oninput(this)" placeholder="Something I need..."></input>
3737
<button id="input_clear" onclick="input_clear()">X</button>
3838
</div>
3939
<div id="item_list">
40-
<p id="buy_title" class="section_title">Buy</p>
41-
<div id="current_items"></div>
42-
<p id="last_title" class="section_title">Last used</p>
43-
<div id="last_items"></div>
40+
<p id="buy_title" class="section_title" role="heading" aria-level="3">Buy</p>
41+
<div id="current_items" role="group" aria-labelledby="buy_title"></div>
42+
<p id="last_title" class="section_title" role="heading" aria-level="3">Last used</p>
43+
<div id="last_items" role="group" aria-labelledby="last_title"></div>
4444
<div>
4545
</body>
4646
</html>

js/languages.js

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ var languages = {
3030
"style_light": "Bright",
3131
"style_yb": "Yellow-Blue",
3232
"style_eink": "E-Ink",
33-
"style_zuflucht": "Hotel Zuflucht",
33+
"style_zuflucht": "Hotel Haven",
3434

3535
//Tutorial
3636
"tutorial_title": "Tutorial",
@@ -831,6 +831,48 @@ var languages = {
831831
"tutorial_remove": "নিখুঁত! এখন এটি আপনার কেনাকাটার ইতিহাসে রয়েছে, যাতে আপনি পরের বার এটি দ্রুত খুঁজে পেতে পারেন।\nএখন আপনার জিনিসটি কেনাকাটার ইতিহাস থেকে সম্পূর্ণরূপে মুছে ফেলার জন্য আবার কিছুক্ষণের জন্য টিপুন।",
832832
"tutorial_close": "এটি ছিল এর সমস্ত কার্যকারিতার গুরুত্ব সহ সম্পূর্ণ টিউটোরিয়াল।\nআপনার পরবর্তী শপিং ট্যুরে মজা করুন!"
833833
},
834+
"sk": {
835+
"buy": "Kúpiť",
836+
"last": "Nakúpené",
837+
"search": "Potrebujem...",
838+
"bt_export": "Exportovať",
839+
"bt_import": "Importovať",
840+
"about_title": "O aplikácii",
841+
"export_message": "Tento súbor je exportovaný z aplikácie Traero",
842+
"update_message": "{0} aktualizoval(a) zoznam v aplikácii Traero",
843+
"update_item_txt": "položka",
844+
"update_items_txt": "položiek",
845+
846+
//toasts
847+
"toast_fist_start": "Zobraziť tutoriál?",
848+
"toast_undo": "Vrátiť späť?",
849+
850+
//languages
851+
"language_title": "Jazyk",
852+
"bt_automatic": "Automaticky",
853+
"language_name": "Slovenčina",
854+
855+
//themes
856+
"themes_title": "Vzhľad",
857+
"bt_default_theme": "Predvolený",
858+
859+
//styles
860+
"style_oled": "Tmavý (OLED)",
861+
"style_dark": "Tmavý",
862+
"style_light": "Svetlý",
863+
"style_yb": "Žltomodrý",
864+
865+
//Tutorial
866+
"tutorial_title": "Tutoriál",
867+
"tutorial_button_cancel": "Zrušiť",
868+
"tutorial_button_next": "Ukončiť",
869+
"tutorial_add": "V spodnej časti pridajte názov položky, ktorú si želáte kúpiť.",
870+
"tutorial_edit": "Výborne, Teraz nachvíľu pridržte položku, ktorú ste práve pridali stlačenú.",
871+
"tutorial_edit_change": "Teraz ste v režime úprav. Položku môžete upraviť.\nOkrem názvu môžete napísať čiarku a za čiarkou uviesť počet.",
872+
"tutorial_check": "Kliknite na položku a označte ju tak ako nakúpenú.",
873+
"tutorial_remove": "Nádhera! Položka je teraz v histórii nákupov a môžete ju rýchlo nájsť, ak by ste ju potrebovali kúpiť znovu.\nZ histórie nákupov položku úplne odstránite tak, že ju stlačíte a pridržíte stlačenú.",
874+
"tutorial_close": "Predstavili sme vám všetky užitočné funkcie aplikácie.\nPríjemnú zábavu pri ďalších nákupoch!"
875+
},
834876
}
835877

836878
function translate(name, replaces=[])

js/list.js

Lines changed: 80 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ document.addEventListener('touchmove', function(event) {
1919
}
2020
});
2121

22+
var key_pressed = false;
23+
2224
class Item
2325
{
2426
remove()
@@ -86,6 +88,7 @@ class Item
8688
}
8789

8890
var delete_timer = -1;
91+
var start_keyPress = 0;
8992

9093
function startPress()
9194
{
@@ -95,6 +98,7 @@ class Item
9598
//check if screen moved (touch), else just true
9699
if (Math.abs(start_mouse_x - mouse_x) < 5 && Math.abs(start_mouse_y - mouse_y) < 5)
97100
{
101+
start_keyPress = 0;
98102
obj.dom.remove();
99103
if (metadata[name].active)
100104
{
@@ -126,19 +130,66 @@ class Item
126130
clearInterval(delete_timer);
127131
}, 1000);
128132
}
133+
function startKeyPress(event)
134+
{
135+
if (event.key == "Enter" || event.key == "Space")
136+
{
137+
event.preventDefault();
138+
event.stopPropagation();
139+
if (!start_keyPress)
140+
{
141+
start_keyPress = (new Date()).getTime();
142+
key_pressed = true;
143+
} else {
144+
return;
145+
}
146+
startPress();
147+
}
148+
else if (/^[a-zA-Z]$/.test(event.key))
149+
{
150+
event.preventDefault();
151+
event.stopPropagation();
152+
cancelPress();
153+
start_keyPress = 0;
154+
key_pressed = false;
155+
var input = document.getElementById("new_item_input");
156+
input.focus();
157+
input.click();
158+
input.value += event.key;
159+
input_oninput(input);
160+
}
161+
}
129162
function cancelPress()
130163
{
131164
if (delete_timer != -1)
132165
{
133166
clearInterval(delete_timer);
134167
}
135168
}
169+
function cancelKeyPress(event)
170+
{
171+
if (event.key == "Enter" || event.key == "Space")
172+
{
173+
event.preventDefault();
174+
event.stopPropagation();
175+
var delta = (new Date()).getTime() - start_keyPress;
176+
if (delta <= 150)
177+
{
178+
event.target.click();
179+
}
180+
cancelPress();
181+
key_pressed = false;
182+
start_keyPress = 0;
183+
}
184+
}
136185
this.dom.addEventListener("mousedown", startPress);
137186
this.dom.addEventListener("mouseup", cancelPress);
138187
this.dom.addEventListener("mouseleave", cancelPress);
139188
this.dom.addEventListener("touchstart", startPress);
140189
this.dom.addEventListener("touchend", cancelPress);
141190
this.dom.addEventListener("touchcancel", cancelPress);
191+
this.dom.addEventListener("keydown", startKeyPress);
192+
this.dom.addEventListener("keyup", cancelKeyPress);
142193
}
143194
}
144195

@@ -157,15 +208,37 @@ function add_item(name)
157208
save_metadata();
158209
}
159210

160-
function input_onkeydown(obj, event)
211+
function input_onkeyup(obj, event)
161212
{
162-
if (obj.value != "" && event.key == "Enter")
213+
if (key_pressed)
163214
{
164-
editing = false;
165-
add_item(obj.value.trim());
166-
obj.value = "";
167-
search_string = "";
168-
update_search();
215+
event.preventDefault();
216+
event.stopPropagation();
217+
start_keyPress = 0;
218+
key_pressed = false;
219+
}
220+
else if (obj.value != "")
221+
{
222+
event.preventDefault();
223+
event.stopPropagation();
224+
if (event.key == "Enter")
225+
{
226+
add_item(obj.value.trim());
227+
obj.value = "";
228+
search_string = "";
229+
update_search();
230+
}
231+
else if (event.key == "Escape")
232+
{
233+
input_clear();
234+
}
235+
else if (event.key == "Delete")
236+
{
237+
editing = false;
238+
obj.value = "";
239+
search_string = "";
240+
update_search();
241+
}
169242
}
170243
}
171244

js/main.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ function update_handler(data)
2424
if (data.serial == data.max_serial)
2525
{
2626
var payload = data.payload;
27-
console.log(payload.metadata);
2827
for (const [name, data] of Object.entries(payload.metadata))
2928
{
3029
if (!(name in metadata) || (name in metadata && metadata[name].timestamp < data.timestamp))
@@ -57,7 +56,7 @@ function onload()
5756
{
5857
changeTheme(themes[localStorage.selectedTheme]);
5958
}
60-
59+
6160
window.webxdc.setUpdateListener(update_handler);
6261

6362
if (localStorage.firstSession == undefined)

js/menu.js

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
1+
function close_menu()
2+
{
3+
document.getElementById("menu").classList.add("menu_close");
4+
document.getElementById("menu").classList.remove("menu_open");
5+
document.getElementById("toggle").setAttribute("aria-pressed", false);
6+
document.getElementById("new_item_input").focus();
7+
}
8+
19
function toggle_menu()
210
{
3-
var obj = document.getElementById("menucontent");
11+
412
if (!document.getElementById("menu").classList.contains("menu_open"))
513
{
614
document.getElementById("menu").classList.add("menu_open");
715
document.getElementById("menu").classList.remove("menu_close");
16+
document.getElementById("toggle").setAttribute("aria-pressed", true);
817
}
918
else
1019
{
11-
document.getElementById("menu").classList.add("menu_close");
12-
document.getElementById("menu").classList.remove("menu_open");
20+
close_menu();
1321
}
1422
}
1523

@@ -25,7 +33,7 @@ function show_about()
2533
title.innerHTML = "Traero";
2634
about_dialog.add(title);
2735
var version_number = document.createElement("p");
28-
version_number.innerHTML = "Version: 0.8.8";
36+
version_number.innerHTML = "Version: 0.8.9";
2937
about_dialog.add(version_number);
3038
var license_txt = document.createElement("p");
3139
license_txt.id = "license_title";
@@ -91,3 +99,11 @@ function show_tutorial()
9199
{
92100
window.location.replace("/tutorial.html");
93101
}
102+
103+
function menu_onkeyup(event)
104+
{
105+
if (event.key == "Escape")
106+
{
107+
close_menu();
108+
}
109+
}

js/popup.js

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,63 +17,55 @@ class traero_popup
1717
close()
1818
{
1919
this.dom.remove();
20+
document.getElementById("toggle").focus();
2021
}
2122
constructor(title, classes=[])
2223
{
2324
var dom = document.createElement("div");
2425
this.dom = dom;
2526
dom.id = "popup";
27+
dom.setAttribute("onkeyup", "popup_onkeyup(this, event)");
2628
var bt_close = document.createElement("button");
2729
bt_close.id = "bt_close";
2830
bt_close.innerHTML = "X";
2931
bt_close.onclick = function()
3032
{
3133
dom.remove();
34+
document.getElementById("toggle").focus();
3235
}
3336
dom.appendChild(bt_close);
3437
if (title)
3538
{
3639
var txt_title = document.createElement("p");
3740
this._title = txt_title;
3841
txt_title.id = "title";
42+
txt_title.setAttribute("role", "heading");
43+
txt_title.setAttribute("aria-level", 2);
3944
txt_title.innerHTML = title;
4045
dom.appendChild(txt_title);
4146
}
4247
var content = document.createElement("div");
4348
this.content = content;
4449
content.id = "content";
50+
content.setAttribute("role", "dialog");
51+
content.setAttribute("aria-labelledby", "title");
52+
content.setAttribute("tabindex", -1);
4553
dom.appendChild(content);
4654
for (var i in classes)
4755
{
4856
content.classList.add(classes[i]);
4957
}
5058
document.body.appendChild(dom);
59+
content.focus();
60+
content.click();
5161
}
5262
}
5363

54-
55-
function show_popup(title=undefined)
64+
function popup_onkeyup(obj, event)
5665
{
57-
var frame = document.createElement("div");
58-
frame.id = "popup";
59-
var bt_close = document.createElement("button");
60-
bt_close.id = "bt_close";
61-
bt_close.innerHTML = "X";
62-
bt_close.onclick = function()
63-
{
64-
frame.remove();
65-
}
66-
frame.appendChild(bt_close);
67-
if (title)
66+
if (event.key == "Escape")
6867
{
69-
var txt_title = document.createElement("p");
70-
txt_title.id = "title";
71-
txt_title.innerHTML = title;
72-
frame.appendChild(txt_title);
68+
obj.remove();
69+
document.getElementById("toggle").focus();
7370
}
74-
var content = document.createElement("div");
75-
content.id = "content";
76-
frame.appendChild(content);
77-
document.body.appendChild(frame);
78-
return content;
7971
}

js/themes.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -622,12 +622,10 @@ function changeTheme(theme)
622622
var value = theme[key];
623623
if (value != null)
624624
{
625-
console.log("set", key, value);
626625
document.documentElement.style.setProperty("--"+key, value);
627626
}
628627
else
629628
{
630-
console.log("del", key, value);
631629
document.documentElement.style.removeProperty("--"+key);
632630
}
633631
}

js/toast.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ function traero_toast(msg, mstime, closeable=false, button_onclick=undefined)
88
toast.appendChild(timer_ui);
99
var text = document.createElement("p");
1010
text.id = "message";
11+
text.role = "alert";
1112
text.innerHTML = msg;
1213
toast.appendChild(text);
1314
if (closeable)

manifest.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
name = "Traero"
22
description = "a modern shopping list"
33
source_code_url = "https://github.com/MightyShadow702/Traero-webxdc"
4-
tag_name = "0.8.8"
4+
tag_name = "0.8.9"

0 commit comments

Comments
 (0)