Commit Graph

64 Commits

Author SHA1 Message Date
Ruslan Bakiev
28eff7c323 feat(catalog): pad map fit and graph hubs filter
All checks were successful
Build Docker Image / build (push) Successful in 5m4s
2026-02-07 10:18:07 +07:00
Ruslan Bakiev
1fa4a707ad fix(catalog): remove full-screen loading flash
Some checks failed
Build Docker Image / build (push) Has been cancelled
2026-02-07 09:50:41 +07:00
Ruslan Bakiev
f85b1504e2 fix(ui): adjust search checkbox and round toggles
All checks were successful
Build Docker Image / build (push) Successful in 4m52s
2026-02-07 09:41:58 +07:00
Ruslan Bakiev
755a92d194 feat(catalog): filter map clusters by chips
All checks were successful
Build Docker Image / build (push) Successful in 5m1s
2026-02-07 08:35:22 +07:00
Ruslan Bakiev
aa7790f45e feat(catalog): focus map during quote search
All checks were successful
Build Docker Image / build (push) Successful in 4m47s
2026-02-06 20:07:43 +07:00
Ruslan Bakiev
eb31b8299b Refine glass UI capsules and hub card
All checks were successful
Build Docker Image / build (push) Successful in 4m43s
2026-02-06 16:28:00 +07:00
Ruslan Bakiev
a3e7c92915 Clear inactive clusters on view switch
All checks were successful
Build Docker Image / build (push) Successful in 4m27s
2026-02-06 14:06:37 +07:00
Ruslan Bakiev
1e761ca2a8 Drive map markers by data, not visibility
All checks were successful
Build Docker Image / build (push) Successful in 5m20s
2026-02-06 11:23:56 +07:00
Ruslan Bakiev
4bdefc9ce9 Render map points by entity type
Some checks failed
Build Docker Image / build (push) Has been cancelled
2026-02-06 11:19:48 +07:00
Ruslan Bakiev
984daa7a84 refactor(clientarea): use CatalogPage with #panel slot for orders/addresses
All checks were successful
Build Docker Image / build (push) Successful in 4m21s
- Add panelWidth and hideViewToggle props to CatalogPage
- Update orders page to use CatalogPage with narrow panel (w-50)
- Update addresses page to use CatalogPage with narrow panel (w-50)
- Remove unused ClientAreaMapPage component
2026-01-28 09:19:01 +07:00
Ruslan Bakiev
f269c0daf0 Fix camera jumping when opening InfoPanel
All checks were successful
Build Docker Image / build (push) Successful in 4m17s
Replace setTimeout/debounce with event-based approach:
- Add isInfoLoading computed that tracks all info loading states
- Pass infoLoading prop through CatalogPage to CatalogMap
- Watch infoLoading transition from true->false to trigger fitBounds
- Remove setTimeout hack in favor of proper loading state detection
2026-01-27 12:25:15 +07:00
Ruslan Bakiev
ff34c564e1 Fix InfoPanel map: hide toggle, show current entity, auto-center
All checks were successful
Build Docker Image / build (push) Successful in 4m18s
- Hide view mode toggle (offers/hubs/suppliers) when in InfoPanel mode
- Add current entity to relatedPoints so it's visible on the map
- Auto-fit map bounds to show all points (current + related) in InfoPanel mode
2026-01-27 11:25:57 +07:00
Ruslan Bakiev
20e0e73c58 refactor: remove any types and fix TypeScript errors
All checks were successful
Build Docker Image / build (push) Successful in 3m59s
- Export InfoProductItem, InfoHubItem, InfoSupplierItem, InfoOfferItem types
- Update InfoEntity interface to have explicit fields (no index signature)
- Export CatalogHubItem, CatalogNearestHubItem from useCatalogHubs
- Fix MapItem interfaces to accept nullable GraphQL types
- Fix v-for :key bindings to handle null uuid
- Add null guards in select-location pages
- Update HubCard to accept nullable transportTypes
- Add shims.d.ts for missing module declarations
2026-01-27 10:35:14 +07:00
Ruslan Bakiev
c6abf8ad4a fix(catalog): hide filter checkbox in info mode + color related points by type
All checks were successful
Build Docker Image / build (push) Successful in 3m48s
2026-01-26 21:21:19 +07:00
Ruslan Bakiev
33c1559ab7 fix(catalog): hide clusters when InfoPanel is open, show only related points
All checks were successful
Build Docker Image / build (push) Successful in 3m51s
2026-01-26 20:47:05 +07:00
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