Commit Graph

49 Commits

Author SHA1 Message Date
Ruslan Bakiev
69bb978526 fix(catalog): add badge when selecting from list + fix checkbox position
All checks were successful
Build Docker Image / build (push) Successful in 3m51s
- onSelectItem now calls selectItem to add filter badge
- Checkbox repositioned to left-[420px] to not hide behind panel
- Hide List button when panel is open
2026-01-26 18:15:26 +07:00
Ruslan Bakiev
c76750a738 Fix: InfoPanel not showing - use showPanel prop
All checks were successful
Build Docker Image / build (push) Successful in 3m48s
2026-01-26 15:13:06 +07:00
Ruslan Bakiev
2d83110ef1 Move filterByBounds to map, show only when panel is open
All checks were successful
Build Docker Image / build (push) Successful in 3m46s
2026-01-26 15:00:30 +07:00
Ruslan Bakiev
5ca995ebcc Move filterByBounds checkbox into SelectionPanel
Some checks failed
Build Docker Image / build (push) Has been cancelled
2026-01-26 14:56:40 +07:00
Ruslan Bakiev
3211c5a881 Rename drawer to panel, use selectMode for visibility
All checks were successful
Build Docker Image / build (push) Successful in 3m44s
2026-01-26 14:52:19 +07:00
Ruslan Bakiev
0efc4eddfd Simplify catalog UI - remove chips, add drawer for list
All checks were successful
Build Docker Image / build (push) Successful in 3m59s
- Remove product/hub chips from QuoteForm.vue (duplicate of toggle)
- Add drawer state to useCatalogSearch.ts (isDrawerOpen, selectDrawerItem, applyDrawerFilter)
- Convert SelectionPanel to drawer with header, scrollable content, and footer
- Add "Список" button to CatalogPage.vue to open drawer
- Add "Применить фильтр" button in drawer footer
- Add slide animations for drawer (left on desktop, up on mobile)
- Update translations: catalog.list, catalog.applyFilter
2026-01-26 14:36:42 +07:00
Ruslan Bakiev
2ce3bd0bd2 Add Info panel for catalog with tabbed interface
Implemented Info mode для детального просмотра объектов каталога (hub/supplier/offer) с навигацией между связанными объектами.

Новые компоненты:
- InfoPanel.vue - панель с детальной информацией и табами для связанных объектов
- useCatalogInfo.ts - composable для управления Info state и загрузки данных

Изменения:
- useCatalogSearch.ts - добавлен infoId state и функции openInfo/closeInfo
- catalog/index.vue - интеграция InfoPanel, обработчики событий, relatedPoints для карты
- CatalogPage.vue - проброс relatedPoints в CatalogMap
- CatalogMap.vue - related points layer (cyan circles) для отображения связанных объектов

Флоу:
1. Клик на чип → Selection → Выбор → Info открывается
2. Клик на карту → Info открывается напрямую
3. В Info показываются табы со связанными объектами (top-12)
4. Клик на связанный объект → навигация к его Info
5. Кнопка "Добавить в фильтр" - добавляет объект в chips

URL sharing: ?info=type:uuid для шаринга ссылок

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-25 14:17:47 +07:00
Ruslan Bakiev
4d018323e7 Fix catalog issues: quantity input, checkbox position, glass header
All checks were successful
Build Docker Image / build (push) Successful in 3m21s
1. Quantity input in Quote mode: replaced button with inline number input
2. Checkbox position: moved to left side (next to panel) instead of right
3. MapPanel glass header: fixed sticky positioning by moving negative margins to children
2026-01-24 11:40:33 +07:00
Ruslan Bakiev
2fc4dfb834 Add Airbnb-style "search as I move" checkbox + hover highlight
All checks were successful
Build Docker Image / build (push) Successful in 3m33s
- Move filter checkbox to right side, same line as view toggle
- Add hover events on selection cards to highlight map points
- Update translations: "Искать при перемещении" / "Search as I move the map"
2026-01-24 11:07:31 +07:00
Ruslan Bakiev
d03564a2d9 Add filter by map bounds checkbox to SelectionPanel
All checks were successful
Build Docker Image / build (push) Successful in 3m36s
- Remove map search input (was wrong implementation)
- Add checkbox "In map area" to filter list by visible map bounds
- Filter products/hubs/suppliers when checkbox is enabled
- Disable "load more" when filtering by bounds (client-side only)
2026-01-24 10:54:09 +07:00
Ruslan Bakiev
404375248b Fix catalog UI: navbar alignment, selection panel, map search, infinite scroll
All checks were successful
Build Docker Image / build (push) Successful in 3m37s
- Fix team selector alignment in navbar (use items-center, fixed height)
- Fix SelectionPanel header padding to account for parent p-4
- Add map search input (white glass, positioned next to panel)
- Add infinite scroll to SelectionPanel with IntersectionObserver
- Products load all at once (no server-side pagination yet)
- Hubs and Suppliers support pagination with loadMore
2026-01-24 10:09:55 +07:00
Ruslan Bakiev
2a607d0d2d Fix catalog UI issues
All checks were successful
Build Docker Image / build (push) Successful in 3m31s
1. Fix navbar height - prevent tag wrapping with overflow-hidden
2. Fix translation keys for mode labels and search form labels
3. Fix SelectionPanel - white glass header/search, no top gap
4. Map click fills active selector - emit full properties from map
2026-01-24 09:47:41 +07:00
Ruslan Bakiev
5e55443975 Fix map points: icons, color updates, loading state
All checks were successful
Build Docker Image / build (push) Successful in 3m41s
- Add entityType prop to CatalogMap for icon selection
- Change circle layers to symbol layers with entity-specific icons
- Icons: shopping bag (offers), warehouse (hubs), factory (suppliers)
- Add watcher to update colors when pointColor/entityType changes
- Clear old points and show loading indicator when switching view modes
- Add clearNodes function to useClusteredNodes composable
2026-01-24 09:18:27 +07:00
Ruslan Bakiev
593aa0df12 Make map fullscreen behind transparent navbar
All checks were successful
Build Docker Image / build (push) Successful in 3m14s
2026-01-23 12:48:25 +07:00
Ruslan Bakiev
aa5a0a66fa Apply dark glass style (bg-black/30) to navbar, left panel, mobile panel
All checks were successful
Build Docker Image / build (push) Successful in 3m13s
2026-01-23 12:30:28 +07:00
Ruslan Bakiev
9d46bab93f Fix nav height, view toggle transparency, dynamic map colors by view mode
All checks were successful
Build Docker Image / build (push) Successful in 3m24s
2026-01-23 12:17:40 +07:00
Ruslan Bakiev
999658aee1 UI: Glass effect everywhere, fix nav height, simplify quote form
All checks were successful
Build Docker Image / build (push) Successful in 3m9s
- Fixed nav height (h-20), logo and user menu aligned to top
- Quote form: removed colored circles, simple labels, search button inside pill
- Panels closer to nav (top-4 instead of top-20)
- Glass effect on all overlays (bg-base-100/70 backdrop-blur-md)
- Selection panel sticky headers with glass effect
2026-01-23 11:36:20 +07:00
Ruslan Bakiev
5258347ccb UI fixes: header height, map color, panel scroll
All checks were successful
Build Docker Image / build (push) Successful in 3m10s
- MainNavigation: fixed min-height to prevent jumping on mode switch
- CatalogMap: default pointColor changed from green to orange (#f97316)
- CatalogPage: panel scroll on entire container, not inner
- SelectionPanel: sticky header and search, removed inner scroll
2026-01-23 10:53:21 +07:00
Ruslan Bakiev
4c6f5abd78 UI fixes: identical headers, panel styling, view toggle icons, sync map view
All checks were successful
Build Docker Image / build (push) Successful in 3m20s
- Show mode toggle on all pages (not just catalog)
- Panel background base-300, top-20 spacing from navbar
- View toggle with colored icons in circles
- Sync mapViewMode when selecting (supplier chip -> suppliers view)
2026-01-23 10:25:33 +07:00
Ruslan Bakiev
7465b1d6a2 Move mode toggle to TopNav, view toggle to map right
All checks were successful
Build Docker Image / build (push) Successful in 3m32s
- Add [Explore/Quote] mode toggle to MainNavigation.vue (TopNav)
- Remove mode toggle from CatalogPage.vue (now in header)
- Move [Offers/Hubs/Suppliers] view toggle from top-left to top-right on map
- View toggle now visible in both modes (Explore and Quote)
- Simplify mobile layout to show only view toggle
2026-01-22 19:32:39 +07:00
Ruslan Bakiev
ddf691c83b Refactor catalog layout: mode toggle to top right, view toggle to top left
All checks were successful
Build Docker Image / build (push) Successful in 3m35s
- Move Explore/Quote mode toggle to top right corner
- Add view toggle (Offers/Hubs/Suppliers) to top left in Explore mode
- Panel shows only in Quote mode when showPanel prop is true
- Simplified panel slot structure
2026-01-22 19:20:11 +07:00
Ruslan Bakiev
850ab3f252 Add Explore/Quote dual mode to catalog page
All checks were successful
Build Docker Image / build (push) Successful in 3m52s
- Add CatalogMode type (explore/quote) to useCatalogSearch
- Create ExplorePanel component with view toggle (offers/hubs/suppliers)
- Create QuoteForm and QuotePanel components for search form
- Refactor CatalogPage to fullscreen map with overlay panel
- Simplify catalog/index.vue to use new components
- Add translations for modes and quote form (ru/en)

The catalog now has two modes:
- Explore: Browse map with offers/hubs/suppliers toggle
- Quote: Search form with product/hub/qty filters to find offers
2026-01-22 19:13:45 +07:00
Ruslan Bakiev
749f15131b Add map view toggle for fullWidthMap mode
All checks were successful
Build Docker Image / build (push) Successful in 3m25s
- Add MapViewMode type (offers/hubs/suppliers) with cookie storage
- Add view toggle button group on full-width map
- Update clusterNodeType and mapPointColor based on selected view
- Add translations for view options
2026-01-22 18:41:38 +07:00
Ruslan Bakiev
39f8364edb Improve catalog UX: remove category, add offers count, dynamic layout
All checks were successful
Build Docker Image / build (push) Successful in 3m37s
- ProductCard: remove category field, add offersCount display
- CatalogPage: add fullWidthMap prop for map-only view
- catalog/index: pass fullWidthMap based on selectMode
- i18n: add offers pluralization
2026-01-22 16:59:33 +07:00
Ruslan Bakiev
796204b3cd Add grid layout for catalog cards + hover shadow
All checks were successful
Build Docker Image / build (push) Successful in 4m8s
- CatalogPage: added gridColumns prop (1/2/3 columns)
- Card: added hover:shadow-lg on interactive cards
- Products, hubs, suppliers pages now use 3-column grid
- Offers remain full-width (gridColumns=1 default)
2026-01-22 08:54:31 +07:00
Ruslan Bakiev
1b0fae1164 Fix map click in server clustering mode when item not loaded
All checks were successful
Build Docker Image / build (push) Successful in 3m34s
When using server-side clustering, the clicked item's uuid might not be
in the paginated props.items array. Now emits a minimal object with just
uuid so parent pages can still navigate.
2026-01-21 14:40:38 +07:00
Ruslan Bakiev
43310f5c28 Enable server-side clustering on all catalog pages
All checks were successful
Build Docker Image / build (push) Successful in 4m37s
- Add clusterNodeType prop to CatalogPage
- Update useClusteredNodes to accept nodeType parameter
- Enable server clustering on /offers and /suppliers pages
- Add hoveredId sync on /offers page
- Remove hover:shadow-lg animation from Card
2026-01-16 17:32:59 +07:00
Ruslan Bakiev
7968a32fd4 Fix map layout: use sticky instead of fixed, add rounded corners and shadow
All checks were successful
Build Docker Image / build (push) Successful in 4m20s
2026-01-16 16:27:39 +07:00
Ruslan Bakiev
97f346ba83 Fix navigation background color: bg-base-100 → bg-base-200
All checks were successful
Build Docker Image / build (push) Successful in 4m10s
2026-01-15 13:03:16 +07:00
Ruslan Bakiev
43158924ab Fix smooth scroll animation and map positioning
All checks were successful
Build Docker Image / build (push) Successful in 4m4s
- Replace v-show with transform: translateY() for smooth header collapse animation
- Wrap MainNav + SubNav in fixed container with dynamic transform
- Remove sticky positioning from MainNavigation and SubNavigation
- Fix map to extend to screen edge (right-0, no rounded corners)
- Add dynamic padding-top to main for fixed header compensation
2026-01-15 12:51:00 +07:00
Ruslan Bakiev
b9f44ecaf4 Fix SearchBar height and remove padding gaps
All checks were successful
Build Docker Image / build (push) Successful in 4m24s
2026-01-15 12:15:48 +07:00
Ruslan Bakiev
ea7c0b460a Move expand button from separate bar to SearchBar area
All checks were successful
Build Docker Image / build (push) Successful in 4m4s
2026-01-15 11:55:41 +07:00
Ruslan Bakiev
46b1a17a23 Fix smooth scroll in CatalogPage - use pixel values from useScrollCollapse
All checks were successful
Build Docker Image / build (push) Successful in 4m3s
2026-01-15 11:47:56 +07:00
Ruslan Bakiev
e451267c36 Fix search bar top padding on catalog page
Some checks failed
Build Docker Image / build (push) Has been cancelled
2026-01-15 10:04:45 +07:00
Ruslan Bakiev
9d0b1a6b15 feat: collapsible header on scroll for catalog pages
All checks were successful
Build Docker Image / build (push) Successful in 4m24s
- Add useScrollCollapse composable to track scroll and collapse state
- Update topnav.vue to show collapsed bar with chevron when scrolled
- Add collapse button (chevron up) to SubNavigation
- Make SubNavigation sticky below MainNavigation
- Update CatalogPage map/searchbar positions based on header state
2026-01-14 21:34:06 +07:00
Ruslan Bakiev
25da16f854 Make search bar sticky third navigation bar
All checks were successful
Build Docker Image / build (push) Successful in 5m17s
- Add sticky positioning with proper styling (bg, border-b)
- Use negative margins to span full width like nav bars
- Update map offset to account for 3 bars (11rem with search bar)
2026-01-14 13:06:30 +07:00
Ruslan Bakiev
7bd5000dc4 Fix map positioning when search bar is present
All checks were successful
Build Docker Image / build (push) Successful in 5m13s
Use dynamic mapTopClass/mapHeightClass based on searchBar slot:
- With searchBar: top-44 (176px), height calc(100vh-12rem)
- Without searchBar: top-32 (128px), height calc(100vh-9rem)
2026-01-14 12:50:57 +07:00
Ruslan Bakiev
134b8a5eb4 Add CatalogSearchBar component with filter badges
All checks were successful
Build Docker Image / build (push) Successful in 5m8s
- Create CatalogSearchBar.vue with search input, filter badges (× to remove), filter dropdown, counter, sort dropdown
- Integrate searchBar slot into CatalogPage with displayedCount and totalCount
- Update hubs page to use CatalogSearchBar with transport type and country filters
- Add translations for search bar in common.json
- Add transport/country filter labels in catalogHubsSection.json
2026-01-14 12:31:38 +07:00
Ruslan Bakiev
a493d2cf01 Add map improvements: hover highlight, fitBounds, search checkbox
All checks were successful
Build Docker Image / build (push) Successful in 5m45s
2026-01-14 12:09:15 +07:00
Ruslan Bakiev
c458f851dc Fix map clusters: use Apollo client, remove flyTo on hover
All checks were successful
Build Docker Image / build (push) Successful in 4m48s
2026-01-14 11:50:39 +07:00
Ruslan Bakiev
46f8e97ee9 feat: add server-side clustering to CatalogPage for hubs
All checks were successful
Build Docker Image / build (push) Successful in 5m8s
2026-01-14 11:16:26 +07:00
Ruslan Bakiev
b75459c8be fix: remove separate /map pages, add hover highlight to CatalogPage
All checks were successful
Build Docker Image / build (push) Successful in 4m48s
- Delete hubs/map.vue, offers/map.vue, suppliers/map.vue
- Pass hoveredId to CatalogMap for marker highlighting
- Split view on main pages (like Airbnb) is the correct approach
2026-01-14 10:46:04 +07:00
Ruslan Bakiev
01e8eb2cfa fix: separate list items from map points in orders page
All checks were successful
Build Docker Image / build (push) Successful in 4m58s
- Add mapItems prop to CatalogPage for separate map data
- List shows one card per order, map shows source+dest points
- Fix hover to match by orderUuid pattern
2026-01-08 14:52:58 +07:00
Ruslan Bakiev
13f60bd022 feat: show transport type on routes + unify map height
All checks were successful
Build Docker Image / build (push) Successful in 4m33s
- Add transportType display (🚂 ЖД / 🚛 Авто) in RouteStagesList
- Pass transportType from CalcResultContent to RouteStagesList
- Unify map height in CatalogPage for orders/addresses pages
2026-01-08 14:22:37 +07:00
Ruslan Bakiev
34c7404a42 Refactor navigation and fix UI issues
All checks were successful
Build Docker Image / build (push) Successful in 4m13s
- Add py-4 to main layout for detail page padding
- Show search widget only on main page (not all catalog pages)
- Add 4 menu items: Search, Catalog, Orders, Seller
- Fix orders page click to navigate to order detail
- Update CatalogPage map positioning for new nav structure
- Add search translation to cabinetNav i18n files
2026-01-08 13:26:23 +07:00
Ruslan Bakiev
675ccc2064 Add hasSubNav prop for map positioning (3 vs 2 nav levels)
All checks were successful
Build Docker Image / build (push) Successful in 3m58s
2026-01-08 13:11:13 +07:00
Ruslan Bakiev
53904ead05 Fix: offers map coords, map position, orders filter, select-location layout
All checks were successful
Build Docker Image / build (push) Successful in 3m38s
2026-01-08 13:01:54 +07:00
Ruslan Bakiev
8d1b7c6dc7 Unify CatalogPage: fixed map, hover support, delete ListMapLayout
All checks were successful
Build Docker Image / build (push) Successful in 4m31s
2026-01-08 11:15:54 +07:00
Ruslan Bakiev
b8de322dd2 Unify layouts and create CatalogPage component
All checks were successful
Build Docker Image / build (push) Successful in 3m45s
- MainNavigation: center tabs on page (absolute positioning)
- SubNavigation: align left instead of center
- Create CatalogPage universal component for list+map pages
- Migrate catalog pages (offers, suppliers, hubs) to CatalogPage
- Remove PageHeader from clientarea pages (redundant with navigation)
- Add topnav layout to supplier detail page

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 09:38:53 +07:00