Task 10: Create test helper files and base test templates

- Create helpers directory structure
- Add api-helpers.ts with authentication and API mocking functions
- Add ui-helpers.ts with common UI interaction utilities
- Add data-helpers.ts with test data generators
- Create base.spec.ts as reusable test template
- Update support/index.ts to import and expose helper modules globally
This commit is contained in:
gnezim
2026-04-05 19:19:49 +03:00
parent 8d562dd55c
commit 9356945d93
125 changed files with 3921 additions and 105 deletions
@@ -0,0 +1,87 @@
.button {
min-height: 35px;
cursor: pointer;
transition-duration: 0.2s;
border: none;
border-radius: 4px;
font-weight: 500;
padding: 0 15px;
// Size variants
&--small {
min-height: 28px;
font-size: 12px;
padding: 0 12px;
}
&--medium {
min-height: 35px;
font-size: 14px;
padding: 0 15px;
}
&--large {
min-height: 42px;
font-size: 16px;
padding: 0 18px;
}
// Color variants
&--primary {
background-color: #0099ff;
color: white;
&:hover:not(:disabled) {
background-color: #0080d9;
}
&:disabled {
background-color: #b3d9ff;
cursor: not-allowed;
}
}
&--secondary {
background-color: white;
color: #666666;
border: 1.3px solid #e0e0e0;
&:hover:not(:disabled) {
background-color: #f5f5f5;
border-color: #b3d9ff;
}
&:disabled {
background-color: #f9f9f9;
color: #cccccc;
cursor: not-allowed;
}
}
&--tertiary {
background-color: transparent;
color: #0099ff;
border: 1px solid transparent;
&:hover:not(:disabled) {
background-color: transparent;
border-color: #e0e0e0;
}
&:disabled {
color: #b3d9ff;
cursor: not-allowed;
}
}
// Loading state
&__loader {
display: inline-block;
margin-right: 8px;
}
// Disabled state
&:disabled {
cursor: not-allowed;
}
}
@@ -0,0 +1,34 @@
import React from 'react'
import './button.scss'
export interface ButtonProps
extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'data-testid'> {
variant?: 'primary' | 'secondary' | 'tertiary'
size?: 'small' | 'medium' | 'large'
disabled?: boolean
loading?: boolean
children: React.ReactNode
'data-testid'?: string
}
export const Button: React.FC<ButtonProps> = ({
variant = 'primary',
size = 'medium',
disabled = false,
loading = false,
className = '',
...props
}) => {
const { 'data-testid': dataTestId = 'button', ...buttonProps } = props as any
return (
<button
className={`button button--${variant} button--${size} ${className}`.trim()}
disabled={disabled || loading}
data-testid={dataTestId}
{...buttonProps}
>
{loading ? <span className="button__loader">Loading...</span> : props.children}
</button>
)
}
@@ -0,0 +1,2 @@
export { Button } from './button'
export type { ButtonProps } from './button'
+1 -1
View File
@@ -59,7 +59,7 @@ a {
border: 1.3px solid $border-blue !important;
height: $medium-button-height;
border-radius: 0 $border-radius $border-radius 0;
background-image: url('~src/assets/img/arr-down.svg');
background-image: url('../assets/img/arr-down.svg');
background-position: center center;
background-repeat: no-repeat;
margin-left: -1px;
+5 -5
View File
@@ -31,19 +31,19 @@
}
.svg--share {
background-image: url('~src/assets/img/share.svg');
background-image: url('../assets/img/share.svg');
}
.svg--print {
background-image: url('~src/assets/img/print.svg');
background-image: url('../assets/img/print.svg');
}
.svg--pin {
background-image: url('~src/assets/img/pin-24.svg');
background-image: url('../assets/img/pin-24.svg');
}
.svg--expand {
background-image: url('~src/assets/img/expand.svg');
background-image: url('../assets/img/expand.svg');
}
svg {
@@ -65,7 +65,7 @@ svg {
}
.svg--calendar {
background-image: url('~src/assets/img/calendar.svg');
background-image: url('../assets/img/calendar.svg');
}
.svg--arrow {
+10 -10
View File
@@ -37,7 +37,7 @@ html {
body {
background-color: $blue-dark !important;
background-image: url('~src/assets/img/background.jpg');
background-image: url('../assets/img/background.jpg');
background-repeat: no-repeat;
background-size: 100%;
@@ -206,7 +206,7 @@ p-checkbox {
@include control-border-shadow();
background-position: center center;
background-repeat: no-repeat;
background-image: url('~src/assets/img/check.svg');
background-image: url('../assets/img/check.svg');
background-size: 0 auto;
&.p-highlight {
@@ -278,23 +278,23 @@ body {
}
&.facebook {
background-image: url('~src/assets/img/share/facebook.svg');
background-image: url('../assets/img/share/facebook.svg');
}
&.vk {
background-image: url('~src/assets/img/share/vk.svg');
background-image: url('../assets/img/share/vk.svg');
}
&.twitter {
background-image: url('~src/assets/img/share/twitter.svg');
background-image: url('../assets/img/share/twitter.svg');
}
&.copy {
background-image: url('~src/assets/img/share/copy.svg');
background-image: url('../assets/img/share/copy.svg');
}
&.weibo {
background-image: url('~src/assets/img/share/weibo.svg');
background-image: url('../assets/img/share/weibo.svg');
background-size: 29px;
}
}
@@ -315,7 +315,7 @@ p-accordion .p-accordion-content button.button-clear {
background: linear-gradient(270deg, rgba(255, 255, 255, 1) 80%, rgba(255, 255, 255, 0) 100%);
.p-button-label {
background-image: url('~src/assets/img/close.svg');
background-image: url('../assets/img/close.svg');
background-repeat: no-repeat;
background-size: 10px 10px;
height: 100%;
@@ -374,5 +374,5 @@ p-accordion .p-accordion-content button.button-clear {
height: 25px;
}
@import '~src/styles/pages/adaptive/layout-adaptive';
@import '~src/styles/_layout-print';
@import './pages/adaptive/layout-adaptive';
@import './_layout-print';
+56 -56
View File
@@ -35,161 +35,161 @@ $width-base: 120px;
&--SU {
@include scale($width-base, 0.258);
background-image: url('~src/assets/img/airlines-logo/aeroflot/large/en.png') !important;
background-image: url('../assets/img/airlines-logo/aeroflot/large/en.png') !important;
&.ru {
background-image: url('~src/assets/img/airlines-logo/aeroflot/large/ru.png') !important;
background-image: url('../assets/img/airlines-logo/aeroflot/large/ru.png') !important;
}
&.round {
background-image: url('~src/assets/img/airlines-logo/aeroflot/round.png') !important;
background-image: url('../assets/img/airlines-logo/aeroflot/round.png') !important;
}
}
&--HZ {
@include scale(80px, 0.5556);
background-image: url('~src/assets/img/airlines-logo/aurora/large/en.svg') !important;
background-image: url('../assets/img/airlines-logo/aurora/large/en.svg') !important;
&.ru {
background-image: url('~src/assets/img/airlines-logo/aurora/large/ru.svg') !important;
background-image: url('../assets/img/airlines-logo/aurora/large/ru.svg') !important;
}
&.round {
background-image: url('~src/assets/img/airlines-logo/aurora/round.png') !important;
background-image: url('../assets/img/airlines-logo/aurora/round.png') !important;
}
}
&--F7 {
@include scale($width-base, 0.258);
background-image: url('~src/assets/img/airlines-logo/aeroflot/large/en.png') !important;
background-image: url('../assets/img/airlines-logo/aeroflot/large/en.png') !important;
&.ru {
background-image: url('~src/assets/img/airlines-logo/aeroflot/large/ru.png') !important;
background-image: url('../assets/img/airlines-logo/aeroflot/large/ru.png') !important;
}
&.round {
background-image: url('~src/assets/img/airlines-logo/aeroflot/round.png') !important;
background-image: url('../assets/img/airlines-logo/aeroflot/round.png') !important;
}
}
&--FV {
@include scale(90px, 0.1667);
background-image: url('~src/assets/img/airlines-logo/rossiya/large/en.svg') !important;
background-image: url('../assets/img/airlines-logo/rossiya/large/en.svg') !important;
&.ru {
background-image: url('~src/assets/img/airlines-logo/rossiya/large/ru.svg') !important;
background-image: url('../assets/img/airlines-logo/rossiya/large/ru.svg') !important;
}
&.round {
background-image: url('~src/assets/img/airlines-logo/rossiya/round.png') !important;
background-image: url('../assets/img/airlines-logo/rossiya/round.png') !important;
}
}
&--RO {
@include scale($width-base, 0.3334);
background-image: url('~src/assets/img/airlines-logo/tarom/large.png') !important;
background-image: url('../assets/img/airlines-logo/tarom/large.png') !important;
&.round {
background-image: url('~src/assets/img/airlines-logo/tarom/round.svg') !important;
background-image: url('../assets/img/airlines-logo/tarom/round.svg') !important;
}
}
&--DP {
@include scale($width-base, 0.1889);
background-image: url('~src/assets/img/airlines-logo/pobeda/large.svg') !important;
background-image: url('../assets/img/airlines-logo/pobeda/large.svg') !important;
&.round {
background-image: url('~src/assets/img/airlines-logo/pobeda/round.png') !important;
background-image: url('../assets/img/airlines-logo/pobeda/round.png') !important;
}
}
&--OM {
background-image: url('~src/assets/img/airlines-logo/miat/large.svg') !important;
background-image: url('../assets/img/airlines-logo/miat/large.svg') !important;
&.round {
background-image: url('~src/assets/img/airlines-logo/miat/round.svg') !important;
background-image: url('../assets/img/airlines-logo/miat/round.svg') !important;
}
}
&--KL {
@include scale($width-base, 0.4444);
background-image: url('~src/assets/img/airlines-logo/klm/large.png') !important;
background-image: url('../assets/img/airlines-logo/klm/large.png') !important;
&.round {
background-image: url('~src/assets/img/airlines-logo/klm/round.png') !important;
background-image: url('../assets/img/airlines-logo/klm/round.png') !important;
}
}
&--AY {
background-image: url('~src/assets/img/airlines-logo/finnair/large.svg') !important;
background-image: url('../assets/img/airlines-logo/finnair/large.svg') !important;
&.round {
background-image: url('~src/assets/img/airlines-logo/finnair/round.png') !important;
background-image: url('../assets/img/airlines-logo/finnair/round.png') !important;
}
}
&--DL {
background-image: url('~src/assets/img/airlines-logo/delta/large.svg') !important;
background-image: url('../assets/img/airlines-logo/delta/large.svg') !important;
&.round {
background-image: url('~src/assets/img/airlines-logo/delta/round.png') !important;
background-image: url('../assets/img/airlines-logo/delta/round.png') !important;
}
}
&--OK {
background-image: url('~src/assets/img/airlines-logo/czech-airline/large.png') !important;
background-image: url('../assets/img/airlines-logo/czech-airline/large.png') !important;
&.round {
background-image: url('~src/assets/img/airlines-logo/czech-airline/round.svg') !important;
background-image: url('../assets/img/airlines-logo/czech-airline/round.svg') !important;
}
}
&--JU {
background-image: url('~src/assets/img/airlines-logo/air-serbia/large.svg') !important;
background-image: url('../assets/img/airlines-logo/air-serbia/large.svg') !important;
&.round {
background-image: url('~src/assets/img/airlines-logo/air-serbia/round.svg') !important;
background-image: url('../assets/img/airlines-logo/air-serbia/round.svg') !important;
}
}
&--UX {
background-image: url('~src/assets/img/airlines-logo/air-europa/large.svg') !important;
background-image: url('../assets/img/airlines-logo/air-europa/large.svg') !important;
&.round {
background-image: url('~src/assets/img/airlines-logo/air-europa/round.svg') !important;
background-image: url('../assets/img/airlines-logo/air-europa/round.svg') !important;
}
}
&--BT {
background-image: url('~src/assets/img/airlines-logo/air-baltic/large.svg') !important;
background-image: url('../assets/img/airlines-logo/air-baltic/large.svg') !important;
&.round {
background-image: url('~src/assets/img/airlines-logo/air-baltic/round.svg') !important;
background-image: url('../assets/img/airlines-logo/air-baltic/round.svg') !important;
}
}
&--AM {
background-image: url('~src/assets/img/airlines-logo/aeromexico/large.svg') !important;
background-image: url('../assets/img/airlines-logo/aeromexico/large.svg') !important;
&.round {
background-image: url('~src/assets/img/airlines-logo/aeromexico/round.svg') !important;
background-image: url('../assets/img/airlines-logo/aeromexico/round.svg') !important;
}
}
&--AR {
background-image: url('~src/assets/img/airlines-logo/aerolineas-argentinas/large.png') !important;
background-image: url('../assets/img/airlines-logo/aerolineas-argentinas/large.png') !important;
&.round {
background-image: url('~src/assets/img/airlines-logo/aerolineas-argentinas/round.svg') !important;
background-image: url('../assets/img/airlines-logo/aerolineas-argentinas/round.svg') !important;
}
}
&--KM {
background-image: url('~src/assets/img/airlines-logo/airmalta/large.svg') !important;
background-image: url('../assets/img/airlines-logo/airmalta/large.svg') !important;
&.round {
background-image: none !important;
@@ -198,7 +198,7 @@ $width-base: 120px;
&--AF {
@include scale($width-base, 0.1222);
background-image: url('~src/assets/img/airlines-logo/airfrance/large.svg') !important;
background-image: url('../assets/img/airlines-logo/airfrance/large.svg') !important;
&.round {
background-image: none !important;
@@ -207,7 +207,7 @@ $width-base: 120px;
&--AZ {
@include scale($width-base, 0.2444);
background-image: url('~src/assets/img/airlines-logo/alitalia/large.svg') !important;
background-image: url('../assets/img/airlines-logo/alitalia/large.svg') !important;
&.round {
background-image: none !important;
@@ -215,7 +215,7 @@ $width-base: 120px;
}
&--PG {
background-image: url('~src/assets/img/airlines-logo/bangkok-airways/large.png') !important;
background-image: url('../assets/img/airlines-logo/bangkok-airways/large.png') !important;
&.round {
background-image: none !important;
@@ -224,7 +224,7 @@ $width-base: 120px;
&--SN {
@include scale($width-base, 0.1667);
background-image: url('~src/assets/img/airlines-logo/brussels-airlines/large.png') !important;
background-image: url('../assets/img/airlines-logo/brussels-airlines/large.png') !important;
&.round {
background-image: none !important;
@@ -233,7 +233,7 @@ $width-base: 120px;
&--FB {
@include scale($width-base, 0.296);
background-image: url('~src/assets/img/airlines-logo/bulgaria-air/large.png') !important;
background-image: url('../assets/img/airlines-logo/bulgaria-air/large.png') !important;
&.round {
background-image: none !important;
@@ -242,7 +242,7 @@ $width-base: 120px;
&--CI {
@include scale($width-base, 0.1556);
background-image: url('~src/assets/img/airlines-logo/china-airlines/large.png') !important;
background-image: url('../assets/img/airlines-logo/china-airlines/large.png') !important;
&.round {
background-image: none !important;
@@ -250,7 +250,7 @@ $width-base: 120px;
}
&--MU {
background-image: url('~src/assets/img/airlines-logo/china-eastern/large.svg') !important;
background-image: url('../assets/img/airlines-logo/china-eastern/large.svg') !important;
&.round {
background-image: none !important;
@@ -258,7 +258,7 @@ $width-base: 120px;
}
&--CZ {
background-image: url('~src/assets/img/airlines-logo/china-southern/large.svg') !important;
background-image: url('../assets/img/airlines-logo/china-southern/large.svg') !important;
&.round {
background-image: none !important;
@@ -266,7 +266,7 @@ $width-base: 120px;
}
&--GA {
background-image: url('~src/assets/img/airlines-logo/garuda-indonesia/large.png') !important;
background-image: url('../assets/img/airlines-logo/garuda-indonesia/large.png') !important;
&.round {
background-image: none !important;
@@ -274,7 +274,7 @@ $width-base: 120px;
}
&--FI {
background-image: url('~src/assets/img/airlines-logo/icelandair/large.svg') !important;
background-image: url('../assets/img/airlines-logo/icelandair/large.svg') !important;
&.round {
background-image: none !important;
@@ -282,7 +282,7 @@ $width-base: 120px;
}
&--KO {
background-image: url('~src/assets/img/airlines-logo/kenya-airways/large.svg') !important;
background-image: url('../assets/img/airlines-logo/kenya-airways/large.svg') !important;
&.round {
background-image: none !important;
@@ -290,7 +290,7 @@ $width-base: 120px;
}
&--KE {
background-image: url('~src/assets/img/airlines-logo/korean-air/large.svg') !important;
background-image: url('../assets/img/airlines-logo/korean-air/large.svg') !important;
&.round {
background-image: none !important;
@@ -298,7 +298,7 @@ $width-base: 120px;
}
&--JL {
background-image: url('~src/assets/img/airlines-logo/japan-airlines/large.svg') !important;
background-image: url('../assets/img/airlines-logo/japan-airlines/large.svg') !important;
&.round {
background-image: none !important;
@@ -306,7 +306,7 @@ $width-base: 120px;
}
&--LO {
background-image: url('~src/assets/img/airlines-logo/polish-airlines/large.png') !important;
background-image: url('../assets/img/airlines-logo/polish-airlines/large.png') !important;
&.round {
background-image: none !important;
@@ -314,7 +314,7 @@ $width-base: 120px;
}
&--ME {
background-image: url('~src/assets/img/airlines-logo/mea/large.png') !important;
background-image: url('../assets/img/airlines-logo/mea/large.png') !important;
&.round {
background-image: none !important;
@@ -323,7 +323,7 @@ $width-base: 120px;
&--S7 {
@include scale($width-base, 0.3333);
background-image: url('~src/assets/img/airlines-logo/s7/large.svg') !important;
background-image: url('../assets/img/airlines-logo/s7/large.svg') !important;
&.round {
background-image: none !important;
@@ -331,7 +331,7 @@ $width-base: 120px;
}
&--SV {
background-image: url('~src/assets/img/airlines-logo/saudi-arabian-airlines/large.png') !important;
background-image: url('../assets/img/airlines-logo/saudi-arabian-airlines/large.png') !important;
&.round {
background-image: none !important;
@@ -339,7 +339,7 @@ $width-base: 120px;
}
&--VN {
background-image: url('~src/assets/img/airlines-logo/vietnam-airlines/large.png') !important;
background-image: url('../assets/img/airlines-logo/vietnam-airlines/large.png') !important;
&.round {
background-image: none !important;
@@ -347,7 +347,7 @@ $width-base: 120px;
}
&--MF {
background-image: url('~src/assets/img/airlines-logo/vietnam-airlines/large.png') !important;
background-image: url('../assets/img/airlines-logo/vietnam-airlines/large.png') !important;
&.round {
background-image: none !important;
+2 -2
View File
@@ -4,7 +4,7 @@ p-calendar {
.p-datepicker-header {
.p-datepicker-prev {
background-image: url('~src/assets/img/arrow-left.svg');
background-image: url('../assets/img/arrow-left.svg');
background-position: center center;
background-repeat: no-repeat;
@@ -29,7 +29,7 @@ p-calendar {
}
.p-datepicker-next {
background-image: url('~src/assets/img/arrow-right.svg');
background-image: url('../assets/img/arrow-right.svg');
background-position: center center;
background-repeat: no-repeat;
+1 -1
View File
@@ -10,7 +10,7 @@
}
@mixin box-shadow--focus-inset {
box-shadow: inset 0 0 0 0.2em $focus-shadow !important;
box-shadow: inset 0 0 0 0.2em colors.$focus-shadow !important;
}
@mixin control-border-shadow {
@@ -0,0 +1,9 @@
/* Flights Map Feature Components */
@import './flights-map-body.component.scss';
@import './flights-map-filter.component.scss';
@import './flights-map-meta-tags.component.scss';
@import './flights-map-start-page-title.component.scss';
@import './flights-map-start-page.component.scss';
@import './loader-sheet.component.scss';
@import './no-directions-sheet.component.scss';
@@ -0,0 +1,19 @@
/* Component Styles - All components organized by feature area */
/* Shared UI Components */
@import './shared/index.scss';
/* Feature-specific Components */
@import './online-board/index.scss';
@import './flights-map/index.scss';
@import './schedule/index.scss';
@import './popular-requests/index.scss';
/* Toolkit Components - Reusable UI elements */
@import './toolkit/index.scss';
/* Module Components - Common components used across features */
@import './modules-components/index.scss';
/* Module Pages - Page-specific components */
@import './modules-pages/index.scss';
@@ -0,0 +1,26 @@
.app-version {
position: fixed;
right: 0;
top: 0;
padding: 2px 16px;
background-color: #f37b09;
color: #fff;
font-size: 12px;
z-index: 100000;
opacity: 0.6;
transition-duration: 0.2s;
display: flex;
cursor: pointer;
}
.app-version:hover {
opacity: 1;
}
.app-version > div {
display: none;
}
.app-version:hover > div {
display: inline-block;
}
@@ -0,0 +1,7 @@
:host {
display: flex;
button {
flex: 1;
}
}
@@ -0,0 +1,33 @@
@use 'src/styles/colors' as *;
@use 'src/styles/fonts' as *;
@use 'src/styles/screen' as *;
:host {
// prevents component from growing in height due to font-size inheritance
font-size: 0;
}
.captioned-time-group {
display: inline-flex;
flex-direction: column;
&__caption {
margin-bottom: 2px;
}
}
.captioned-time-group--right {
align-items: flex-end;
}
.captioned-time-group--mobile-right {
@include mobile {
align-items: flex-end;
}
}
.captioned-time-group--mobile-left {
@include gt-mobile {
align-items: flex-end;
}
}
@@ -0,0 +1,12 @@
@use './src/styles/framework' as *;
.day-change-square-legacy {
border: 1px solid $blue-icon;
color: $blue-light;
border-radius: $border-radius;
font-size: 10px;
font-weight: $font-bold;
width: $label-shift-width;
background-color: $white;
text-align: center;
}
@@ -0,0 +1,16 @@
@use 'src/styles/colors' as *;
@use 'src/styles/fonts' as *;
.day-change-square {
box-sizing: border-box;
padding: 0 3px;
border: 1px solid $blue-icon;
border-radius: 2px;
font-size: $font-size-xs;
line-height: 11px;
text-align: center;
color: $blue-light;
font-weight: $font-bold;
}
@@ -0,0 +1,35 @@
@use './src/styles/layouts' as *;
@use './src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
:host {
@include v-spacing($space-m);
display: flex;
flex-direction: column;
justify-content: space-between;
.detail-header-badge-flight-number {
display: flex;
align-items: flex-start;
font-weight: $font-medium;
font-size: $font-size-xl;
@include h-spacing($space-m);
& > div {
@include v-spacing($space-s);
.description {
@include mobile() {
white-space: normal !important;
}
}
}
@include mobile() {
flex: 1;
justify-content: space-between;
}
}
}
@@ -0,0 +1,27 @@
@use './src/styles/layouts' as *;
@use './src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
:host {
display: flex;
@include gt-mobile() {
& > *:not(:last-child) {
padding-right: $space-xl;
margin-right: $space-xl;
border-right: 1px solid $border;
}
}
@include mobile() {
flex: 1;
flex-wrap: wrap;
@include v-spacing($space-m);
details-header-badge {
flex: 100%;
}
}
}
@@ -0,0 +1,9 @@
@use './src/styles/framework' as *;
.duration {
@include font-overflow;
&--clarifying {
color: $orange;
}
}
@@ -0,0 +1,58 @@
@use './src/styles/layouts' as *;
@use './src/styles/variables' as *;
@use './src/styles/screen' as *;
@mixin main-buttons() {
buy-ticket-button,
registration-button,
flight-status-button,
flight-details-button {
@content();
}
}
@mixin small-buttons() {
print-button,
share-button {
@content();
}
}
:host {
display: flex;
justify-content: flex-end;
& > .k-space {
flex: 1;
@include mobile() {
display: none;
}
}
@include gt-mobile() {
@include h-spacing($space-m);
@include main-buttons() {
width: 150px;
}
}
@include mobile() {
flex-wrap: wrap;
justify-content: start;
@include v-spacing($space-l, true);
@include main-buttons() {
order: 1;
flex: 100%;
}
@include small-buttons() {
order: 2;
}
share-button {
margin-bottom: 0;
}
}
}
@@ -0,0 +1,24 @@
@use './src/styles/variables' as *;
@use './src/styles/colors' as *;
@use './src/styles/layouts' as *;
@use './src/styles/fonts' as *;
:host {
display: block;
.leg-point-brief {
padding: $space-xl 0;
margin: 0 $space-xl;
display: flex;
justify-content: space-between;
time-group-legacy {
font-size: $font-size-xl2;
width: 90px;
}
}
}
.leg-point-brief + .leg-point-brief {
border-top: 1px dashed $border;
}
@@ -0,0 +1,7 @@
:host {
display: flex;
button {
flex: 1;
}
}
@@ -0,0 +1,58 @@
@use "src/styles/framework" as *;
.flight-details-icon {
display: flex;
flex-direction: column;
align-items: center;
padding: $space-xl;
width: 120px;
cursor: pointer;
border: none;
text-decoration: none;
border-radius: $border-radius;
transition-duration: 0.2s;
&:hover {
background-color: $blue-extra-light;
}
@include mobile {
flex-direction: row;
padding: $space-m;
width: 110px;
}
&__image {
width: 32px;
height: 32px;
margin-bottom: $space-s2;
@include smTablet {
margin-bottom: 4px;
}
@include mobile {
margin-bottom: 0;
margin-right: $space-m;
}
}
&__description {
font-size: $font-size-s;
line-height: 16px;
font-weight: $font-medium;
color: $blue-light;
white-space: normal !important;
text-align: center;
@include mobile {
font-size: $font-size-xs;
line-height: 13px;
text-align: left;
}
}
}
@@ -0,0 +1,35 @@
@use './src/styles/framework' as *;
.flight-details-section {
display: flex;
align-items: flex-start;
@include mobile {
flex-direction: column;
}
&__caption {
display: flex;
flex-shrink: 0;
margin-right: $space-xl;
width: 210px;
font-size: $font-size-s;
line-height: 16px;
color: $gray;
@include mobile {
margin-right: 0;
margin-bottom: $space-m;
}
}
&__content {
display: flex;
flex-wrap: wrap;
align-items: flex-start;
@include h-deep-spacing($space-xl);
}
}
@@ -0,0 +1,49 @@
@use './src/styles/framework' as *;
@mixin column-layout() {
flex-direction: column;
align-items: flex-start;
@include h-spacing(0);
@include v-spacing($space-s2);
}
.flight-events {
display: flex;
@include h-spacing($space-m);
&__event {
display: flex;
align-items: center;
height: 28px;
padding: 0 $space-m;
border-radius: $border-radius;
border: 1px solid $border;
@include h-spacing($space-m);
}
&__event-description {
font-size: $font-size-s;
line-height: 16px;
color: $gray;
}
&--column {
@include column-layout;
}
&--column-mobile {
@include mobile {
@include column-layout;
}
}
&--row-mobile {
@include gt-mobile {
@include column-layout;
}
}
}
@@ -0,0 +1,80 @@
@use './src/styles/variables' as *;
@use './src/styles/screen' as *;
@use './src/styles/colors' as *;
@use './src/styles/fonts' as *;
@use './src/styles/layouts' as *;
.flight-props {
display: flex;
color: $text-color;
font-weight: $font-medium;
position: relative;
&-caption {
display: flex;
flex-shrink: 0;
@include h-spacing($space-xl);
@include mobile() {
flex: 100%;
align-items: center;
height: 24px;
}
}
&-body {
flex: 1;
display: grid;
column-gap: $space-l;
row-gap: $space-l;
@include mobile() {
grid-template-columns: 3fr 2fr;
margin-top: $space-xl;
&:empty {
margin-top: 0;
}
}
@include tablets() {
grid-template-columns: repeat(4, var(--property-column-width, 1fr));
}
@include desktop() {
grid-template-columns: repeat(5, var(--property-column-width, 1fr));
}
}
@include gt-mobile() {
@include h-spacing($space-m);
}
@include mobile() {
flex-wrap: wrap;
}
time-note {
grid-column-start: 1;
grid-column-end: 3; // span for 2 columns
}
&.equal-columns {
.flight-props-body {
@include mobile() {
grid-template-columns: 1fr 1fr;
}
}
}
arrow-down-icon {
@include mobile {
position: absolute;
right: 20px;
}
}
}
@@ -0,0 +1,15 @@
@use './src/styles/colors' as *;
:host {
display: flex;
button {
&:not(.small) {
flex: 1;
}
}
.flight-status-button {
padding: 0 7px;
}
}
@@ -0,0 +1,31 @@
@use "src/styles/variables" as vars;
@use "src/styles/colors";
@use "src/styles/layouts";
.flight-status {
&__content {
display: flex;
align-items: center;
@include layouts.h-spacing(vars.$space-s2);
}
&__indicator {
width: vars.$status-indicator-size;
height: vars.$status-indicator-size;
border-radius: 50%;
display: inline-block;
background-color: colors.$light-gray;
border: 1px solid colors.$light-gray;
&--Finished {
background-color: colors.$red;
border-color: colors.$red;
}
&--InProgress {
background-color: colors.$green;
border-color: colors.$green;
}
}
}
@@ -0,0 +1,63 @@
@use 'src/styles/screen';
@use 'src/styles/variables' as vars;
@use '/src/styles/grid-sizes' as gridSizes;
@mixin intermediateScreens() {
@media (min-width: vars.$media-breakpoint-desktop-min) and (max-width: 1180px) {
@content;
}
@media (min-width: vars.$media-breakpoint-small-tablet-min) and (max-width: 880px) {
@content;
}
}
@mixin templateColumns($title: gridSizes.$title-column-width) {
grid-template-columns:
[title] $title
[status] gridSizes.$status-width
[beginning-time] gridSizes.$time-width
[finish-time] minmax(gridSizes.$time-width, 1fr)
[first-property] minmax(min-content, gridSizes.$time-group-width)
[second-property] minmax(min-content, 160px);
}
.transition {
display: grid;
grid-gap: gridSizes.$gap-medium;
@include templateColumns;
@include screen.tablets {
grid-gap: gridSizes.$gap-small;
@include templateColumns(gridSizes.$title-column-width-tablets);
}
&__first-property {
grid-area: 1 / 5 / 2 / 6; // fifth column of the first row
@include intermediateScreens {
grid-area: 2 / 2 / 3 / 3; // second column of the second row
}
}
&__second-property {
grid-area: 1 / 6 / 2 / 7; // sixth column of the first row
@include intermediateScreens {
grid-area: 2 / 3 / 3 / 4; // third column of the second row
}
}
&__third-property {
grid-area: 2 / 2 / 3 / 4; // second and third columns of the second row
@include intermediateScreens {
grid-area: 2 / 4 / 3 / 6; // fourth and fifth columns of the second row
}
}
&__bag-belt.transition__first-property {
grid-area: 1 / 5 / 2 / 7; // fifth and sixth columns of the first row
}
}
@@ -0,0 +1,41 @@
@use "src/styles/screen";
@use "src/styles/grid-sizes" as gridSizes;
.transition {
@include screen.mobile {
grid-gap: gridSizes.$gap-small;
grid-template-columns: repeat(2, minmax(gridSizes.$time-width, 1fr));
&__title {
grid-area: 1 / 1 / 2 / 2; // first column of first row
}
&__status {
grid-area: 2 / 1 / 3 / 2; // first column of second row
}
&__beginning-time {
grid-area: 3 / 1 / 4 / 2; // first column of third row
}
&__finish-time {
grid-area: 3 / 2 / 4 / 3; // second column of third row
}
&__first-property {
grid-area: 4 / 1 / 5 / 2; // first column of fourth row
}
&__second-property {
grid-area: 4 / 2 / 5 / 3; // second column of fourth row
}
&__third-property {
grid-area: 5 / 1 / 6 / 3; // first and second columns of fifth row
}
&__bag-belt.transition__first-property {
grid-area: 4 / 1 / 5 / 3; // first and second columns of fourth row
}
}
}
@@ -0,0 +1,50 @@
/* Module Components - Common UI Components */
@import './app-version.component.scss';
@import './buy-ticket-button.component.scss';
@import './captioned-time-group.component.scss';
@import './day-change-square-legacy.component.scss';
@import './day-change-square.component.scss';
@import './details-header-badge.component.scss';
@import './details-header-badges.component.scss';
@import './duration.component.scss';
@import './flight-actions.component.scss';
@import './flight-brief.component.scss';
@import './flight-details-button.component.scss';
@import './flight-details-icon.component.scss';
@import './flight-details-section.component.scss';
@import './flight-events.component.scss';
@import './flight-props.component.scss';
@import './flight-status-button.component.scss';
@import './flight-status.component.scss';
@import './flight-transition.component.layout.scss';
@import './flight-transition.component.mobile-layout.scss';
@import './index.scss';
@import './last-update.component.scss';
@import './link-to-old-version.component.scss';
@import './note.component.scss';
@import './operator-logo-and-model.component.scss';
@import './operator-logo.component.scss';
@import './page-empty-list.component.scss';
@import './page-title.component.scss';
@import './partners-redirect-note.component.scss';
@import './print-button.component.scss';
@import './property.component.scss';
@import './registration-button.component.scss';
@import './section-number.component.scss';
@import './share-button.component.scss';
@import './spin-lock.component.scss';
@import './station-change.component.scss';
@import './station.component.scss';
@import './terminal-link.component.scss';
@import './time-group-legacy.component.scss';
@import './time-group-positioning.component.scss';
@import './time-group-sizes.component.scss';
@import './time-group.component.scss';
@import './timeline.component.scss';
@import './transfer-inline-extended.component.scss';
@import './transfer-inline.component.scss';
@import './transfer-section.component.scss';
@import './transfer-time.component.scss';
@import './warning-ifly-carrier-detail.component.scss';
@import './warning-ifly-carrier-small.component.scss';
@@ -0,0 +1,28 @@
@use './src/styles/screen';
:host {
display: flex;
align-items: center;
@include screen.gt-mobile() {
justify-content: flex-end;
}
@include screen.mobile() {
justify-content: space-between;
}
.last-update__description {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
}
share-button {
@include screen.gt-mobile() {
display: none;
}
}
}
@@ -0,0 +1,15 @@
:host {
a {
display: inline-flex;
text-align: center;
border: none;
background-color: #e2740b;
padding: 3px 10px 4px 10px;
color: #fff;
border-radius: 3px;
font-size: 12px;
margin-bottom: 10px;
height: 25px;
line-height: 1.6;
}
}
@@ -0,0 +1,19 @@
@use "src/styles/variables" as vars;
@use "src/styles/screen";
.note {
display: flex;
flex-wrap: nowrap;
::ng-deep .text {
line-height: 17px !important;
}
&__symbol {
margin-right: vars.$space-s;
}
&__text {
white-space: pre-line;
}
}
@@ -0,0 +1,30 @@
@use './src/styles/variables' as *;
@use './src/styles/layouts' as *;
@use './src/styles/screen' as *;
operator-logo-and-model {
display: flex;
flex-direction: column;
@include gt-mobile() {
@include v-spacing($space-s);
}
.aircraft-name {
&--right {
align-self: flex-end;
}
&--mobile-right {
@include mobile {
align-self: flex-end;
}
}
&--mobile-left {
@include mobile {
align-self: flex-start;
}
}
}
}
@@ -0,0 +1,19 @@
@use './src/styles/variables' as *;
@use './src/styles/layouts' as *;
@use './src/styles/screen' as *;
operator-logo {
display: block;
& > div.company-logo {
background-repeat: no-repeat;
background-size: contain;
background-position: left top;
}
@include v-spacing($space-s);
@include mobile() {
& > div.description {
display: none;
}
}
}
@@ -0,0 +1,42 @@
@use 'src/styles/framework' as *;
.page-empty {
padding: 50px 40px 50px 124px;
background-color: $white;
background-image: url('../assets/img/icon-not-found.svg');
background-position: 40px center;
background-repeat: no-repeat;
background-size: 55px auto;
@include mobile {
padding: 124px 40px 50px 40px;
background-position: center 40px;
}
&__title {
margin-bottom: $space-s;
font-size: $font-size-xl;
font-weight: $font-bold;
color: $text-color;
@include mobile {
text-align: center;
}
}
&__text {
max-width: 80%;
font-size: $font-size-m;
line-height: 22px;
color: $gray;
@include mobile {
text-align: center;
max-width: initial;
}
}
}
@@ -0,0 +1,28 @@
@use "src/styles/framework" as *;
:host {
h1 {
@include font-overflow();
}
@include smTablet {
h1 {
font-size: $font-size-xxxl--tablet;
margin-bottom: $space-m + $space-s;
overflow: visible;
white-space: normal;
}
}
@include mobile {
h1 {
font-size: $font-size-xxxl--mobile;
margin-bottom: $space-m + $space-s;
margin-top: $space-m;
overflow: visible;
white-space: normal;
}
}
}
@@ -0,0 +1,29 @@
@use './src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
:host {
section.empty-list {
padding: 124px 40px 50px 40px;
border-radius: 0;
background-image: url('../assets/img/icon-not-found.svg');
background-position: center 40px;
background-repeat: no-repeat;
background-size: 55px auto;
text-align: justify;
.text-header {
font-size: $font-size-xl;
color: $text-color;
font-weight: $font-bold;
margin-bottom: $space-s;
}
.text-info {
font-size: $font-size-m;
line-height: 22px;
color: $gray;
}
}
}
@@ -0,0 +1,5 @@
:host {
a {
display: block;
}
}
@@ -0,0 +1,7 @@
@use './src/styles/layouts' as *;
:host {
display: block;
@include v-spacing(2px);
}
@@ -0,0 +1,11 @@
:host {
display: flex;
button {
flex: 1;
}
}
:host ::ng-deep .app-registration-btn .p-button-label {
padding: 0.429em 0.8em;
}
@@ -0,0 +1,27 @@
@use './src/styles/colors' as *;
@use './src/styles/fonts' as *;
@use './src/styles/variables' as *;
.section-number {
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
border-radius: 3px;
border: 1px solid $blue-light2;
font-size: $font-size-m;
line-height: 19px;
color: $blue-dark;
&--small {
width: 20px;
height: 20px;
font-size: $font-size-s;
line-height: 16px;
}
}
@@ -0,0 +1,11 @@
@use 'src/styles/framework' as *;
// Double class to increase style specificity.
// Otherwise will be overwritten by .transparent
.share-button.share-button {
&:hover {
border: none;
background-color: $blue-icon !important;
}
}
@@ -0,0 +1,7 @@
.spin-lock {
position: absolute;
width: 100%;
height: 100%;
z-index: 2000;
opacity: 50%;
}
@@ -0,0 +1,30 @@
@use './src/styles/colors' as *;
@use './src/styles/fonts' as *;
@use './src/styles/variables' as *;
@use './src/styles/screen' as *;
@use './src/styles/layouts' as *;
:host {
overflow: hidden;
.city {
@include desktop() {
@include font-overflow;
}
}
@include v-spacing($space-s);
._row {
display: flex;
@include h-spacing($space-m);
justify-content: center;
align-items: center;
}
.arrow {
color: $gray;
font-size: $font-size-xl;
font-weight: $font-medium;
}
}
@@ -0,0 +1,55 @@
@use 'src/styles/screen';
:host {
font-size: 0;
}
.station {
display: flex;
flex-direction: column;
&__city {
max-width: 100%;
}
&__old-city {
text-decoration: line-through;
}
&__terminal {
// todo: remove after terminal-link deprecation
@include screen.smTablet {
max-height: initial;
}
}
&--right {
align-items: flex-end;
// todo: remove after terminal-link deprecation
.station__terminal {
text-align: right;
}
}
&--mobile-right {
@include screen.mobile {
align-items: flex-end;
// todo: remove after terminal-link deprecation
.station__terminal {
text-align: right;
}
}
}
&--mobile-left {
@include screen.gt-mobile {
align-items: flex-end;
}
}
&--center {
align-items: center;
}
}
@@ -0,0 +1,41 @@
@use './src/styles/framework' as *;
terminal-link {
overflow: hidden;
display: inline-flex;
max-width: 100%;
max-height: 16px;
@include tablets {
display: block;
}
a,
span {
padding: 0;
display: inline-block;
max-width: 100%;
@include font-small();
@include desktop() {
@include font-overflow();
}
cursor: pointer;
color: $light-gray;
line-height: 16px;
}
a {
text-decoration: underline;
&:hover {
color: $blue-light !important;
}
}
}
.terminal-link--old,
.terminal-link--old a{
color: $red !important;
text-decoration: line-through !important;
}
@@ -0,0 +1,111 @@
@use './src/styles/framework' as *;
@use 'sass:math';
time-group-legacy {
// self
@include v-spacing($space-s);
.time-group {
&__container {
display: flex;
gap: $space-s;
}
&__old-time {
@include font-small();
color: $orange;
text-decoration: line-through;
}
&__utc-offset {
@include font-small();
font-size: $font-size-xs;
}
&__date {
@include font-small();
color: $blue;
}
}
// variations
&.right-layout {
@include mobile {
align-items: flex-end;
day-change-square-legacy {
order: 1;
}
.time-group__main {
order: 2;
}
.time-group__utc-offset {
order: 3;
}
}
}
&.sparse {
.time-group__main {
@include v-spacing($space-s);
}
}
&.day-change-left {
.time-group__main {
order: 2;
}
day-change-square-legacy {
order: 1;
}
}
&.day-change-floating {
.time-group__container {
position: relative;
day-change-square-legacy {
position: absolute;
top: -$space-s;
right: -6 * $space-s;
background: $white;
z-index: 1;
padding: $space-s;
}
}
&.day-change-left {
.time-group__container {
day-change-square-legacy {
left: -6 * $space-s;
right: auto;
}
}
}
}
&.mini-list {
.time-group {
&__container {
margin-bottom: 0;
}
&__main {
margin-right: 0;
}
&__date {
font-size: $font-size-xs;
font-weight: $font-medium;
color: $gray;
}
}
day-change-square-legacy {
padding-top: math.div($space-s, 2);
padding-right: math.div($space-s, 2);
}
}
}
@@ -0,0 +1,86 @@
@use 'src/styles/screen' as *;
@use 'src/styles/variables' as *;
@mixin right-to-left() {
.time-group__day-change {
order: 1;
margin-right: $space-s;
margin-left: 0;
}
.time-group__times {
order: 2;
}
}
@mixin right-layout {
@include right-to-left;
.time-group__times {
align-items: flex-end;
}
}
.time-group--right {
justify-content: flex-end;
}
.time-group--day-change-left {
@include right-to-left;
}
.time-group--day-change-mobile-left {
@include mobile {
@include right-to-left;
}
}
.time-group--day-change-mobile-right {
@include gt-mobile {
@include right-to-left;
}
}
.time-group--right {
@include right-layout;
}
.time-group--mobile-right {
@include mobile {
@include right-layout;
}
}
.time-group--mobile-left {
@include gt-mobile {
@include right-layout;
}
}
.time-group--day-change-absolute {
position: relative;
.time-group__day-change {
position: absolute;
top: 0;
left: 100%;
}
}
.time-group--mobile-right.time-group--day-change-absolute {
@include mobile {
.time-group__day-change {
left: auto;
right: 100%;
}
}
}
.time-group--right.time-group--day-change-absolute {
.time-group__day-change {
left: auto;
right: 100%;
}
}
@@ -0,0 +1,21 @@
@use 'src/styles/fonts' as *;
.time-group--medium {
.time-group__day-change {
margin-top: 3px;
}
}
.time-group--small,
.time-group--extra-small {
.time-group__utc {
margin-top: 0;
font-size: $font-size-xs;
line-height: 13px;
}
.time-group__day-change {
margin-top: 1px;
}
}
@@ -0,0 +1,41 @@
@use 'src/styles/fonts' as *;
@use 'src/styles/colors' as *;
@use 'src/styles/variables' as *;
:host {
display: flex;
}
.time-group {
display: inline-flex;
&__times {
display: flex;
flex-direction: column;
align-items: flex-start;
}
&__actual {
display: flex;
align-items: flex-start;
}
&__utc {
margin-top: 2px;
margin-left: $space-s;
}
&__day-change {
margin-top: $space-s;
margin-left: $space-s;
}
&__old-time {
text-decoration: line-through;
}
&__specifying {
display: flex;
align-items: center;
}
}
@@ -0,0 +1,105 @@
@use './src/styles/colors' as *;
@use './src/styles/fonts' as *;
@use './src/styles/variables' as *;
@use './src/styles/layouts' as *;
:host {
display: flex;
.time-line-station {
flex: 1 1 auto;
}
station.time-line-station {
width: 100px;
}
.k-timeline-content {
flex: 1;
max-width: 100%;
padding: $space-xl;
@include v-spacing($space-xl);
}
.k-timeline {
display: flex;
justify-content: space-between;
@include h-spacing($space-s);
.time-line-station--change {
text-align: center;
}
}
.k-timeline-section {
flex: 1;
display: flex;
position: relative;
.k-timeline-duration {
position: absolute;
left: 50%;
top: 24px;
transform: translateX(-50%);
}
}
.k-separator {
flex: 1;
height: 1px;
margin-top: 11px;
background-color: $border;
}
section-number {
margin-top: 2px;
}
transfer-time {
margin-top: 5px;
}
.k-timeline-point {
display: flex;
font-size: $font-size-xl1;
background: $white;
@include h-spacing($space-s);
.k-separator {
min-width: $space-s;
}
}
.k-timeline-navigation {
//transform: rotate(90deg);
align-self: stretch;
cursor: pointer;
display: flex;
align-items: center;
padding: 0 $space-xl;
&[role='previous'] {
margin-right: -$space-xl;
&:hover {
background-image: linear-gradient(to left, rgba(255, 0, 0, 0), rgba($blue-light, 0.2));
}
::ng-deep svg {
transform: rotate(-90deg);
}
}
&[role='next'] {
margin-left: -$space-xl;
&:hover {
background-image: linear-gradient(to right, rgba(255, 0, 0, 0), rgba($blue-light, 0.2));
}
::ng-deep svg {
transform: rotate(90deg);
}
}
}
.timeline-duration--specifying {
color: $orange;
}
}
@@ -0,0 +1,94 @@
@use 'src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
@use './src/styles/layouts' as *;
:host {
background-color: $white;
border-left: 1px dashed $border;
border-right: 1px dashed $border;
color: $text-color;
display: flex;
justify-content: center;
font-size: $font-size-s;
margin-bottom: -$space-s;
margin-top: -$space-s;
position: relative;
.transfer {
&-box {
align-items: center;
background: $white;
border-radius: 3px;
border: 1px solid $border;
display: flex;
@include h-spacing($space-s);
position: relative;
overflow-x: hidden;
z-index: 1;
@include mobile() {
width: 90%;
}
}
&-icon {
display: flex;
align-items: flex-start;
align-self: stretch;
padding: $space-m2 $space-m 0;
border-right: 1px solid $border;
svg {
fill: $orange;
height: 6.5px;
width: 20.5px;
}
}
&-caption {
font-weight: $font-medium;
@include mobile() {
width: 100%;
}
}
&-time {
align-items: center;
display: flex;
@include h-spacing($space-s);
}
&-content {
align-items: center;
display: flex;
flex: 1;
padding: $space-s;
@include gt-mobile() {
@include h-spacing($space-s);
}
@include mobile() {
@include v-spacing($space-s);
flex-wrap: wrap;
& > * {
flex: 100%;
}
}
}
}
&:after {
border-top: 1px dotted $border;
content: ' ';
position: absolute;
top: 50%;
width: 100%;
z-index: 0;
}
}
@@ -0,0 +1,63 @@
@use 'sass:math';
@use './src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
@use './src/styles/layouts' as *;
:host {
padding: 0 !important;
margin-right: 0 !important;
.flight-options-icon__icon {
align-items: flex-start;
padding-top: $space-m;
height: 100%;
border-right: 1px solid $border;
}
.transfer-info {
display: flex;
flex-wrap: wrap;
align-items: center;
padding: $space-s $space-m;
span {
@include font-small();
@include font-overflow();
&.embolded {
font-weight: $font-bold;
}
}
.multi-transfers {
display: flex;
@include h-spacing($space-s);
}
.dash {
@include mobile {
display: none;
}
}
@include h-spacing($space-s);
@include mobile() {
flex-direction: column;
align-items: flex-start;
overflow: hidden;
flex: 1;
@include v-spacing($space-s);
}
}
@include mobile() {
width: 100% !important;
}
}
@@ -0,0 +1,40 @@
@use 'sass:math';
@use './src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
@use './src/styles/layouts' as *;
:host {
@include font-small();
@include h-spacing($space-s);
display: flex;
align-items: center;
flex-wrap: wrap;
color: $text-color;
span {
@include font-overflow();
&.embolded {
font-weight: $font-medium;
}
}
@include mobile() {
flex-wrap: wrap;
@include v-spacing($space-s, true);
.transfer {
&-change {
flex: 100%;
}
&-city {
flex: 100%;
}
}
}
}
@@ -0,0 +1,3 @@
transfer-time {
display: inline-flex;
}
@@ -0,0 +1,23 @@
.flights-warning-container {
display: flex;
align-items: center; /* Вертикальное выравнивание по центру */
padding: 10px 20px;
/* По горизонтали элементы располагаются слева направо (по умолчанию), поэтому justify-content не нужен */
}
.vertical-bar {
width: 0.3rem; /* Толщина полосы */
height: 80px; /* Высота полосы */
background-color: #e2740b;
// margin: 0 15px; /* Отступы слева и справа по 15px */
}
.warning-text {
text-align: left; /* Текст выравнивается по левому краю */
padding: 20px;
}
.warning-highlight {
font-weight: bold; /* Жирное начертание */
color: #e2740b; /* Оранжевый цвет */
}
@@ -0,0 +1,11 @@
@use './src/styles/variables' as *;
:host{
display: block;
padding: $space-l $space-xl;
}
.warning-highlight {
font-weight: bold; /* Жирное начертание */
color: #e2740b; /* Оранжевый цвет */
}
@@ -0,0 +1,62 @@
@use './src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
@use './src/styles/layouts' as *;
@use './src/styles/screen' as *;
:host {
display: grid;
grid-template: auto auto / auto auto;
padding: $space-l $space-xl;
align-items: start;
gap: $space-m;
@include mobile() {
grid-template: auto / auto;
::ng-deep {
flight-actions share-button {
display: none;
}
}
}
last-update {
align-self: flex-end;
}
flight-actions {
flex-wrap: wrap;
margin-right: -$space-m;
::ng-deep .flight-actions__action {
flex-shrink: 1;
margin-bottom: $space-m;
}
::ng-deep .flight-actions__action:last-child {
margin-right: $space-m;
@include mobile {
margin-right: 0;
}
}
}
.block-route-update {
display: flex;
@include h-spacing($space-m);
last-update {
flex: 1;
}
@include gt-mobile() {
}
@include mobile() {
align-items: stretch;
flex-direction: column;
}
}
}
@@ -0,0 +1,34 @@
@use './src/styles/screen' as *;
@use './src/styles/variables' as *;
@use './src/styles/colors' as *;
:host {
--property-column-width: 100px;
::ng-deep .flight-props-caption {
width: 200px;
@include tablets() {
width: 145px;
}
}
::ng-deep .code-sharing__description {
width: 200px;
white-space: initial;
text-overflow: initial;
overflow: initial;
@include tablets() {
width: 145px;
}
}
code-sharing {
margin: 0 $space-xl;
padding: $space-m 0;
border-bottom: 1px dotted $border;
}
}
@@ -0,0 +1,6 @@
@use './src/styles/variables' as *;
:host {
display: block;
margin-top: $space-l;
}
@@ -0,0 +1,75 @@
@use './src/styles/variables' as *;
@use './src/styles/colors' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
@use './src/styles/layouts' as *;
:host {
@include mobile() {
.flight {
grid-template: auto auto auto / 1fr 1fr 1fr 1fr 1fr 1fr;
gap: $space-l 0;
grid-template-areas:
'logo logo status status number number'
'depart-at depart-at depart-at arrive-at arrive-at arrive-at'
'depart-from depart-from depart-from arrive-to arrive-to arrive-to';
operator-logo {
grid-area: logo;
}
&-status {
grid-area: status;
.status {
display: none;
}
}
.flight-number {
grid-area: number;
justify-self: end;
.status {
display: block;
}
div {
text-align: right;
}
}
time-group {
&:first-of-type {
grid-area: depart-at;
}
&:last-of-type {
grid-area: arrive-at;
justify-self: end;
text-align: right;
margin-right: 0;
}
}
station {
&:first-of-type {
grid-area: depart-from;
}
&:last-of-type {
grid-area: arrive-to;
}
}
.arrow-icon {
display: none;
}
}
.icons-row {
flex-wrap: wrap;
@include v-spacing($space-m);
transfer-inline {
flex: 100%;
}
}
}
}
@@ -0,0 +1,54 @@
@use './src/styles/variables' as *;
@use './src/styles/colors' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
@use './src/styles/layouts' as *;
:host {
position: relative;
display: block;
padding: $space-xl;
@include v-spacing($space-xl);
&:hover {
.arrow-icon {
display: initial;
}
}
.arrow-icon {
position: absolute;
right: 20px;
display: none;
}
.arrow-icon--visible {
display: initial;
}
.flight {
display: grid;
grid-template: auto / [number] 80px [logo] 120px [departure-time] 100px [departure-station] minmax(45px, 145px) [status] minmax(85px, 145px) [arrival-time] 120px [arrival-station] minmax(45px, 145px) [arrow] 10px;
gap: 0 $space-l;
.flight-number {
font-size: $font-size-xl;
font-weight: $font-regular;
.status {
display: none;
}
}
}
.icons-row {
display: flex;
@include h-spacing($space-m);
flight-events:empty {
margin-right: 0;
}
}
}
@@ -0,0 +1,21 @@
@use './src/styles/variables' as *;
@use './src/styles/colors' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
@use './src/styles/layouts' as *;
:host {
@include tablets {
padding: $space-l;
.arrow-icon {
right: 12px;
}
.flight {
display: grid;
grid-template: auto / [number] 70px [logo] 90px [departure-time] 90px [departure-station] 1fr [status] 85px [arrival-time] 90px [arrival-station] 1fr [arrow] 10px;
gap: 0 $space-m;
}
}
}
@@ -0,0 +1,20 @@
@use './src/styles/variables' as *;
@use './src/styles/colors' as *;
:host {
::ng-deep .code-sharing__description {
width: 200px;
white-space: initial;
text-overflow: initial;
overflow: initial;
}
::ng-deep .flight-props-caption {
width: 200px;
}
.with-top-border {
border-top: 1px dotted $border;
}
}
@@ -0,0 +1,33 @@
@use './src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
@use './src/styles/layouts' as *;
:host {
display: flex;
.description {
font-weight: $font-medium;
}
.code-sharing-flight-number {
color: $gray;
font-size: $font-size-s;
}
@include gap($space-m);
@include mobile() {
flex-direction: column;
}
// variations
&.boxed {
padding: $space-m $space-xl;
border-radius: 3px;
background-color: $white;
border: 1px dashed $border;
}
}
@@ -0,0 +1,7 @@
@use './src/styles/variables' as *;
:host {
flight-details-body-actions {
margin-top: $space-m;
}
}
@@ -0,0 +1,149 @@
@use './src/styles/screen' as *;
@use './src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/layouts' as *;
:host {
display: block;
padding-top: 1rem;
section {
width: 100%;
margin: auto;
display: flex;
@include v-spacing(2rem);
@include h-spacing(2rem);
padding: 2rem;
@include desktop() {
padding-top: 3rem;
max-width: 960px;
width: 75%;
}
.error-page {
&-girl {
flex: 30%;
background-image: url('../assets/img/lady404.png');
background-position: bottom;
background-repeat: no-repeat;
background-size: contain;
margin-bottom: -2rem;
@include mobile() {
display: none;
}
}
&-code {
font-size: 8rem;
color: #a3a3a3;
}
&-title {
font-size: 3rem;
color: $text-color;
}
&-search {
width: 100%;
@include desktop() {
width: 17rem;
}
margin-bottom: 1rem;
&-control {
position: relative;
&-icon {
position: absolute;
top: 0;
right: 0;
background: no-repeat;
background-image: url('../assets/img/icon--search.svg');
width: 2.25rem;
height: 2.25rem;
background-position: center;
cursor: pointer;
&:hover {
background-image: url('../assets/img/icon--search-blue.svg');
}
}
}
input {
font-size: 0.875rem;
box-sizing: border-box;
width: 100%;
height: 2.25rem;
padding: 0.25rem 0.5rem;
border: 1px solid #dfdfdf;
background: #fff;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
transition: all 0.2s;
outline: 0 solid transparent;
border-radius: 0.1875rem;
position: relative;
top: 0;
left: 0;
&:focus {
border: 1px solid #b7d3f3;
box-shadow: 0 0.0625rem 0.1875rem #cad6e5;
}
}
}
&-content {
flex: 70%;
@include v-spacing(1rem);
@include mobile() {
flex: 100%;
}
}
&-actions {
display: flex;
padding: 2rem 0;
flex-wrap: wrap;
@include gt-mobile() {
@include h-spacing(1rem);
}
@include mobile() {
flex-wrap: wrap;
@include v-spacing(1rem);
}
a {
height: 35px;
display: flex;
align-items: center;
::ng-deep .p-button-label {
font-size: 1rem;
}
@include mobile() {
&[name='buy-ticket'] {
justify-content: center;
flex: 100%;
}
justify-content: space-between;
}
}
}
}
}
}
@@ -0,0 +1,81 @@
@use './src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
@use './src/styles/layouts' as *;
:host {
@include mobile() {
.multileg-flight-header {
position: relative;
display: flex;
flex-direction: column !important;
&__bottom,
&__top {
width: 100%;
@include h-spacing($space-m);
}
&__top {
margin-bottom: $space-s;
}
&__logo {
order: 2;
margin-right: 0;
}
&__events {
order: 1;
flex-grow: 0;
margin-right: $space-m;
}
}
.flight-route {
margin-bottom: $space-m;
font-size: $font-size-xl3;
grid-template: auto auto auto auto auto / 100px auto;
grid-template-areas:
'depart-at depart-from'
'scheduled-depart-at latest-depart-at'
'status status'
'arrive-at arrive-to'
'scheduled-arrive-at latest-arrive-at'
'note note';
time-group[role^='primary'] {
&:first-of-type {
grid-area: depart-at;
}
&:last-of-type {
grid-area: arrive-at;
}
}
captioned-time-group[role^='secondary'] {
&[role*='latest'] {
justify-self: end;
}
}
route-status {
grid-area: status;
}
station {
&:first-of-type {
grid-area: depart-from;
}
&:last-of-type {
grid-area: arrive-to;
}
}
}
}
}
@@ -0,0 +1,94 @@
@use './src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
@use './src/styles/layouts' as *;
@use './src/styles/screen' as *;
:host {
background: $white;
.multileg-flight-header {
display: flex;
&__bottom,
&__top {
display: flex;
@include h-spacing($space-xl);
}
arrow-down-icon {
position: absolute;
right: 20px;
}
}
.flight-route {
margin-bottom: $space-xl;
padding: $space-xl $space-xl 0 $space-xl;
font-size: $font-size-xxl;
display: grid;
grid-template: auto auto auto/
[depart-at] fit-content(120px)
[depart-to] fit-content(30%)
[status] minmax(150px, 1fr)
[arrive-at] fit-content(120px)
[arrive-to] fit-content(30%);
grid-template-areas:
'. . . . .'
'scheduled-depart-at latest-depart-at . scheduled-arrive-at latest-arrive-at'
'note note note note .';
gap: $space-xl $space-m;
time-group,
captioned-time-group {
font-size: initial;
}
note {
grid-area: note;
}
captioned-time-group[role^='secondary'] {
&[role*='scheduled departure'] {
grid-area: scheduled-depart-at;
}
&[role*='latest departure'] {
grid-area: latest-depart-at;
}
&[role*='scheduled arrival'] {
grid-area: scheduled-arrive-at;
}
&[role*='latest arrival'] {
grid-area: latest-arrive-at;
}
}
&__departure,
&__arrival {
max-width: 260px;
}
}
.details-accordion__header {
justify-content: space-between;
.block-route-update {
flex: 1;
.block-route {
margin-right: $space-m;
}
}
}
leg-time-pair {
font-size: $font-size-l;
}
flight-events {
flex: 1;
}
}
@@ -0,0 +1,58 @@
@use './src/styles/layouts' as *;
@use './src/styles/variables' as *;
@use './src/styles/colors' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
:host {
@include mobile() {
code-sharing {
margin-left: 0;
}
.k-leg {
gap: $space-l 0;
grid-template: auto auto auto / 1fr 1fr 1fr 1fr 1fr 1fr;
grid-template-areas:
'section-number logo logo logo flight-number flight-number'
'depart-at depart-at duration duration arrive-at arrive-at'
'depart-from depart-from depart-from arrive-to arrive-to arrive-to';
section-number {
grid-area: section-number;
align-self: center;
}
&-flight-number {
grid-area: flight-number;
justify-self: end;
}
&-duration {
grid-area: duration;
}
operator-logo-and-model {
grid-area: logo;
}
.departure-time-group {
grid-area: depart-at;
}
.arrival-time-group {
grid-area: arrive-at;
justify-self: end;
text-align: right;
}
.departure-station {
grid-area: depart-from;
}
.arrival-station {
grid-area: arrive-to;
}
}
}
}
@@ -0,0 +1,32 @@
@use './src/styles/layouts' as *;
@use './src/styles/variables' as *;
@use './src/styles/colors' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
:host {
display: block;
padding: $space-l $space-xl;
font-size: $font-size-xl;
font-weight: $font-regular;
@include v-spacing($space-l);
.k-leg {
display: grid;
grid-template: auto / [number] 30px [flight-number] 80px [logo] 120px [departure-time] 70px [departure-station] minmax(45px, 240px) [duration] 100px [arrival-time] 70px [arrival-station] minmax(45px, 240px);
gap: 0 $space-l;
&-duration {
align-self: center;
border-top: 1px solid $border;
flex: 1;
margin-top: $space-s;
padding-top: $space-s;
text-align: center;
}
}
code-sharing {
margin-left: 32px;
}
}
@@ -0,0 +1,16 @@
@use './src/styles/layouts' as *;
@use './src/styles/variables' as *;
@use './src/styles/colors' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
:host {
@include tablets() {
padding: $space-m $space-l;
.k-leg {
grid-template: auto / [number] 30px [flight-number] 70px [logo] 90px [departure-time] 65px [departure-station] minmax(45px, 240px) [duration] 70px [arrival-time] 65px [arrival-station] minmax(45px, 240px);
gap: 0 $space-m;
}
}
}
@@ -0,0 +1,18 @@
@use './src/styles/screen' as *;
:host {
@include mobile() {
property {
order: 0;
&[name='airplane-title'] {
order: 1;
flex: 100%;
}
&[name='airplane-previous'] {
order: 2;
flex: 100%;
}
}
}
}
@@ -0,0 +1,8 @@
@use './src/styles/variables' as *;
:host {
flight-actions {
padding-top: $space-m;
flex: 100%;
}
}
@@ -0,0 +1,12 @@
@use 'src/styles/fonts';
@use 'src/styles/screen';
:host {
font-size: fonts.$font-size-xl2;
timeline {
@include screen.mobile {
display: none;
}
}
}
@@ -0,0 +1,28 @@
@use './src/styles/_variables' as *;
@use './src/styles/_layouts' as *;
@use './src/styles/_fonts' as *;
@use './src/styles/_colors' as *;
@use './src/styles/_screen' as *;
.flight-meal {
::ng-deep .flight-details-section__content {
margin-left: -$space-m;
}
&__caption {
display: flex;
align-items: center;
@include h-spacing($space-xl);
}
&__caption-icon {
display: flex;
align-items: center;
justify-content: center;
margin-right: $space-xl;
width: 48px;
height: 48px;
}
}
@@ -0,0 +1,7 @@
@use './src/styles/colors' as *;
@use './src/styles/fonts' as *;
@use './src/styles/variables' as *;
:host {
}
@@ -0,0 +1,15 @@
@use 'src/styles/fonts';
@use 'src/styles/screen';
@use 'src/styles/colors';
@use 'src/styles/variables' as vars;
:host {
display: block;
padding: vars.$space-xl 0;
margin: 0 vars.$space-xl;
font-weight: fonts.$font-regular;
&:not(:first-child) {
border-top: 1px dotted colors.$border;
}
}
@@ -0,0 +1,16 @@
@use './src/styles/variables' as vars;
@use './src/styles/fonts' as *;
@use './src/styles/colors' as *;
:host {
font-weight: $font-regular;
&:not(:first-child) {
.deboarding {
padding: vars.$space-xl 0;
margin: 0 vars.$space-xl;
border-top: 1px dotted $border;
}
}
}
@@ -0,0 +1,61 @@
@use './src/styles/layouts' as *;
@use './src/styles/variables' as *;
@use './src/styles/colors' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
:host {
display: block;
padding: $space-l $space-xl;
font-size: $font-size-xl;
font-weight: $font-regular;
@include v-spacing($space-l);
.k-leg {
@include mobile() {
&-status {
text-align: right;
}
gap: $space-l 0;
grid-template: auto auto auto / 1fr 1fr 1fr 1fr 1fr 1fr;
grid-template-areas:
'number logo logo logo status status'
'depart-at depart-at depart-at arrive-at arrive-at arrive-at'
'depart-from depart-from depart-from arrive-to arrive-to arrive-to';
section-number {
grid-area: number;
align-self: center;
}
operator-logo-and-model {
grid-area: logo;
}
&-status {
grid-area: status;
}
time-group-legacy {
&:first-of-type {
grid-area: depart-at;
}
&:last-of-type {
grid-area: arrive-at;
justify-self: end;
text-align: right;
}
}
station {
&:first-of-type {
grid-area: depart-from;
}
&:last-of-type {
grid-area: arrive-to;
}
}
}
}
}
@@ -0,0 +1,23 @@
@use './src/styles/layouts' as *;
@use './src/styles/variables' as *;
@use './src/styles/colors' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
:host {
display: block;
padding: $space-l $space-xl;
font-size: $font-size-xl;
font-weight: $font-regular;
@include v-spacing($space-l);
.k-leg {
display: grid;
grid-template: auto / [number] 60px [logo] 120px [departure-time] 100px [departure-station] 1fr [status] minmax(85px, 145px) [arrival-time] 120px [arrival-station] 1fr;
gap: 0 $space-l;
&-status {
text-align: center;
}
}
}
@@ -0,0 +1,18 @@
@use './src/styles/layouts' as *;
@use './src/styles/variables' as *;
@use './src/styles/colors' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
:host {
@include tablets() {
padding: $space-l;
.k-leg {
display: grid;
grid-template: auto / [number] 50px [logo] 90px [departure-time] 100px [departure-station] 1fr [status] 85px [arrival-time] 100px [arrival-station] 1fr;
gap: 0 $space-m;
}
}
}
@@ -0,0 +1,15 @@
@use './src/styles/framework' as *;
@use '/src/styles/grid-sizes' as gridSizes;
:host {
.registration {
padding: $space-l 0;
margin: 0 $space-xl;
}
&:not(:first-child) {
.registration {
border-top: 1px dotted $border;
}
}
}
@@ -0,0 +1,16 @@
@use './src/styles/framework' as *;
:host {
@include mobile() {
grid-template-rows: auto auto auto;
grid-template-columns: 3fr 2fr;
grid-template-areas:
'description description'
'scheduled-departure scheduled-arrival'
'latest-departure latest-arrival';
& > .description {
grid-area: description;
}
}
}
@@ -0,0 +1,34 @@
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
@use './src/styles/colors' as *;
:host {
display: grid;
gap: 15px;
grid-template-columns: [description] 195px [time] 100px [time] 1fr [space] minmax(0, 145px) [time] 120px [time] 1fr;
@include tablets() {
grid-template-columns: [description] 145px [time] 100px [time] 1fr [space] minmax(0, 80px) [time] 120px [time] 1fr;
gap: 10px;
}
grid-template-areas: 'description scheduled-departure latest-departure . scheduled-arrival latest-arrival';
padding: $space-l 0;
margin: 0 25px 0 $space-xl;
font-weight: $font-medium;
captioned-time-group {
&[role*='scheduled departure'] {
grid-area: scheduled-departure;
}
&[role*='scheduled arrival'] {
grid-area: scheduled-arrival;
}
&[role*='latest departure'] {
grid-area: latest-departure;
}
&[role*='latest arrival'] {
grid-area: latest-arrival;
}
}
}
@@ -0,0 +1,16 @@
@use './src/styles/variables' as *;
@use './src/styles/layouts' as *;
@use './src/styles/screen' as *;
:host {
::ng-deep .flight-details-section__content {
margin-left: -$space-m;
}
.flight-details-services__caption {
display: flex;
align-items: center;
@include h-spacing($space-xl);
}
}
@@ -0,0 +1,26 @@
@use './src/styles/fonts' as *;
@use './src/styles/colors' as *;
@use './src/styles/screen' as *;
:host {
//details-accordion__header is used in many places;
//Set !important can break layout in many places
//So just added .flight-details__header with !important
.details-accordion__header {
justify-content: space-between;
}
.flight-details__header {
align-items: center !important;
justify-content: space-between !important;
font-size: $font-size-m !important;
color: $light-gray !important;
@include mobile {
font-size: $font-size-s !important;
}
}
font-size: $font-size-l;
}
@@ -0,0 +1,5 @@
:host {
& > div {
padding: 0 !important; // canceling complex styles
}
}
@@ -0,0 +1,48 @@
@use './src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
@use './src/styles/layouts' as *;
:host {
@include mobile() {
::ng-deep {
flight-actions {
flight-status-button {
display: none;
}
}
}
.flight-route {
font-size: $font-size-xl3;
grid-template: auto auto auto / 100px auto;
grid-template-areas:
'depart-at depart-from'
'status status'
'arrive-at arrive-to';
time-group-legacy {
&:first-of-type {
grid-area: depart-at;
}
&:last-of-type {
grid-area: arrive-at;
}
}
.status-line {
grid-area: status;
}
station {
&:first-of-type {
grid-area: depart-from;
}
&:last-of-type {
grid-area: arrive-to;
}
}
}
}
}
@@ -0,0 +1,30 @@
@use './src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
@use './src/styles/layouts' as *;
:host {
background: $white;
.flight-route {
padding: $space-xl;
font-size: $font-size-xxl;
display: grid;
grid-template: auto /
[depart-at] 100px
[depart-to] minmax(80px, 260px)
[status] minmax(150px, 1fr)
[arrive-at] 100px
[arrive-to] minmax(80px, 260px);
gap: $space-xl $space-m;
.status-line {
height: 1px;
align-self: center;
background-color: $border;
}
}
}
@@ -0,0 +1,54 @@
@use './src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
@use './src/styles/screen' as *;
@use './src/styles/layouts' as *;
:host {
font-size: $font-size-l;
flight-props {
padding: $space-xl;
}
.schedule-title {
font-size: $font-size-m;
color: $light-gray;
font-weight: $font-medium;
@include mobile {
font-size: $font-size-s;
}
}
::ng-deep property,
::ng-deep time-group-legacy {
.description {
color: $light-gray;
}
}
.days {
grid-column: 1 / -1; // span all columns
display: flex;
flex-wrap: wrap;
align-items: flex-start;
@include h-spacing($space-m);
@include v-spacing($space-m);
.day {
@include font-small();
background-color: $day-color;
border-radius: $border-radius;
padding: $space-s $space-m;
&.inactive {
background-color: $day-color-inactive;
color: transparentize($color: $gray, $amount: 0.5);
}
}
}
note {
grid-column: 1 / -1; // span all columns
flex: 100%;
}
}
@@ -0,0 +1,86 @@
@use './src/styles/framework' as *;
:host {
&.selected {
.flight-card {
border: 2px solid $blue-light;
}
.flight-card-wrapper {
border: none;
}
}
time-group-legacy {
font-size: $font-size-xl1;
font-weight: $font-medium;
color: $blue-dark;
}
.flight-card-wrapper {
padding: 0 $space-s2;
border-bottom: 1px solid $border;
}
&:last-of-type .flight-card-wrapper {
border: none;
}
.flight-card {
padding: $space-m2;
&__content {
display: grid;
column-gap: $space-s;
row-gap: $space-m;
grid-template: auto auto / 1fr $space-m $space-m 1fr;
grid-template-areas:
'depart-at status status arrive-at'
'depart-from depart-from arrive-to arrive-to';
}
time-group-legacy {
&:first-of-type {
grid-area: depart-at;
}
&:last-of-type {
grid-area: arrive-at;
justify-self: end;
text-align: right;
}
}
flight-status-icon {
grid-area: status;
justify-self: center;
}
station {
max-width: 100%;
&:first-of-type {
grid-area: depart-from;
}
&:last-of-type {
grid-area: arrive-to;
justify-self: end;
text-align: right;
}
}
&__flight-number {
margin-bottom: 2px;
font-size: $font-size-xs;
line-height: 13px;
color: $gray;
}
&__station {
font-size: $font-size-s;
font-weight: $font-bold;
color: $blue-dark;
}
}
}
@@ -0,0 +1,18 @@
@use '../../../../../../styles/variables.scss' as *;
@use '../../../../../../styles/colors.scss' as *;
@use '../../../../../../styles/fonts.scss' as *;
.flights-details-list-schedule-header {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: center;
justify-content: space-between;
padding: 5px;
h3 {
margin-top: $text-margin-bottom;
color: $blue;
font-weight: $font-medium;
}
}
@@ -0,0 +1,55 @@
/* Module Pages - Page-specific Components */
/* Board Page Components */
@import './board-details-header.component.scss';
@import './board-flight-body.component.scss';
@import './board-flight-bottom.component.scss';
@import './board-flight-header.component.mobile.scss';
@import './board-flight-header.component.scss';
@import './board-flight-header.component.tablets.scss';
@import './board-multi-flight-body.component.scss';
@import './code-sharing.component.scss';
/* Flight Details Components */
@import './board-details-header.component.scss';
@import './flight-board-details.component.mobile.scss';
@import './flight-board-details.component.scss';
@import './flight-details-airplane.component.scss';
@import './flight-details-boarding.component.scss';
@import './flight-details-body-actions.component.scss';
@import './flight-details-deboarding.component.scss';
@import './flight-details-full-route.component.scss';
@import './flight-details-meal.component.scss';
@import './flight-details-registration.component.scss';
@import './flight-details-row-boarding.component.scss';
@import './flight-details-row-disembarkation.component.scss';
@import './flight-details-row-part-header.component.mobile.scss';
@import './flight-details-row-part-header.component.scss';
@import './flight-details-row-part-header.component.tablets.scss';
@import './flight-details-row-registrations.component.scss';
@import './flight-details-row-time.component.mobile.scss';
@import './flight-details-row-time.component.scss';
@import './flight-details-services.component.scss';
@import './flight-details-wrapper.component.scss';
@import './flight-schedule-details.component.mobile.scss';
@import './flight-schedule-details.component.scss';
@import './flight-schedule.component.scss';
/* Schedule Page Components */
@import './connecting-flight-body.component.scss';
@import './flight-body-part-header.component.mobile.scss';
@import './flight-body-part-header.component.scss';
@import './flight-body-part-header.component.tablets.scss';
@import './flight-legs-switcher.component.scss';
@import './schedule-details-header.component.scss';
@import './schedule-list-flight-header.component.mobile.scss';
@import './schedule-list-flight-header.component.scss';
@import './schedule-list-flight-header.component.tablets.scss';
/* Other Components */
@import './error-page.component.scss';
@import './flights-details-list-flight.component.scss';
@import './flights-details-list-schedule-header.component.scss';
@import './index.scss';
@import './route-status.component.scss';
@import './transfer.component.scss';
@@ -0,0 +1,47 @@
@use './src/styles/colors' as *;
:host {
background: $white;
display: flex;
.status--text-center {
display: flex;
padding-right: 32px;
margin-left: -100%;
overflow: visible;
justify-content: center;
}
.status--text-right {
margin-left: auto;
text-align: right;
}
.status--text-left {
margin-right: auto;
text-align: left;
}
}
.flight-route {
&__in-flight-status {
display: flex;
overflow: visible;
justify-content: flex-end;
}
&__in-flight-status-text {
position: relative;
right: calc(-50% + 16px);
}
&__in-flight-status-text-container {
display: flex;
}
}
.flight-route__in-flight-status--right {
.flight-route__in-flight-status-text {
right: 0;
}
}
@@ -0,0 +1,39 @@
@use './src/styles/colors' as *;
@use './src/styles/variables' as *;
@use './src/styles/fonts' as *;
@use './src/styles/layouts' as *;
@use './src/styles/screen' as *;
:host {
display: flex;
justify-content: space-between;
padding: $space-l $space-xl;
@include mobile() {
flex-direction: column;
@include v-spacing($space-l);
}
.schedule-details-header-right {
display: flex;
flex-direction: column;
@include gt-mobile() {
justify-content: space-between;
align-items: flex-end;
@include v-spacing($space-m);
}
@include mobile() {
@include v-spacing($space-m);
::ng-deep {
flight-actions {
share-button {
display: none;
}
}
}
}
}
}

Some files were not shown because too many files have changed in this diff Show More