Skip to content

Commit 87939d6

Browse files
authored
fix(orchestrator): align widget dropdown L&F with common (#1069)
Signed-off-by: Marek Libra <marek.libra@gmail.com>
1 parent b5dc9b8 commit 87939d6

File tree

4 files changed

+36
-4
lines changed

4 files changed

+36
-4
lines changed

workspaces/orchestrator/plugins/orchestrator-form-react/src/components/OrchestratorFormStepper.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,13 @@ const OrchestratorFormStepper = ({
5959
}: {
6060
steps: OrchestratorFormStep[];
6161
}) => {
62+
const { classes } = useStyles();
6263
const { activeStep, reviewStep } = useStepperContext();
6364
const stepsWithReview = [
6465
...steps,
6566
{ content: reviewStep, title: 'Review', key: 'review' },
6667
];
67-
const { classes } = useStyles();
68+
6869
return (
6970
<>
7071
<Stepper

workspaces/orchestrator/plugins/orchestrator-form-widgets/src/widgets/ActiveDropdown.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
* limitations under the License.
1515
*/
1616
import React, { useCallback, useEffect, useMemo, useState } from 'react';
17+
import clsx from 'clsx';
1718
import { makeStyles } from 'tss-react/mui';
1819
import { Widget } from '@rjsf/utils';
1920
import { JsonObject } from '@backstage/types';
@@ -35,7 +36,7 @@ import {
3536
import { UiProps } from '../uiPropTypes';
3637
import { ErrorText } from './ErrorText';
3738

38-
const useStyles = makeStyles()(_ => ({
39+
const useStyles = makeStyles()(theme => ({
3940
menuItem: {
4041
// Workaround, we still have mix of Material 4 and 5 CSS in production, conflict with MuiButtonBase-root
4142
display: 'flex !important',
@@ -44,6 +45,9 @@ const useStyles = makeStyles()(_ => ({
4445
paddingBottom: '8px !important',
4546
paddingLeft: '16px !important',
4647
},
48+
menuItemSelected: {
49+
backgroundColor: `${theme.palette.action.selected} !important`,
50+
},
4751
}));
4852

4953
export const ActiveDropdown: Widget<
@@ -143,7 +147,10 @@ export const ActiveDropdown: Widget<
143147
key={values[idx]}
144148
value={values[idx]}
145149
data-testid={`${id}-menuitem-${values[idx]}`}
146-
className={classes.menuItem}
150+
className={clsx(
151+
classes.menuItem,
152+
value === values[idx] && classes.menuItemSelected,
153+
)}
147154
>
148155
{itemLabel}
149156
</MenuItem>

workspaces/orchestrator/plugins/orchestrator-form-widgets/src/widgets/ActiveMultiSelect.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
import React, { useEffect, useMemo, useState } from 'react';
1717
import clsx from 'clsx';
18-
1918
import { makeStyles } from 'tss-react/mui';
2019
import { Theme } from '@mui/material/styles';
2120
import Box from '@mui/material/Box';

workspaces/orchestrator/plugins/orchestrator-form-widgets/src/widgets/ActiveTextInput.tsx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,13 @@
1414
* limitations under the License.
1515
*/
1616
import React, { useCallback, useEffect, useMemo, useState } from 'react';
17+
import clsx from 'clsx';
1718
import { JsonObject } from '@backstage/types';
1819
import { Widget } from '@rjsf/utils';
1920
import { JSONSchema7 } from 'json-schema';
2021

22+
import { Theme } from '@mui/material/styles';
23+
import { makeStyles } from 'tss-react/mui';
2124
import CircularProgress from '@mui/material/CircularProgress';
2225
import FormControl from '@mui/material/FormControl';
2326
import TextField from '@mui/material/TextField';
@@ -37,11 +40,18 @@ import {
3740
import { ErrorText } from './ErrorText';
3841
import { UiProps } from '../uiPropTypes';
3942

43+
const useStyles = makeStyles()((theme: Theme) => ({
44+
autocompleteOptionSelected: {
45+
backgroundColor: `${theme.palette.action.selected} !important`,
46+
},
47+
}));
48+
4049
export const ActiveTextInput: Widget<
4150
JsonObject,
4251
JSONSchema7,
4352
OrchestratorFormContextProps
4453
> = props => {
54+
const { classes } = useStyles();
4555
const templateUnitEvaluator = useTemplateUnitEvaluator();
4656

4757
const { id, label, value, onChange, formContext } = props;
@@ -139,6 +149,21 @@ export const ActiveTextInput: Widget<
139149
value={value}
140150
onChange={(_, v) => handleChange(v)}
141151
renderInput={renderInput}
152+
renderOption={(liProps, item, state) => {
153+
return (
154+
<li
155+
{...liProps}
156+
key={item}
157+
data-testid={`${id}-autocomplete-option-${item}`}
158+
className={clsx(
159+
state.selected && classes.autocompleteOptionSelected,
160+
liProps.className,
161+
)}
162+
>
163+
{item}
164+
</li>
165+
);
166+
}}
142167
/>
143168
</FormControl>
144169
);

0 commit comments

Comments
 (0)