Skip to content

Commit ad0d965

Browse files
committed
front: adapt invalid path item style in itinerary modal
Signed-off-by: SharglutDev <[email protected]>
1 parent df58fbc commit ad0d965

File tree

3 files changed

+80
-33
lines changed

3 files changed

+80
-33
lines changed

front/src/applications/operationalStudies/views/Scenario/components/ManageTimetableItem/Itinerary/ItineraryModal.tsx

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -195,15 +195,24 @@ const ItineraryModal = ({
195195
<span>{t('secondaryCode')}</span>
196196
<span>{t('track')}</span>
197197
</div>
198-
{pathSteps.map((pathStep, i) => (
199-
<PathStepItem
200-
key={pathStep.id}
201-
pathStep={pathStep}
202-
pathStepMetadata={pathStepsMetadataById.get(pathStep.id)}
203-
index={i + 1}
204-
categoryColors={categoryColors}
205-
/>
206-
))}
198+
{pathSteps.map((pathStep, i) => {
199+
const pathStepMetadata = pathStepsMetadataById.get(pathStep.id);
200+
const previousPathStepMetadata = i
201+
? pathStepsMetadataById.get(pathSteps[i - 1].id)
202+
: undefined;
203+
return (
204+
<PathStepItem
205+
key={pathStep.id}
206+
pathStep={pathStep}
207+
pathStepMetadata={pathStepMetadata}
208+
index={i + 1}
209+
categoryColors={categoryColors}
210+
hidePathfindingLine={
211+
pathStepMetadata?.isInvalid || previousPathStepMetadata?.isInvalid
212+
}
213+
/>
214+
);
215+
})}
207216
<PathStepItem
208217
hidePathfindingLine={pathSteps.length === 0}
209218
categoryColors={categoryColors}

front/src/applications/operationalStudies/views/Scenario/components/ManageTimetableItem/Itinerary/PathStepItem.tsx

Lines changed: 45 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -135,20 +135,29 @@ const PathStepItem = ({
135135
>
136136
<div
137137
className={cx('path-step-counter', {
138+
invalid: pathStepMetadata?.isInvalid,
138139
index,
139140
'pathfinding-line': !hidePathfindingLine,
140141
origin: index === 1,
141142
empty: !pathStep,
142143
})}
143144
style={{
144-
borderColor: index ? categoryColors.background : categoryColors.normal,
145+
borderColor: !pathStepMetadata?.isInvalid
146+
? index
147+
? categoryColors.background
148+
: categoryColors.normal
149+
: '',
145150
// @ts-expect-error: variable CSS custom property to be used to style ::before
146151
'--pathBackground': categoryColors.normal,
147152
}}
148153
>
149154
{index}
150155
</div>
151-
<div className="path-step-op-name">
156+
<div
157+
className={cx('path-step-op-name', {
158+
invalid: pathStepMetadata?.isInvalid,
159+
})}
160+
>
152161
<ComboBox
153162
id={`pathStep-name-${pathStep?.id ?? 'empty'}`}
154163
value={isOpRefMetadata(pathStepMetadata) ? pathStepMetadata.name : ''}
@@ -165,28 +174,40 @@ const PathStepItem = ({
165174
<div className="requested-point-block" />
166175
) : (
167176
<>
168-
<Select
169-
id={`pathStep-type-${pathStep?.id ?? 'empty'}`}
170-
value={selectedSecondaryCodeOption}
171-
options={secondaryCodeSuggestions}
172-
getOptionLabel={(option) => option.label}
173-
getOptionValue={(option) => option.id}
174-
onChange={() => {}}
175-
small
176-
narrow
177-
readOnly
178-
/>
179-
<Select
180-
id={`pathStep-status-${pathStep?.id ?? 'empty'}`}
181-
value={selectedTrackNameOption}
182-
options={trackNameSuggestions}
183-
getOptionLabel={(option) => option.label}
184-
getOptionValue={(option) => option.id}
185-
onChange={() => {}}
186-
small
187-
narrow
188-
readOnly
189-
/>
177+
<div
178+
className={cx('secondary-code', {
179+
invalid: pathStepMetadata?.isInvalid,
180+
})}
181+
>
182+
<Select
183+
id={`pathStep-type-${pathStep?.id ?? 'empty'}`}
184+
value={selectedSecondaryCodeOption}
185+
options={secondaryCodeSuggestions}
186+
getOptionLabel={(option) => option.label}
187+
getOptionValue={(option) => option.id}
188+
onChange={() => {}}
189+
small
190+
narrow
191+
readOnly
192+
/>
193+
</div>
194+
<div
195+
className={cx('track-name', {
196+
invalid: pathStepMetadata?.isInvalid,
197+
})}
198+
>
199+
<Select
200+
id={`pathStep-status-${pathStep?.id ?? 'empty'}`}
201+
value={selectedTrackNameOption}
202+
options={trackNameSuggestions}
203+
getOptionLabel={(option) => option.label}
204+
getOptionValue={(option) => option.id}
205+
onChange={() => {}}
206+
small
207+
narrow
208+
readOnly
209+
/>
210+
</div>
190211
</>
191212
)}
192213
<div className="map-interactions">

front/src/styles/scss/applications/operationalStudies/_itineraryModal.scss

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,12 +222,29 @@
222222
top: -2px; // relative element border width
223223
}
224224
}
225+
226+
&.invalid {
227+
background-color: var(--error60);
228+
border-color: var(--error30);
229+
}
225230
}
226231

227232
.path-step-op-name {
228233
margin-left: 4px;
229234
}
230235

236+
.path-step-op-name,
237+
.secondary-code,
238+
.track-name {
239+
&.invalid {
240+
border-radius: 3px;
241+
box-shadow:
242+
0 0 0 1.5px rgba(255, 104, 104, 1),
243+
0 0 0 0.5px inset rgba(0, 0, 0, 1),
244+
0 1px 3px 0 inset rgba(0, 0, 0, 0.5);
245+
}
246+
}
247+
231248
.requested-point-block {
232249
height: 28px;
233250
background-color: var(--ambientB5);

0 commit comments

Comments
 (0)