Compare commits

...

4 Commits

Author SHA1 Message Date
BOHA
e082a6ef06 chore(release): v1.9.7 — compact mobile filter bars
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 16:11:59 +02:00
BOHA
1662453d9c fix(mobile): compact 2-up filter bars instead of full-width column
.admin-search-bar on phones (<=768px) was flex-direction:column with each
control forced full-width (min-width:100% at <=480), so multi-filter bars
(warehouse receipts/issues, sales lists) became a tall stack of huge controls.
Now: the search box spans the row; filter selects/date pickers sit two-per-row;
the reset button spans the row. 44px/16px touch sizing unchanged; applies
consistently to every page using .admin-search-bar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 16:11:46 +02:00
BOHA
9dd2e07f19 chore(release): v1.9.6 — mobile responsiveness (Phase 1+2 + tabs/comboboxes)
Supersedes the undeployed v1.9.5: adds the mobile tab-bar scroll fix and
combobox touch-target fixes on top of the Phase 1+2 responsive rules.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 15:54:51 +02:00
BOHA
18064a972c fix(mobile): tab bars scroll on phones + combobox 44px touch targets
- .admin-tabs: horizontal-scroll + 44px tabs at <=640px so 4-tab bars
  (WarehouseReports, Invoices/Offers status filters, OffersTemplates) no longer
  overflow off-screen.
- Customer searchable dropdown + warehouse ItemPicker: option rows >=44px,
  clear button enlarged, list clamped to viewport width at <=640px.
Native selects/toggles were already mobile-safe (44px at <=768px). Mobile-only; desktop unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 15:54:36 +02:00
4 changed files with 80 additions and 23 deletions

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "app-ts", "name": "app-ts",
"version": "1.9.5", "version": "1.9.7",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "app-ts", "name": "app-ts",
"version": "1.9.5", "version": "1.9.7",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@dnd-kit/core": "^6.3.1", "@dnd-kit/core": "^6.3.1",

View File

@@ -1,6 +1,6 @@
{ {
"name": "app-ts", "name": "app-ts",
"version": "1.9.5", "version": "1.9.7",
"description": "", "description": "",
"main": "dist/server.js", "main": "dist/server.js",
"scripts": { "scripts": {

View File

@@ -610,6 +610,25 @@
0 0 0 1px var(--border-color); 0 0 0 1px var(--border-color);
} }
@media (max-width: 640px) {
.admin-tabs {
display: flex;
max-width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
scrollbar-width: none;
}
.admin-tabs::-webkit-scrollbar {
display: none;
}
.admin-tab {
flex: 0 0 auto;
min-height: 44px;
}
}
/* ============================================================================ /* ============================================================================
Empty State Empty State
============================================================================ */ ============================================================================ */
@@ -1075,37 +1094,44 @@
} }
@media (max-width: 768px) { @media (max-width: 768px) {
/* Compact 2-up filter grid instead of a tall full-width column:
the search box spans the row; the filter selects / date pickers sit
two-per-row; the reset button spans the row. Touch sizing (44px height +
16px font from forms.css) is unchanged — this just halves the vertical
footprint of multi-filter bars on phones. */
.admin-search-bar { .admin-search-bar {
flex-direction: column;
align-items: stretch; align-items: stretch;
} }
.admin-search-bar .admin-form-input, /* Search box spans the full row (handles both the .admin-search wrapper
.admin-search-bar .admin-form-select { and a bare text input used directly as the search field). */
max-width: 100%; .admin-search-bar > .admin-search,
} .admin-search-bar > .admin-form-input:not([type="date"]) {
flex: 1 1 100%;
.admin-search-bar .react-datepicker-wrapper { max-width: none;
max-width: 100%;
} }
.admin-search { .admin-search {
max-width: 100%; min-width: 0;
max-width: none;
}
/* Filters (status/supplier selects, native date inputs, datepicker
wrappers): two per row. */
.admin-search-bar > .admin-form-select,
.admin-search-bar > .admin-form-input[type="date"],
.admin-search-bar > .react-datepicker-wrapper {
flex: 1 1 calc(50% - 0.25rem);
min-width: 0;
max-width: none;
}
/* Action buttons (e.g. "Zrušit filtry") span the full row. */
.admin-search-bar > .admin-btn {
flex: 1 1 100%; flex: 1 1 100%;
} }
} }
@media (max-width: 480px) {
.admin-search-bar .admin-form-input,
.admin-search-bar .admin-form-select {
min-width: 100%;
}
.admin-search-bar .react-datepicker-wrapper {
min-width: 100%;
}
}
/* ============================================================================ /* ============================================================================
Item Picker (Warehouse) Item Picker (Warehouse)
============================================================================ */ ============================================================================ */
@@ -1185,3 +1211,14 @@
color: var(--text-secondary); color: var(--text-secondary);
white-space: nowrap; white-space: nowrap;
} }
@media (max-width: 640px) {
.admin-item-picker-list {
max-width: calc(100vw - 24px);
overflow-y: auto;
}
.admin-item-picker-item {
min-height: 44px;
}
}

View File

@@ -488,3 +488,23 @@
color: var(--text-tertiary); color: var(--text-tertiary);
font-size: 0.8125rem; font-size: 0.8125rem;
} }
@media (max-width: 640px) {
.admin-customer-dropdown {
max-width: calc(100vw - 24px);
overflow-y: auto;
}
.admin-customer-dropdown-item {
display: flex;
flex-direction: column;
justify-content: center;
min-height: 44px;
}
.admin-customer-selected .admin-btn-icon {
min-width: 44px;
min-height: 44px;
margin-right: -10px;
}
}