gnezim
e694ccf42b
ScheduleFlightBody "Купить" button: wire onBuy → Aeroflot booking URL
...
DayGroupedFlightList gains an optional `onBuy` prop that forwards to
ScheduleFlightBody. ScheduleSearchPage implements handleBuy — matches
BoardDetailsHeader.BuyTicketButton: opens
`aeroflot.ru/sb/app/{lang}-{lang}#/search?routes={dep}.{yyyyMMdd}.{arr}`
in a new tab, using the first leg's airportCode + scheduled-departure
UTC for direct and multi-leg flights.
Previously the Buy button rendered but its click was `onBuy?.()` with
no handler wired, so nothing happened. The button text + wiring now
mirror Angular's `buy-ticket-button.component`.
2026-04-20 16:51:06 +03:00
gnezim
4e8934f0c9
OnlineBoardDetailsPage cancelled bar: derive light red from $red token (#fbd4d4 → rgba($red, 0.2))
2026-04-20 16:38:25 +03:00
gnezim
bb49a5d609
Fix Schedule "Details" button + search-history sync
...
Schedule:
- ScheduleSearchPage wires handleFlightClick to DayGroupedFlightList so
the "Детали рейса" button in the expanded flight body navigates to
/{lang}/schedule/{carrier}{flightNumber}-{yyyyMMdd} (Angular's
ScheduleNavigationService.toDetailsPage equivalent). Previously the
Details button fired onStatus → no handler → no-op.
Search history:
- useSearchHistory now broadcasts a custom `afl:search-history-changed`
window event on add/clear and listens for it in a useEffect. Fixes
the case where a route-level component (ScheduleSearchPage) adds to
storage while a sibling SearchHistory sidebar had already captured
an empty initial value via useState — the sidebar now re-reads
storage and shows the history without a page reload.
2026-04-20 16:34:52 +03:00
gnezim
d44f97d312
OnlineBoardSearchPage retry button: $blue-light fill + $blue-light--hover (brand button parity)
2026-04-20 16:22:03 +03:00
gnezim
3806e8371a
ScheduleSearchPage direction-switch: $space-xl margin + bottom border (Angular .schedule-home-page-header parity)
2026-04-20 16:18:37 +03:00
gnezim
40c3ed62fa
OperatorLogo: add round-variant paths for 12 missing carriers (RO/DP/OM/KL/AY/DL/OK/JU/UX/BT/AM/AR)
2026-04-20 15:56:51 +03:00
gnezim
67bf78d22e
BoardDetailsHeader actions: transparent button hover uses $blue-extra-light (brand palette)
2026-04-20 15:51:46 +03:00
gnezim
ea25f5c017
Replace 4 rgba(46,87,255,0.04/0.06/0.08) hover tints with $blue-extra-light / $blue-icon (brand palette)
2026-04-20 15:50:30 +03:00
gnezim
d063281b09
ScheduleFlightBody share-btn: hover uses $blue-icon (Angular share-button parity)
2026-04-20 15:48:13 +03:00
gnezim
aecf06c829
TimeGroup day-change: render as chip with blue-icon border + blue-light text (Angular day-change-square parity)
2026-04-20 15:46:50 +03:00
gnezim
3f04ade411
CityPickerPopup: #ffffff → colors.$white (brand palette parity)
2026-04-20 15:44:24 +03:00
gnezim
f823aafb35
FlightCard/FlightDetailsAccordion: #8a8a8a → $light-gray (brand palette parity)
2026-04-20 15:28:15 +03:00
gnezim
23b5a35c70
DayTabs: mobile breakpoint 768px→640px, non-standard 8px radius→vars.$border-radius (Angular parity)
CI / ci (push) Failing after 51s
Deploy / build-and-deploy (push) Failing after 6s
2026-04-20 15:25:03 +03:00
gnezim
ae133c1e36
useAppSettings: align fallback defaults to Angular AppSettings (1/7 board, 1/330 schedule, 2h flight status)
2026-04-20 15:21:52 +03:00
gnezim
15f3356a75
ScheduleSearchPage: add Angular page-footer-notes to results frame
2026-04-20 15:17:34 +03:00
gnezim
81d979aa34
OnlineBoardSearchPage footer: render Angular page-footer-notes DOM + styling (blue-extra-light card, sort-note *)
2026-04-20 15:15:12 +03:00
gnezim
71b836ec7b
FlightsMapFilter exchange button: 35x40 pill with +/-10px margin overlap (Angular .button-change parity)
2026-04-20 14:37:03 +03:00
gnezim
0665799555
FlightsMap loader: overlay + 60×60 ring with plane glyph (Angular loader-sheet parity)
2026-04-20 14:33:23 +03:00
gnezim
e66661cee9
FlightsMap: no-directions overlay mirrors Angular no-directions-sheet (translucent bg + white card)
2026-04-20 14:28:21 +03:00
gnezim
daf3ed35a5
FlightStatus label colors: match icon palette (green for in-flight/arrived, orange for delayed)
2026-04-20 14:24:04 +03:00
gnezim
3c869198d6
FlightStatus icon colors: use brand palette (Angular statusColors parity)
2026-04-20 14:22:29 +03:00
gnezim
6947e07fd1
FlightsMiniList selected: blue-light border (Angular parity, not blue)
2026-04-20 14:07:42 +03:00
gnezim
c91fec16c2
FlightSchedule days strip: filled -color pills (Angular .days .day parity)
2026-04-20 14:00:33 +03:00
gnezim
b4aea2a6fd
FlightList: empty state matches Angular page-empty-list (icon + title + text, desktop/mobile layouts)
2026-04-20 13:56:54 +03:00
gnezim
d7a9ae5d79
FlightCard schedule grid: match Angular schedule-list-flight-header (80px number, minmax(45,240)px stations)
2026-04-20 13:52:59 +03:00
gnezim
3e0b19f633
FlightDetailsAccordion: 1.3px dotted divider between tabs (Angular parity)
2026-04-20 13:32:20 +03:00
gnezim
21a557b875
ScheduleFilter: search button uses Angular blue-light 48px pill styling (Angular parity)
2026-04-20 13:28:30 +03:00
gnezim
e4c8948cdc
ScheduleFilter: add return-flight date range + time slider when round-trip (Angular parity)
2026-04-20 13:26:35 +03:00
gnezim
9134a830da
ScheduleStartPage: add validation-tooltip SCSS for same-cities error
2026-04-20 13:23:08 +03:00
gnezim
d44eb2fe71
ScheduleStartPage: add departure===arrival same-cities validation (Angular parity)
2026-04-20 13:21:51 +03:00
gnezim
02c6003225
ScheduleStartPage: Calendar min/max ±1/+330 days, return dates as single range picker (Angular parity)
2026-04-20 13:20:29 +03:00
gnezim
922e41e5c9
ScheduleStartPage: use shared CityAutocomplete (adds clear button + regional picker parity)
2026-04-20 13:18:29 +03:00
gnezim
c28cfc2fd3
ScrollUpButton: 40×40, extra-blue bg, right: 30px / bottom: 80px (Angular parity)
2026-04-20 13:03:23 +03:00
gnezim
0e74d9d196
FlightCard schedule mode + DayGroupedFlightList headers: number column 80→60px (Angular parity)
2026-04-20 13:00:51 +03:00
gnezim
a4e99fee64
FlightCard: row grid [60px|120px|100px|1fr|85-145px|120px|1fr|10px] + padding 15px/20px (Angular parity)
2026-04-20 12:59:28 +03:00
gnezim
b306127cfc
Breadcrumbs: middle-crumb links in solid white, only last crumb faded (Angular parity)
2026-04-20 12:55:41 +03:00
gnezim
a361eeb7a5
ScheduleSearchPage: direction-switch exact Angular styles (130×40, extra-blue segmented)
2026-04-20 12:53:39 +03:00
gnezim
85deac7b54
ScheduleStartPage: bottom-description matches Angular's plain styling (no gray text, no link restyle)
2026-04-20 12:51:48 +03:00
gnezim
3d29c93eb6
DayGroupedFlightList: day header padding 12px 18px → 20px (Angular parity)
2026-04-20 12:50:11 +03:00
gnezim
5afebecfe7
FlightsMapFilter: add Angular's 'ROUTE' header above departure/arrival inputs
2026-04-20 12:48:35 +03:00
gnezim
b7a358dadc
CityAutocomplete item: 48px row height + bottom divider (Angular parity)
2026-04-20 12:42:04 +03:00
gnezim
e8453ba66c
FlightsMapFilter: resize toggle switch to 42×24 with 20px thumb (Angular parity)
2026-04-20 12:40:43 +03:00
gnezim
13926314d0
ScheduleFilter: add validation-tooltip SCSS style for inline errors
2026-04-20 12:36:16 +03:00
gnezim
fc27e6c476
ScheduleFilter: validate departure===arrival mismatch with inline error (Angular parity)
2026-04-20 12:34:59 +03:00
gnezim
2434bd702b
OnlineBoardFilter: validate departure===arrival mismatch with inline error (Angular parity)
2026-04-20 12:33:21 +03:00
gnezim
3a3a7cda5f
DayGroupedFlightList: auto-expand first flight of today's group (Angular expandDefaultFlight parity)
2026-04-20 12:31:15 +03:00
gnezim
45a8023b68
OnlineBoardFilter: seed time range from URL params (Angular parity)
2026-04-20 12:28:02 +03:00
gnezim
c456de9f9f
OnlineBoardFilter: wire time range slider to route-search URL (Angular parity)
2026-04-20 12:26:29 +03:00
gnezim
6d87521634
ScheduleFilter: constrain Calendar to ±1/+330 day window (Angular scheduleMin/MaxDate parity)
2026-04-20 12:24:57 +03:00
gnezim
001b3f993d
OnlineBoardFilter: constrain Calendar to ±1/+7 day window (Angular boardMin/MaxDate parity)
2026-04-20 12:23:23 +03:00