v1.7.5: UI-Verbesserungen Listenansicht und Zeiteingabe
- Listview: Toolbar-Rahmen #407BFF, Fokus 2px ring-inset #235CC8 - Listview: Pfeil-Buttons Monatsauswahl in #85B7D7 - Listview: Klimawerte werden bei allen-0 ausgeblendet - Zeiteingabe: nur Stunden + Tab setzt Minuten automatisch auf :00 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -123,19 +123,19 @@ export default function LogbuchList({ kuppel, refreshKey, onEdit, limit = 10, co
|
|||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
onClick={() => setMonth((m) => prevMonth(m))}
|
onClick={() => setMonth((m) => prevMonth(m))}
|
||||||
className="px-2 py-1 text-sm rounded-lg bg-gray-200 hover:bg-gray-300"
|
className="px-2 py-1 text-sm rounded-lg bg-[#85B7D7] hover:bg-[#6a9fc5]"
|
||||||
>←</button>
|
>←</button>
|
||||||
<input
|
<input
|
||||||
type="month"
|
type="month"
|
||||||
value={month}
|
value={month}
|
||||||
max={currentMonth()}
|
max={currentMonth()}
|
||||||
onChange={(e) => setMonth(e.target.value > currentMonth() ? currentMonth() : e.target.value)}
|
onChange={(e) => setMonth(e.target.value > currentMonth() ? currentMonth() : e.target.value)}
|
||||||
className="border border-gray-300 rounded-lg px-2 py-1 text-sm"
|
className="border border-[#407BFF] rounded-lg px-2 py-1 text-sm focus:outline-none focus:ring-2 focus:ring-inset focus:ring-[#235CC8]"
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
onClick={() => setMonth((m) => nextMonth(m))}
|
onClick={() => setMonth((m) => nextMonth(m))}
|
||||||
disabled={month >= currentMonth()}
|
disabled={month >= currentMonth()}
|
||||||
className="px-2 py-1 text-sm rounded-lg bg-gray-200 hover:bg-gray-300 disabled:opacity-40 disabled:cursor-not-allowed"
|
className="px-2 py-1 text-sm rounded-lg bg-[#85B7D7] hover:bg-[#6a9fc5] disabled:opacity-40 disabled:cursor-not-allowed"
|
||||||
>→</button>
|
>→</button>
|
||||||
{month !== currentMonth() && (
|
{month !== currentMonth() && (
|
||||||
<button
|
<button
|
||||||
@@ -150,7 +150,7 @@ export default function LogbuchList({ kuppel, refreshKey, onEdit, limit = 10, co
|
|||||||
value={search}
|
value={search}
|
||||||
onChange={(e) => setSearch(e.target.value)}
|
onChange={(e) => setSearch(e.target.value)}
|
||||||
placeholder="Suche in Bemerkungen, Objekte, BEOs…"
|
placeholder="Suche in Bemerkungen, Objekte, BEOs…"
|
||||||
className="w-full px-3 py-1.5 pr-8 border border-gray-300 rounded-lg text-sm focus:outline-none focus:border-blue-500"
|
className="w-full px-3 py-1.5 pr-8 border border-[#407BFF] rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-inset focus:ring-[#235CC8]"
|
||||||
/>
|
/>
|
||||||
{search ? (
|
{search ? (
|
||||||
<button
|
<button
|
||||||
@@ -164,7 +164,7 @@ export default function LogbuchList({ kuppel, refreshKey, onEdit, limit = 10, co
|
|||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
onClick={handlePrint}
|
onClick={handlePrint}
|
||||||
className="text-sm px-3 py-1.5 bg-gray-200 hover:bg-gray-300 text-gray-700 rounded-lg shrink-0"
|
className="text-sm px-3 py-1.5 bg-[#85B7D7] hover:bg-[#6a9fc5] text-black rounded-lg shrink-0"
|
||||||
>🖨 Drucken</button>
|
>🖨 Drucken</button>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
@@ -260,7 +260,7 @@ export default function LogbuchList({ kuppel, refreshKey, onEdit, limit = 10, co
|
|||||||
{!compact && <td className={cell}>{e.Bemerkungen || ''}</td>}
|
{!compact && <td className={cell}>{e.Bemerkungen || ''}</td>}
|
||||||
{!compact && (
|
{!compact && (
|
||||||
<td className={cell}>
|
<td className={cell}>
|
||||||
{e.WetterTemp !== null && (
|
{e.WetterTemp !== null && !(parseFloat(String(e.WetterTemp)) === 0 && parseFloat(String(e.WetterFeuchte ?? 0)) === 0 && parseFloat(String(e.WetterDruck ?? 0)) === 0) && (
|
||||||
<div className="text-xs whitespace-nowrap">
|
<div className="text-xs whitespace-nowrap">
|
||||||
<div>{e.WetterTemp} °C</div>
|
<div>{e.WetterTemp} °C</div>
|
||||||
<div>{Math.round(e.WetterFeuchte ?? 0)} %</div>
|
<div>{Math.round(e.WetterFeuchte ?? 0)} %</div>
|
||||||
|
|||||||
@@ -53,8 +53,9 @@ export default function TimeInput({ value, onChange, className = '', clearOnFocu
|
|||||||
setError(false);
|
setError(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isValid(local)) {
|
const expanded = /^\d{1,2}:?$/.test(local) ? local.replace(/:$/, '') + ':00' : local;
|
||||||
const norm = normalize(local);
|
if (isValid(expanded)) {
|
||||||
|
const norm = normalize(expanded);
|
||||||
setLocal(norm);
|
setLocal(norm);
|
||||||
setError(false);
|
setError(false);
|
||||||
onChange(norm);
|
onChange(norm);
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "logbuch",
|
"name": "logbuch",
|
||||||
"version": "1.7.4",
|
"version": "1.7.5",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "logbuch",
|
"name": "logbuch",
|
||||||
"version": "1.7.4",
|
"version": "1.7.5",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bcryptjs": "^3.0.3",
|
"bcryptjs": "^3.0.3",
|
||||||
"jose": "^6.2.2",
|
"jose": "^6.2.2",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "logbuch",
|
"name": "logbuch",
|
||||||
"version": "1.7.4",
|
"version": "1.7.5",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
|
|||||||
Reference in New Issue
Block a user