From d2e85e94dfca7da9ee6b03a2299bd362e88e1dcd Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Sat, 21 Feb 2026 22:00:22 +0100 Subject: [PATCH] ver. 0.299: Table column visibility toggle with localStorage persistence Co-Authored-By: Claude Opus 4.6 --- admin/layout/style-css/table-list.css | 180 +++++++++++++++++++++ admin/templates/components/table-list.php | 187 ++++++++++++++-------- admin/templates/site/main-layout.php | 1 + docs/CHANGELOG.md | 10 ++ docs/UPDATE_INSTRUCTIONS.md | 8 +- updates/0.20/ver_0.299.zip | Bin 0 -> 10808 bytes updates/changelog.php | 3 + updates/versions.php | 2 +- 8 files changed, 320 insertions(+), 71 deletions(-) create mode 100644 admin/layout/style-css/table-list.css create mode 100644 updates/0.20/ver_0.299.zip diff --git a/admin/layout/style-css/table-list.css b/admin/layout/style-css/table-list.css new file mode 100644 index 0000000..58b84ef --- /dev/null +++ b/admin/layout/style-css/table-list.css @@ -0,0 +1,180 @@ +.table-list-table th, +.table-list-table td { + vertical-align: middle !important; +} + +.table-list-table th.text-right, +.table-list-table td.text-right { + display: table-cell !important; + text-align: right !important; + justify-content: initial !important; + align-items: initial !important; +} + +.table-list-table th:first-child, +.table-list-table td:first-child { + width: 70px; + white-space: nowrap; +} + +.js-table-filters-form .js-filter-compact-select { + width: 100%; + min-width: 0; + max-width: none; +} + +.table-list-table th.table-col-compact, +.table-list-table td.table-col-compact { + width: 120px; + min-width: 120px; + white-space: nowrap; +} + +.table-list-per-page-form { + display: inline-flex; + align-items: center; + justify-content: flex-end; + flex-wrap: wrap; + gap: 8px; +} + +.jconfirm.table-list-confirm-dialog .jconfirm-row { + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; +} + +.jconfirm.table-list-confirm-dialog .jconfirm-box-container { + width: 100%; + max-width: 560px; + padding-left: 12px; + padding-right: 12px; + margin: 0 auto; +} + +.jconfirm.table-list-confirm-dialog .jconfirm-box { + width: 100% !important; +} + +/* --- Column visibility toggle --- */ + +.table-list-header-actions { + display: inline-flex; + align-items: center; + gap: 10px; +} + +.table-col-toggle-wrapper { + position: relative; + display: inline-block; +} + +.table-col-toggle-dropdown { + display: none; + position: absolute; + right: 0; + top: 100%; + z-index: 1050; + min-width: 220px; + max-height: 400px; + overflow-y: auto; + background: #fff; + border: 1px solid #ddd; + border-radius: 4px; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + padding: 0; + margin-top: 4px; +} + +.table-col-toggle-dropdown.open { + display: block; +} + +.table-col-toggle-header { + padding: 8px 12px; + font-weight: 600; + font-size: 12px; + color: #555; + border-bottom: 1px solid #eee; + background: #f8f8f8; +} + +.table-col-toggle-item { + display: flex; + align-items: center; + padding: 5px 12px; + margin: 0; + font-weight: normal; + cursor: pointer; + font-size: 13px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + gap: 10px; +} + +.table-col-toggle-item:hover { + background: #f5f5f5; +} + +.table-col-toggle-footer { + padding: 6px 12px; + border-top: 1px solid #eee; + background: #f8f8f8; + text-align: center; +} + +.table-list-table th.table-col-hidden, +.table-list-table td.table-col-hidden { + display: none; +} + +/* Toggle switch */ + +.table-col-switch { + position: relative; + display: inline-block; + width: 34px; + min-width: 34px; + height: 18px; +} + +.table-col-switch input { + opacity: 0; + width: 0; + height: 0; + position: absolute; +} + +.table-col-switch-slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + border-radius: 18px; + transition: background-color 0.2s; +} + +.table-col-switch-slider:before { + position: absolute; + content: ""; + height: 14px; + width: 14px; + left: 2px; + bottom: 2px; + background-color: #fff; + border-radius: 50%; + transition: transform 0.2s; +} + +.table-col-switch input:checked + .table-col-switch-slider { + background-color: #5cb85c; +} + +.table-col-switch input:checked + .table-col-switch-slider:before { + transform: translateX(16px); +} diff --git a/admin/templates/components/table-list.php b/admin/templates/components/table-list.php index 831c9f4..a97747e 100644 --- a/admin/templates/components/table-list.php +++ b/admin/templates/components/table-list.php @@ -46,7 +46,30 @@ $isCompactColumn = function(array $column): bool {
- Wyników: +
+ Wyników: +
+ +
+
Widoczność kolumn
+ columns as $colIndex => $column): ?> + + + + +
+
+
@@ -130,8 +153,9 @@ $isCompactColumn = function(array $column): bool { - columns as $column): ?> + columns as $colIndex => $column): ?> sortableColumns) || in_array($sortKey, $list->sortableColumns, true); $isSortable = !empty($column['sortable']) && $sortKey !== '' && $isAllowedSortKey; @@ -147,7 +171,7 @@ $isCompactColumn = function(array $column): bool { $headerClass = trim($headerClass . ' table-col-compact'); } ?> - - columns as $column): ?> + columns as $colIndex => $column): ?> -
+ @@ -169,9 +193,10 @@ $isCompactColumn = function(array $column): bool { rows) && !empty($list->rows)): ?> rows as $row): ?>
+ @@ -269,67 +294,6 @@ $isCompactColumn = function(array $column): bool { - - diff --git a/admin/templates/site/main-layout.php b/admin/templates/site/main-layout.php index 938d7c7..9cb584d 100644 --- a/admin/templates/site/main-layout.php +++ b/admin/templates/site/main-layout.php @@ -35,6 +35,7 @@ +
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 165c634..8c49c4e 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -4,6 +4,16 @@ Logi zmian z migracji na Domain-Driven Architecture. Najnowsze na gorze. --- +## ver. 0.299 (2026-02-21) - Widoczność kolumn w tabelach + +- **NEW**: Toggle widoczności kolumn w komponentach `table-list` — przycisk z ikoną kolumn, dropdown z toggle switchami +- **NEW**: Stan widoczności kolumn zapisywany w `localStorage` per tabela (klucz na bazie `basePath`) +- **NEW**: Przycisk "Pokaż wszystkie" resetujący widoczność +- **UPDATE**: Style z `table-list.php` wyekstrahowane do osobnego pliku `admin/layout/style-css/table-list.css` +- **UPDATE**: `admin/templates/site/main-layout.php` — podłączenie `table-list.css` + +--- + ## ver. 0.297 (2026-02-19) - REST API produktów - **NEW**: Endpoint `products` w REST API — lista, szczegóły, tworzenie, aktualizacja produktów diff --git a/docs/UPDATE_INSTRUCTIONS.md b/docs/UPDATE_INSTRUCTIONS.md index 499ab85..d67b986 100644 --- a/docs/UPDATE_INSTRUCTIONS.md +++ b/docs/UPDATE_INSTRUCTIONS.md @@ -18,14 +18,14 @@ Aktualizacje znajdują się w folderze `updates/0.XX/` gdzie XX oznacza dziesią ## Procedura tworzenia nowej aktualizacji -## Status biezacej aktualizacji (ver. 0.297) +## Status biezacej aktualizacji (ver. 0.299) -- Wersja udostepniona: `0.297` (data: 2026-02-19). +- Wersja udostepniona: `0.299` (data: 2026-02-21). - Pliki publikacyjne: - - `updates/0.20/ver_0.297.zip` + - `updates/0.20/ver_0.299.zip` - Pliki metadanych aktualizacji: - `updates/changelog.php` - - `updates/versions.php` (`$current_ver = 297`) + - `updates/versions.php` (`$current_ver = 299`) - Weryfikacja testow przed publikacja: - `OK (687 tests, 1971 assertions)` diff --git a/updates/0.20/ver_0.299.zip b/updates/0.20/ver_0.299.zip new file mode 100644 index 0000000000000000000000000000000000000000..7dddc2e04a50fbb827285371d7becfde76ec4231 GIT binary patch literal 10808 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 literal 0 HcmV?d00001 diff --git a/updates/changelog.php b/updates/changelog.php index 05d1ff8..702735d 100644 --- a/updates/changelog.php +++ b/updates/changelog.php @@ -1,3 +1,6 @@ +ver. 0.299 - 21.02.2026
+- NEW - Ukrywanie/pokazywanie kolumn w tabelach admina (toggle switch + localStorage) +
ver. 0.298 - 20.02.2026
- FIX - kilka poprawek po aktualizacji
diff --git a/updates/versions.php b/updates/versions.php index b7e10da..168f4a3 100644 --- a/updates/versions.php +++ b/updates/versions.php @@ -1,5 +1,5 @@