Skip to content

Commit

Permalink
improved styling of autocomplete component
Browse files Browse the repository at this point in the history
  • Loading branch information
Schlangstedt Anne authored and schlangstedt committed Aug 12, 2022
1 parent d922fa6 commit e883aee
Show file tree
Hide file tree
Showing 3 changed files with 213 additions and 5 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
"dependencies": {
"@mui/icons-material": "^5.8.4",
"@mui/material": "^5.8.3",
"@mui/styles": "^5.9.3",
"@reduxjs/toolkit": "^1.8.2",
"@types/react-redux": "^7.1.24",
"@types/redux": "^3.6.0",
Expand Down
57 changes: 53 additions & 4 deletions public/components/pages/side_panel/case_selector/case_selector.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import * as React from 'react';
import { Autocomplete, TextField } from '@mui/material';
import { Autocomplete, TextField, Theme } from '@mui/material';
import { makeStyles } from '@mui/styles';
import { AnyAction, bindActionCreators, Dispatch } from 'redux';
import { connect } from 'react-redux';
import { useEffect, useState } from 'react';
import { RootReducer } from '../../../../reducer/root_reducer';
import { NODE_COLOR_LAYER_1, NODE_COLOR_LAYER_2 } from '../../../../../common/colors';

import * as fetchCaseGraphActions from '../../../../reducer_actions/fetch_case_specific_graph';
import { calculateColorValue } from '../../../../services';

interface CaseSelectorState {
rootReducer: RootReducer;
Expand All @@ -25,12 +28,42 @@ const mapStateToProps = (state: CaseSelectorState) => {
return state;
};

interface StyleProps {
hoverColor: string;
}

const useStyles = makeStyles<Theme, StyleProps>((theme: Theme) => ({
listbox: {
'& .MuiAutocomplete-option[aria-selected="true"]': {
backgroundColor: 'white',
},
'& .MuiAutocomplete-option[aria-selected="true"].Mui-focused': {
backgroundColor: ({ hoverColor }) => hoverColor,
},
'& .MuiAutocomplete-option[aria-selected="false"]': {
backgroundColor: 'white',
},
'& .MuiAutocomplete-option[aria-selected="false"].Mui-focused': {
backgroundColor: ({ hoverColor }) => hoverColor,
},
},
}));

const CaseSelector = (props: CaseSelectorProps) => {
const [value, setValue] = useState<CaseSelectorOption | null>({ label: '' });

useEffect(() => {}, [props]);
useEffect(() => {}, [props.rootReducer.layer.selectedLayer]);

const cases: CaseSelectorOption[] = [];
const borderColor = calculateColorValue(props.rootReducer.layer.selectedLayer);
const hoverColor =
props.rootReducer.layer.selectedLayer === 1 ? NODE_COLOR_LAYER_1 : NODE_COLOR_LAYER_2;

const styleProps = {
hoverColor: hoverColor,
};

const classes = useStyles(styleProps);

for (let i = 0; i < props.caseIds.length; i++) {
cases.push({ label: props.caseIds[i] });
Expand All @@ -49,14 +82,30 @@ const CaseSelector = (props: CaseSelectorProps) => {

return (
<Autocomplete
classes={classes}
value={value}
isOptionEqualToValue={(option: any, value: any) => option.value === value.value}
disablePortal
id="combo-box-demo"
id="combo-box"
options={cases}
sx={{ width: '100%' }}
onChange={(event, value) => handleChange(event, value)}
renderInput={(params) => <TextField {...params} label="Select one case" />}
renderInput={(params) => (
<TextField
sx={{
'& label.Mui-focused': {
color: borderColor,
},
'& .MuiOutlinedInput-root': {
'&.Mui-focused fieldset': {
borderColor: borderColor,
},
},
}}
{...params}
label="Select one case"
/>
)}
/>
);
};
Expand Down
160 changes: 159 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,13 @@
dependencies:
regenerator-runtime "^0.13.4"

"@babel/runtime@^7.3.1", "@babel/runtime@^7.8.3":
version "7.18.9"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a"
integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==
dependencies:
regenerator-runtime "^0.13.4"

"@emotion/cache@^11.7.1":
version "11.7.1"
resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.7.1.tgz#08d080e396a42e0037848214e8aa7bf879065539"
Expand All @@ -48,6 +55,11 @@
"@emotion/weak-memoize" "^0.2.5"
stylis "4.0.13"

"@emotion/hash@^0.8.0":
version "0.8.0"
resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413"
integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==

"@emotion/is-prop-valid@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz#34ad6e98e871aa6f7a20469b602911b8b11b3a95"
Expand Down Expand Up @@ -123,6 +135,15 @@
"@mui/utils" "^5.8.0"
prop-types "^15.8.1"

"@mui/private-theming@^5.9.3":
version "5.9.3"
resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.9.3.tgz#8ea06dbe0522b0cf4ba5ee19b1a4d7f74539ae1c"
integrity sha512-Ys3WO39WqoGciGX9k5AIi/k2zJhlydv4FzlEEwtw9OqdMaV0ydK/TdZekKzjP9sTI/JcdAP3H5DWtUaPLQJjWg==
dependencies:
"@babel/runtime" "^7.17.2"
"@mui/utils" "^5.9.3"
prop-types "^15.8.1"

"@mui/styled-engine@^5.8.0":
version "5.8.0"
resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.8.0.tgz#89ed42efe7c8749e5a60af035bc5d3a6bea362bf"
Expand All @@ -132,6 +153,29 @@
"@emotion/cache" "^11.7.1"
prop-types "^15.8.1"

"@mui/styles@^5.9.3":
version "5.9.3"
resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.9.3.tgz#7cd0cb49247325e1e88dbc29008cc17c183cc4cc"
integrity sha512-omENe7oZxj6TYXYXYsSjwefmiXcU2pdy7QmXRtiD6MdTmw5+5WrDjrDRlFo2bHCFxjqNfUiXT1oEWAhV3pERww==
dependencies:
"@babel/runtime" "^7.17.2"
"@emotion/hash" "^0.8.0"
"@mui/private-theming" "^5.9.3"
"@mui/types" "^7.1.5"
"@mui/utils" "^5.9.3"
clsx "^1.2.1"
csstype "^3.1.0"
hoist-non-react-statics "^3.3.2"
jss "^10.9.1"
jss-plugin-camel-case "^10.9.1"
jss-plugin-default-unit "^10.9.1"
jss-plugin-global "^10.9.1"
jss-plugin-nested "^10.9.1"
jss-plugin-props-sort "^10.9.1"
jss-plugin-rule-value-function "^10.9.1"
jss-plugin-vendor-prefixer "^10.9.1"
prop-types "^15.8.1"

"@mui/system@^5.8.3":
version "5.8.3"
resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.8.3.tgz#66db174f1b5c244eb73dbc48527509782a22ec0a"
Expand All @@ -151,6 +195,11 @@
resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.1.3.tgz#d7636f3046110bcccc63e6acfd100e2ad9ca712a"
integrity sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA==

"@mui/types@^7.1.5":
version "7.1.5"
resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.1.5.tgz#5e5cc49d719bc86522983359bc1f90eddcff0624"
integrity sha512-HnRXrxgHJYJcT8ZDdDCQIlqk0s0skOKD7eWs9mJgBUu70hyW4iA6Kiv3yspJR474RFH8hysKR65VVSzUSzkuwA==

"@mui/utils@^5.8.0":
version "5.8.0"
resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.8.0.tgz#4b1d19cbcf70773283375e763b7b3552b84cb58f"
Expand All @@ -162,6 +211,17 @@
prop-types "^15.8.1"
react-is "^17.0.2"

"@mui/utils@^5.9.3":
version "5.9.3"
resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.9.3.tgz#a11e0824f00b7ea40257b390060ce167fe861d02"
integrity sha512-l0N5bcrenE9hnwZ/jPecpIRqsDFHkPXoFUcmkgysaJwVZzJ3yQkGXB47eqmXX5yyGrSc6HksbbqXEaUya+siew==
dependencies:
"@babel/runtime" "^7.17.2"
"@types/prop-types" "^15.7.5"
"@types/react-is" "^16.7.1 || ^17.0.0"
prop-types "^15.8.1"
react-is "^18.2.0"

"@popperjs/core@^2.11.5":
version "2.11.5"
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.5.tgz#db5a11bf66bdab39569719555b0f76e138d7bd64"
Expand Down Expand Up @@ -411,6 +471,11 @@ clsx@^1.1.1:
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==

clsx@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12"
integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==

color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
Expand All @@ -435,6 +500,14 @@ color-name@~1.1.4:
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==

css-vendor@^2.0.8:
version "2.0.8"
resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.8.tgz#e47f91d3bd3117d49180a3c935e62e3d9f7f449d"
integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==
dependencies:
"@babel/runtime" "^7.8.3"
is-in-browser "^1.0.2"

css.escape@^1.5.1:
version "1.5.1"
resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz"
Expand Down Expand Up @@ -553,6 +626,11 @@ husky@^8.0.1:
resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.1.tgz#511cb3e57de3e3190514ae49ed50f6bc3f50b3e9"
integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==

hyphenate-style-name@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d"
integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==

immer@^9.0.7:
version "9.0.15"
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.15.tgz#0b9169e5b1d22137aba7d43f8a81a495dd1b62dc"
Expand All @@ -568,6 +646,11 @@ inherits@^2.0.4:
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==

is-in-browser@^1.0.2, is-in-browser@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835"
integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==

[email protected]:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
Expand Down Expand Up @@ -603,6 +686,76 @@ jest-matcher-utils@^27.0.0:
resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==

jss-plugin-camel-case@^10.9.1:
version "10.9.2"
resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.2.tgz#76dddfa32f9e62d17daa4e3504991fd0933b89e1"
integrity sha512-wgBPlL3WS0WDJ1lPJcgjux/SHnDuu7opmgQKSraKs4z8dCCyYMx9IDPFKBXQ8Q5dVYij1FFV0WdxyhuOOAXuTg==
dependencies:
"@babel/runtime" "^7.3.1"
hyphenate-style-name "^1.0.3"
jss "10.9.2"

jss-plugin-default-unit@^10.9.1:
version "10.9.2"
resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.2.tgz#3e7f4a1506b18d8fe231554fd982439feb2a9c53"
integrity sha512-pYg0QX3bBEFtTnmeSI3l7ad1vtHU42YEEpgW7pmIh+9pkWNWb5dwS/4onSfAaI0kq+dOZHzz4dWe+8vWnanoSg==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.9.2"

jss-plugin-global@^10.9.1:
version "10.9.2"
resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.9.2.tgz#e7f2ad4a5e8e674fb703b04b57a570b8c3e5c2c2"
integrity sha512-GcX0aE8Ef6AtlasVrafg1DItlL/tWHoC4cGir4r3gegbWwF5ZOBYhx04gurPvWHC8F873aEGqge7C17xpwmp2g==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.9.2"

jss-plugin-nested@^10.9.1:
version "10.9.2"
resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.9.2.tgz#3aa2502816089ecf3981e1a07c49b276d67dca63"
integrity sha512-VgiOWIC6bvgDaAL97XCxGD0BxOKM0K0zeB/ECyNaVF6FqvdGB9KBBWRdy2STYAss4VVA7i5TbxFZN+WSX1kfQA==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.9.2"
tiny-warning "^1.0.2"

jss-plugin-props-sort@^10.9.1:
version "10.9.2"
resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.2.tgz#645f6c8f179309667b3e6212f66b59a32fb3f01f"
integrity sha512-AP1AyUTbi2szylgr+O0OB7gkIxEGzySLITZ2GpsaoX72YMCGI2jYAc+WUhPfvUnZYiauF4zTnN4V4TGuvFjJlw==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.9.2"

jss-plugin-rule-value-function@^10.9.1:
version "10.9.2"
resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.2.tgz#9afe07596e477123cbf11120776be6a64494541f"
integrity sha512-vf5ms8zvLFMub6swbNxvzsurHfUZ5Shy5aJB2gIpY6WNA3uLinEcxYyraQXItRHi5ivXGqYciFDRM2ZoVoRZ4Q==
dependencies:
"@babel/runtime" "^7.3.1"
jss "10.9.2"
tiny-warning "^1.0.2"

jss-plugin-vendor-prefixer@^10.9.1:
version "10.9.2"
resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.2.tgz#410a0f3b9f8dbbfba58f4d329134df4849aa1237"
integrity sha512-SxcEoH+Rttf9fEv6KkiPzLdXRmI6waOTcMkbbEFgdZLDYNIP9UKNHFy6thhbRKqv0XMQZdrEsbDyV464zE/dUA==
dependencies:
"@babel/runtime" "^7.3.1"
css-vendor "^2.0.8"
jss "10.9.2"

[email protected], jss@^10.9.1:
version "10.9.2"
resolved "https://registry.yarnpkg.com/jss/-/jss-10.9.2.tgz#9379be1f195ef98011dfd31f9448251bd61b95a9"
integrity sha512-b8G6rWpYLR4teTUbGd4I4EsnWjg7MN0Q5bSsjKhVkJVjhQDy2KzkbD2AW3TuT0RYZVmZZHKIrXDn6kjU14qkUg==
dependencies:
"@babel/runtime" "^7.3.1"
csstype "^3.0.2"
is-in-browser "^1.1.3"
tiny-warning "^1.0.2"

lodash@^4.17.15:
version "4.17.21"
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
Expand Down Expand Up @@ -710,6 +863,11 @@ react-is@^18.0.0:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67"
integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==

react-is@^18.2.0:
version "18.2.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==

react-redux@^8.0.2:
version "8.0.2"
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.0.2.tgz#bc2a304bb21e79c6808e3e47c50fe1caf62f7aad"
Expand Down Expand Up @@ -856,7 +1014,7 @@ tiny-invariant@^1.0.2:
resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.6.tgz#b3f9b38835e36a41c843a3b0907a5a7b3755de73"
integrity sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA==

tiny-warning@^1.0.0, tiny-warning@^1.0.3:
tiny-warning@^1.0.0, tiny-warning@^1.0.2, tiny-warning@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
Expand Down

0 comments on commit e883aee

Please sign in to comment.