Commit Graph

16 Commits

Author SHA1 Message Date
gnezim a1089e07dd Port Angular time-range slider styling to the filter sidebars
Angular's `page-time-selector.scss` paints the whole filter slider in
brand blues — pale $blue-light2 track, solid $blue-light range, and
solid $blue-light thumbs with a 2px white ring — and thickens the
horizontal track from PrimeReact's 4px default to 6px. React carried
the stock gray/white PrimeReact theme, which read as a dead, low-
contrast control next to the blue chevrons and calendar icon.

Add the same overrides scoped under `.wrapper--time-selector` so both
OnlineBoard and Schedule (the two sidebars that render the range
slider) pick them up.
2026-04-22 12:13:43 +03:00
gnezim aad94636c7 Use Angular's outlined calendar SVG in the datepicker trigger
PrimeReact ships a solid filled-calendar glyph; Angular's filter calendar
uses a thinner outlined glyph with six "row" tiles drawn in the brand
blue (#418fde). Replace the default icon by hiding PrimeReact's <svg> +
painting `/assets/img/calendar.svg` as a background on
.p-datepicker-trigger, scoped to the three filter-sidebar roots.

Consolidate the per-page .p-datepicker-trigger styling — the three
filter SCSS files each carried their own background/border/color
overrides that kept drifting. Now only the width override lives per
page, everything else is shared in styles/_prime-calendar.scss.
2026-04-22 12:01:21 +03:00
gnezim 1d3f0efc5f Align filter-sidebar label + datepicker styling across all 3 pages
OnlineBoard, Schedule and FlightsMap filter sidebars drifted visually:
ScheduleFilter used $light-gray + 4px gutter for .label--filter while the
other two used $gray + $label-margin-bottom (10px). CityAutocomplete's own
__label also defaulted to $light-gray, making city labels a different tone
from the date/time labels alongside them.

Angular's canonical is $gray + $label-margin-bottom everywhere on the
filter sidebar — align both rules to that.

Also fix the datepicker's internal seam: PrimeReact's p-calendar-w-btn
put the 1px border on the input, leaving the trigger icon visibly outside
the bordered area. Angular renders the whole control as a single pill.
Promote the border to the outer .p-calendar wrapper and strip the inner
input's border + shadow, scoped to the three filter-panel roots.
2026-04-22 11:28:56 +03:00
gnezim 678cde3ed2 Fix city-input + date-picker styling + remove extra Schedule section
Live-report issues (user-driven smoke test):

1. Schedule city input shown with a thick default PrimeReact border
   (no such border on Board). Root cause: CityAutocomplete's outer
   wrapper carries the border via box-shadow, but the inner .p-inputtext
   still had PrimeReact's 'border: 1px solid #a6a6a6' from the shared
   prime-styles.scss. Angular silences it with a global 'city-autocomplete
   input.p-inputtext { border: none; box-shadow: none }' rule. Added
   the same reset to our shared CityAutocomplete.scss + killed the
   PrimeReact focus shadow so only one border remains.

2. Clear-X button hidden on Board + Map (visible only on Schedule).
   Root cause: a legacy Angular-port rule in _layout.scss
   '.p-accordion .p-accordion-content button.button-clear { display: none }'
   beat our '.city-autocomplete__input--has-value .button-clear { display: block }'
   on specificity — Board's CityAutocomplete sits inside the accordion
   filter. Removed the legacy rule (it targeted an Angular-only close
   affordance that doesn't exist in the React app); if we re-add such
   an element later it'll need a distinct class.

3. Date-picker placeholder 'ДД.ММ.ГГГГ - ДД.ММ.ГГГГ' truncated because
   the ScheduleStartPage inherits 16px font. Stepped calendar font down
   to 14px (matches Angular's base body .p-inputtext) + added right
   padding so the trigger icon doesn't sit on top of the placeholder.

4. Schedule start page showed a 'Возможности расписания' info section
   (TZ Table 9 Title5+Title6) that the Angular reference
   (ClientApp/.../schedule-start-page.component.html) has commented out.
   Followed Angular — removed the block. Kept i18n keys for future work.
   Updated the two corresponding assertion tests to check the block is
   NOT rendered (parity with Angular).

Also during the same session, there was a sub-bug introduced in the
first SCSS edit (I accidentally nested .button-clear inside
:focus-within, inverting display state). Fixed by moving the rule back
under __input directly.

2044 unit tests pass, typecheck clean. Live retest across all three
sections (Board / Schedule / Map): X appears only when city is filled,
inner input shows single clean border, Schedule calendar placeholder
fits, 'Возможности расписания' no longer renders.
2026-04-22 03:53:11 +03:00
gnezim b43c341fcb Add "Уточняется" fallback helper + orange styling per TZ 4.1.23 2026-04-21 23:49:10 +03:00
gnezim b54111ef28 Replace 'white' with $white token + drop 0px units in _buttons.scss 2026-04-20 21:10:21 +03:00
gnezim 81a6a296fd Drop redundant 'px' on zero-value paddings (CSS lint cleanup) 2026-04-20 21:04:09 +03:00
gnezim abe32c16d5 Use $font-medium token for .embolded class (vs literal 500) 2026-04-20 20:18:30 +03:00
gnezim 0e9191be05 Match Angular PageLayout: 24px tablet padding, single title wrapper 2026-04-20 02:07:51 +03:00
gnezim cd398fb8d9 Hide redundant 'Operated by' text on details page
The badge already conveys the operating carrier via the airline logo
(e.g. РОССИЯ for FV-operated Aeroflot flights), and code-share flights
get an additional 'KL 123, AF 456...' line below the flight number
from DetailsHeaderBadge. The separate 'Выполняет рейс: FV' line
duplicated that information.

Keep the div in the DOM with a visually-hidden class so tests that
target the data-testid still find it. Also add the .visually-hidden
utility class to layout.scss.

Test updated to assert the slot still exists but is hidden.
2026-04-18 13:53:13 +03:00
gnezim 7ec76486ec Clean up build warnings: MF DTS, autoprefixer color-adjust, dev CORS
Three non-fatal warnings surfaced by the Jenkins build log, fixed in
the config layer:

- module-federation.config.ts: dts: false. The @module-federation/
  dts-plugin fails under our strict tsconfig and logs TYPE-001 every
  build. Remote types are not needed at runtime; consumers generate
  their own via their dev toolchain.

- src/styles/_layout.scss: color-adjust → print-color-adjust. The
  unprefixed color-adjust shorthand is deprecated; the standard name
  is print-color-adjust. Matches the -webkit- prefixed sibling.

- modern.config.ts: tools.devServer.headers explicitly set. MF warns
  when devServer.headers is empty and auto-assigns '*'. Providing an
  explicit allowlist silences the banner in dev builds; production
  behavior is unaffected (real reverse proxy manages CORS).
2026-04-17 18:11:04 +03:00
gnezim d9bcccc1c5 Fix all e2e failures, sass warnings, and HMR websocket errors
CI / ci (push) Failing after 38s
Deploy / build-and-deploy (push) Failing after 6s
- Restructure OnlineBoardFilter to use radio tabs (flight/departure/
  arrival/route) with dynamic fields matching e2e test expectations
- Fix error page e2e tests to use client-side navigation (SSR renders
  empty outside [lang]/layout) and use specific CSS class locators
- Replace deprecated transparentize() with rgba() in _shadows.scss
- Handle WebSocket upgrades explicitly in dev-server to prevent HMR
  reconnection spam
- Resolve DEP0190 by spawning modern binary directly without shell
- Add tests/e2e-angular to tsconfig excludes
2026-04-16 00:23:10 +03:00
gnezim 64321f8150 Fix font-faces and asset paths for SCSS
Replace Google Fonts CDN import with self-hosted @font-face declarations
from the Angular app, pointing to /assets/fonts/*.woff2 in public/.
Configure rspack css-loader to skip url() resolution so the browser
fetches assets from the dev server's public/ directory at runtime.
2026-04-15 17:40:11 +03:00
gnezim ae7131922f Wire global styles into React root layout
Imports index.scss, primereact.min.css, and primeicons.css in the
root layout so all global styles apply across the entire app.
2026-04-15 17:32:07 +03:00
gnezim 4d5fd14ba8 Port PrimeNG theme overrides for PrimeReact
5511-line PrimeNG theme adapted for PrimeReact: Angular element
selectors replaced with class selectors, ng-dirty/ng-invalid
validation patterns replaced with PrimeReact's .p-invalid class.
Calendar component styles ported with updated asset paths.
2026-04-15 17:31:00 +03:00
gnezim 4c2b5c4bd1 Port global SCSS framework from Angular to React
Ports variables, colors, fonts, layout, mixins, shadows, screen
breakpoints, reset, icons, buttons, common, and overrides. Replaces
Angular-specific constructs (::ng-deep, :host, element selectors)
with React-compatible equivalents. Uses Google Fonts CDN for Roboto.
2026-04-15 17:29:17 +03:00