Skip to content

Commit 59c51a0

Browse files
committed
chore: bump to 0.7.1
1 parent a079bbb commit 59c51a0

7 files changed

Lines changed: 93 additions & 38 deletions

File tree

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "zcom",
33
"private": true,
4-
"version": "0.7.0",
4+
"version": "0.7.1",
55
"type": "module",
66
"scripts": {
77
"dev": "vite",

src-tauri/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "zcom"
3-
version = "0.7.0"
3+
version = "0.7.1"
44
description = "High performance serial debug assistant"
55
authors = ["zt"]
66
edition = "2021"

src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schema.tauri.app/config/2",
33
"productName": "ZCOM",
4-
"version": "0.7.0",
4+
"version": "0.7.1",
55
"identifier": "com.zcom.app",
66
"build": {
77
"frontendDist": "../dist",

src/css/style.css

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,6 @@ select:focus, input:focus, textarea:focus {
207207
margin-left: auto;
208208
}
209209
.menu-right .small-btn,
210-
.menu-right .baud-select,
211210
.menu-right .cs-trigger {
212211
height: 28px;
213212
box-sizing: border-box;
@@ -254,16 +253,16 @@ select:focus, input:focus, textarea:focus {
254253
flex-shrink: 0;
255254
transition: transform 0.15s;
256255
}
257-
.cs-arrow-icon svg,
258-
.cs-arrow svg {
256+
.cs-arrow-icon {
259257
display: block;
260-
width: 10px;
261-
height: 10px;
258+
width: 8px;
259+
height: 8px;
260+
transition: transform 0.15s;
262261
}
263262
.custom-select.open .cs-arrow {
264263
transform: rotate(180deg);
265264
}
266-
.custom-select.open .cs-arrow-icon svg {
265+
.custom-select.open .cs-arrow-icon {
267266
transform: rotate(180deg);
268267
}
269268
.cs-dropdown {
@@ -306,12 +305,9 @@ select:focus, input:focus, textarea:focus {
306305
.cs-option.placeholder:hover {
307306
background: transparent;
308307
}
309-
.baud-select {
310-
width: 72px;
311-
padding: 3px 6px;
312-
font-size: 13px;
313-
height: 28px;
314-
box-sizing: border-box;
308+
.baud-select.custom-select {
309+
width: auto;
310+
flex-shrink: 0;
315311
}
316312
.small-btn {
317313
padding: 3px 10px;

src/index.html

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,13 @@
4949
<div class="cs-dropdown" id="com-select-dropdown"></div>
5050
</div>
5151
<button id="btn-serial-settings" class="small-btn" title="串口详细设置"><i data-lucide="settings"></i></button>
52-
<select id="baud-select" class="baud-select">
53-
<option value="300">300</option>
54-
<option value="1200">1200</option>
55-
<option value="2400">2400</option>
56-
<option value="4800">4800</option>
57-
<option value="9600">9600</option>
58-
<option value="14400">14400</option>
59-
<option value="19200">19200</option>
60-
<option value="28800">28800</option>
61-
<option value="38400">38400</option>
62-
<option value="56000">56000</option>
63-
<option value="57600">57600</option>
64-
<option value="115200" selected>115200</option>
65-
<option value="230400">230400</option>
66-
<option value="460800">460800</option>
67-
<option value="921600">921600</option>
68-
</select>
52+
<div id="baud-select" class="custom-select baud-select" tabindex="0">
53+
<div class="cs-trigger">
54+
<span class="cs-text" id="baud-select-text">115200</span>
55+
<i data-lucide="chevron-down" class="cs-arrow-icon"></i>
56+
</div>
57+
<div class="cs-dropdown" id="baud-select-dropdown"></div>
58+
</div>
6959
<button id="btn-refresh-ports" class="small-btn" title="刷新串口"><i data-lucide="refresh-cw"></i></button>
7060
<button id="btn-toggle-port" class="small-btn" disabled>打开</button>
7161
<span id="port-status" class="port-status" title="未连接"></span>

src/js/menu.js

Lines changed: 73 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,17 @@ export function initMenu() {
9191

9292
refresh();
9393

94+
function updateBaudSelection(rate) {
95+
baudText.textContent = String(rate);
96+
baudDropdown.querySelectorAll('.cs-option').forEach(o => {
97+
o.classList.toggle('selected', parseInt(o.dataset.value) === rate);
98+
});
99+
}
100+
94101
(async () => {
95102
const saved = await getSettings();
96103
baudRate = saved.baudRate || 115200;
97-
baudSelect.value = String(baudRate);
104+
updateBaudSelection(baudRate);
98105
charSize = saved.charSize || 8;
99106
stopBits = saved.stopBits || 1;
100107
parity = saved.parity || 'none';
@@ -136,12 +143,32 @@ export function initMenu() {
136143
if (!comEl.contains(e.target)) {
137144
closeComDropdown();
138145
}
146+
if (!baudSelect.contains(e.target)) {
147+
closeBaudDropdown();
148+
}
139149
});
140150

141-
refreshBtn.addEventListener('click', refresh);
151+
const BAUD_RATES = [300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200, 230400, 460800, 921600];
142152

143-
baudSelect.addEventListener('change', async () => {
144-
baudRate = parseInt(baudSelect.value);
153+
const baudText = document.getElementById('baud-select-text');
154+
const baudDropdown = document.getElementById('baud-select-dropdown');
155+
156+
function closeBaudDropdown() {
157+
baudSelect.classList.remove('open');
158+
}
159+
160+
function toggleBaudDropdown() {
161+
baudSelect.classList.toggle('open');
162+
}
163+
164+
async function selectBaudOption(el) {
165+
if (!el) return;
166+
baudDropdown.querySelectorAll('.cs-option.selected').forEach(e => e.classList.remove('selected'));
167+
el.classList.add('selected');
168+
const val = parseInt(el.dataset.value);
169+
baudRate = val;
170+
baudText.textContent = String(val);
171+
closeBaudDropdown();
145172
await patchSettings({ baudRate });
146173

147174
if (portOpen) {
@@ -164,8 +191,50 @@ export function initMenu() {
164191
document.dispatchEvent(new CustomEvent('port-state-change', { detail: { open: false } }));
165192
}
166193
}
194+
}
195+
196+
BAUD_RATES.forEach(rate => {
197+
const opt = document.createElement('div');
198+
opt.className = 'cs-option';
199+
opt.textContent = String(rate);
200+
opt.dataset.value = String(rate);
201+
if (rate === baudRate) opt.classList.add('selected');
202+
opt.addEventListener('click', () => selectBaudOption(opt));
203+
baudDropdown.appendChild(opt);
204+
});
205+
206+
baudSelect.addEventListener('click', (e) => {
207+
if (e.target.closest('.cs-dropdown')) return;
208+
toggleBaudDropdown();
209+
});
210+
211+
baudSelect.addEventListener('keydown', (e) => {
212+
if (e.key === 'Enter' || e.key === ' ') {
213+
e.preventDefault();
214+
toggleBaudDropdown();
215+
} else if (e.key === 'Escape') {
216+
closeBaudDropdown();
217+
} else if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {
218+
e.preventDefault();
219+
if (!baudSelect.classList.contains('open')) {
220+
baudSelect.classList.add('open');
221+
}
222+
const items = [...baudDropdown.querySelectorAll('.cs-option')];
223+
if (!items.length) return;
224+
const sel = baudDropdown.querySelector('.cs-option.selected');
225+
const idx = items.indexOf(sel);
226+
const next = e.key === 'ArrowDown'
227+
? Math.min(idx + 1, items.length - 1)
228+
: Math.max(idx - 1, 0);
229+
items.forEach(o => o.classList.remove('selected'));
230+
items[next].classList.add('selected');
231+
baudText.textContent = items[next].textContent;
232+
baudRate = parseInt(items[next].dataset.value);
233+
}
167234
});
168235

236+
refreshBtn.addEventListener('click', refresh);
237+
169238
toggleBtn.addEventListener('click', async () => {
170239
if (portOpen) {
171240
try {

0 commit comments

Comments
 (0)