(SingleSelectField) Dont allow to select option when it is disabled (#1870)
* fix(SingleSelectField): dont allow to select an option when it is disabled * feat(storybook): add story to the SingleSelectField * fix(storybook): update snapshot
This commit is contained in:
parent
f5f4858cf1
commit
190d2660c5
3 changed files with 83 additions and 0 deletions
|
@ -10,6 +10,7 @@ import {
|
||||||
import { SelectProps } from "@material-ui/core/Select";
|
import { SelectProps } from "@material-ui/core/Select";
|
||||||
import { makeStyles } from "@saleor/macaw-ui";
|
import { makeStyles } from "@saleor/macaw-ui";
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
|
import clsx from "clsx";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { FormattedMessage } from "react-intl";
|
import { FormattedMessage } from "react-intl";
|
||||||
|
|
||||||
|
@ -31,6 +32,9 @@ const useStyles = makeStyles(
|
||||||
},
|
},
|
||||||
paper: {
|
paper: {
|
||||||
maxHeight: `calc(${singleSelectFieldItemHeight}px * 10 + ${singleSelectFieldItemHeight}px * 0.5)`
|
maxHeight: `calc(${singleSelectFieldItemHeight}px * 10 + ${singleSelectFieldItemHeight}px * 0.5)`
|
||||||
|
},
|
||||||
|
disabledMenuItem: {
|
||||||
|
pointerEvents: "none"
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
{ name: "SingleSelectField" }
|
{ name: "SingleSelectField" }
|
||||||
|
@ -127,6 +131,7 @@ export const SingleSelectField: React.FC<SingleSelectFieldProps> = props => {
|
||||||
choices.map(choice => (
|
choices.map(choice => (
|
||||||
<MenuItem
|
<MenuItem
|
||||||
disabled={choice.disabled}
|
disabled={choice.disabled}
|
||||||
|
className={clsx(choice.disabled && classes.disabledMenuItem)}
|
||||||
data-test-id={"select-field-option-" + choice.value}
|
data-test-id={"select-field-option-" + choice.value}
|
||||||
value={choice.value}
|
value={choice.value}
|
||||||
key={choice.value}
|
key={choice.value}
|
||||||
|
|
|
@ -14063,6 +14063,74 @@ exports[`Storyshots Generics / Select with autocomplete with add 1`] = `
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`Storyshots Generics / SingleSelectField with disabled options 1`] = `
|
||||||
|
<div
|
||||||
|
style="padding:24px"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="MuiPaper-root-id MuiCard-root-id MuiPaper-elevation0-id MuiPaper-rounded-id"
|
||||||
|
style="margin:auto;overflow:visible;position:relative;width:400px"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="MuiCardContent-root-id"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="MuiFormControl-root-id SingleSelectField-formControl-id"
|
||||||
|
>
|
||||||
|
<label
|
||||||
|
class="MuiFormLabel-root-id MuiInputLabel-root-id SingleSelectField-label-id MuiInputLabel-formControl-id MuiInputLabel-animated-id MuiInputLabel-filled-id"
|
||||||
|
data-shrink="false"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
class="MuiInputBase-root-id MuiOutlinedInput-root-id MuiInputBase-fullWidth-id MuiInputBase-formControl-id"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
aria-haspopup="listbox"
|
||||||
|
class="MuiSelect-root-id MuiSelect-select-id MuiSelect-selectMenu-id MuiSelect-outlined-id MuiInputBase-input-id MuiOutlinedInput-input-id SingleSelectField-noLabel-id"
|
||||||
|
role="button"
|
||||||
|
tabindex="0"
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<input
|
||||||
|
aria-hidden="true"
|
||||||
|
class="MuiSelect-nativeInput-id"
|
||||||
|
tabindex="-1"
|
||||||
|
value=""
|
||||||
|
/>
|
||||||
|
<svg
|
||||||
|
aria-hidden="true"
|
||||||
|
class="MuiSvgIcon-root-id MuiSelect-icon-id MuiSelect-iconOutlined-id"
|
||||||
|
focusable="false"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M7 10l5 5 5-5z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
<fieldset
|
||||||
|
aria-hidden="true"
|
||||||
|
class="PrivateNotchedOutline-root-id MuiOutlinedInput-notchedOutline-id"
|
||||||
|
style="padding-left:8px"
|
||||||
|
>
|
||||||
|
<legend
|
||||||
|
class="PrivateNotchedOutline-legend-id"
|
||||||
|
style="width:0.01px"
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</legend>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`Storyshots Generics / SingleSelectField with error hint 1`] = `
|
exports[`Storyshots Generics / SingleSelectField with error hint 1`] = `
|
||||||
<div
|
<div
|
||||||
style="padding:24px"
|
style="padding:24px"
|
||||||
|
|
|
@ -31,6 +31,13 @@ const manyChoices = [
|
||||||
{ label: "Petrol", value: "16" }
|
{ label: "Petrol", value: "16" }
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const disabledChoices = [
|
||||||
|
{ label: "Apparel", value: "1" },
|
||||||
|
{ label: "Groceries", value: "2", disabled: true },
|
||||||
|
{ label: "Books", value: "3", disabled: true },
|
||||||
|
{ label: "Accessories", value: "4" }
|
||||||
|
];
|
||||||
|
|
||||||
storiesOf("Generics / SingleSelectField", module)
|
storiesOf("Generics / SingleSelectField", module)
|
||||||
.addDecorator(CardDecorator)
|
.addDecorator(CardDecorator)
|
||||||
.addDecorator(Decorator)
|
.addDecorator(Decorator)
|
||||||
|
@ -89,4 +96,7 @@ storiesOf("Generics / SingleSelectField", module)
|
||||||
hint="Lorem error"
|
hint="Lorem error"
|
||||||
error={true}
|
error={true}
|
||||||
/>
|
/>
|
||||||
|
))
|
||||||
|
.add("with disabled options", () => (
|
||||||
|
<SingleSelectField choices={disabledChoices} onChange={undefined} />
|
||||||
));
|
));
|
||||||
|
|
Loading…
Reference in a new issue