From 9c024b98d3ab42027e01305e6820534f01fb783a Mon Sep 17 00:00:00 2001 From: Iku-turso Date: Mon, 21 Mar 2022 16:27:21 +0200 Subject: [PATCH] Require id for ", () => { const onChange = jest.fn(); - const { container } = render(); expect(container).toBeInstanceOf(HTMLElement); }); @@ -82,7 +82,7 @@ describe("); + const { container } = render(", () => { const onChange = jest.fn(); - const { container, rerender } = render(); const selectedValueContainer = container.querySelector(".Select__single-value"); expect(selectedValueContainer.textContent).toBe(options[0].label); - rerender(); expect(container.querySelector(".Select__single-value").textContent).toBe(options[1].label); }); @@ -126,12 +126,12 @@ describe("); + const { container, rerender } = render(); + rerender(", () => { const onChange = jest.fn(); - const { container, rerender } = render(); const selectedValueContainer = container.querySelector(".Select__single-value"); expect(selectedValueContainer.textContent).toBe(options[0].label); - rerender(); expect(container.querySelector(".Select__single-value")).not.toBeInTheDocument(); }); diff --git a/src/renderer/components/select/select.tsx b/src/renderer/components/select/select.tsx index c2712cf25f..4efcd380a8 100644 --- a/src/renderer/components/select/select.tsx +++ b/src/renderer/components/select/select.tsx @@ -30,7 +30,10 @@ export interface SelectOption { label?: React.ReactNode; } -export interface SelectProps extends ReactSelectProps, CreatableProps { +export interface SelectProps + extends ReactSelectProps, + CreatableProps { + id: string; value?: T; themeName?: "dark" | "light" | "outlined" | "lens"; menuClass?: string; @@ -41,7 +44,7 @@ export interface SelectProps extends ReactSelectProps, Crea @observer export class Select extends React.Component { - static defaultProps: SelectProps = { + static defaultProps: Omit = { autoConvertOptions: true, menuPortalTarget: document.body, menuPlacement: "auto", @@ -53,7 +56,8 @@ export class Select extends React.Component { } @computed get themeClass() { - const themeName = this.props.themeName || ThemeStore.getInstance().activeTheme.type; + const themeName = + this.props.themeName || ThemeStore.getInstance().activeTheme.type; return `theme-${themeName}`; } @@ -88,7 +92,9 @@ export class Select extends React.Component { if (autoConvertOptions && Array.isArray(options)) { return options.map(opt => { - return this.isValidOption(opt) ? opt : { value: opt, label: String(opt) }; + return this.isValidOption(opt) + ? opt + : { value: opt, label: String(opt) }; }); } @@ -114,13 +120,21 @@ export class Select extends React.Component { render() { const { - className, menuClass, isCreatable, autoConvertOptions, - value, options, components = {}, ...props + className, + menuClass, + isCreatable, + autoConvertOptions, + value, + options, + components = {}, + id: inputId, + ...props } = this.props; const WrappedMenu = components.Menu ?? Menu; const selectProps: Partial = { ...props, + inputId, styles: this.styles, value: autoConvertOptions ? this.selectedOption : value, options: autoConvertOptions ? this.options : options,