console: fix bootstrap dropdown button not working as intended

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7837
GitOrigin-RevId: fb4e895dc89e4b8575ad7a26173acc6e400d5438
This commit is contained in:
Nicolas Beaussart 2023-02-07 08:45:42 +01:00 committed by hasura-bot
parent aee0f7a766
commit 2f4104dfb7

View File

@ -1,7 +1,6 @@
import React from 'react'; import React from 'react';
import InputGroup from 'react-bootstrap/lib/InputGroup'; import InputGroup from 'react-bootstrap/lib/InputGroup';
import DropdownButton from 'react-bootstrap/lib/DropdownButton'; import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
import MenuItem from 'react-bootstrap/lib/MenuItem';
type DropDownButtonProps = { type DropDownButtonProps = {
title: string; title: string;
@ -24,6 +23,18 @@ type DropDownButtonProps = {
inputStyle?: Record<string, string>; inputStyle?: Record<string, string>;
}; };
/*
Hello traveler of the old code.
This was originally made using react boostrap, but for some reason, react boostrap
stopped having the dropdown working. This was migrated 1:1 using radix ui
in order to have the old code still work.
This is not to be used with newer code !!!!!!!
*/
// because the previous code was doing some wierd things with non existing attributes
/* eslint-disable @typescript-eslint/ban-ts-comment */
const DDButton: React.FC<DropDownButtonProps> = props => { const DDButton: React.FC<DropDownButtonProps> = props => {
const { const {
title, title,
@ -43,26 +54,61 @@ const DDButton: React.FC<DropDownButtonProps> = props => {
} = props; } = props;
return ( return (
<InputGroup className={bsClass}> <InputGroup className={bsClass}>
<DropdownButton <span className="dropdown input-group-btn">
title={value || title} <DropdownMenu.Root>
componentClass={InputGroup.Button} <DropdownMenu.Trigger asChild>
<button
className="dropdown-toggle btn btn-default"
disabled={disabled} disabled={disabled}
id={id || ''} id={id || ''}
data-test={`${testId}-dropdown-button`} data-test={`${testId}-dropdown-button`}
>
{value || title}
<span className="caret !ml-1"></span>
</button>
</DropdownMenu.Trigger>
<DropdownMenu.Portal>
<DropdownMenu.Content
className="flex flex-col items-start bg-white border py-1"
style={{
border: '1px solid rgba(0, 0, 0, 0.15)',
borderRadius: '4px',
boxShadow: '0 6px 12px rgb(0 0 0 / 18%);',
padding: '5px 0',
margin: '2px 0 0',
}}
align="start"
> >
{dropdownOptions.map((d, i) => ( {dropdownOptions.map((d, i) => (
<MenuItem <DropdownMenu.Item asChild>
<button
data-index-id={dataIndex} data-index-id={dataIndex}
/*
// @ts-ignore */
value={d.value} value={d.value}
onClick={onButtonChange} onClick={onButtonChange}
/*
// @ts-ignore */
eventKey={i + 1} eventKey={i + 1}
key={i} key={i}
data-test={`${testId}-dropdown-item-${i + 1}`} data-test={`${testId}-dropdown-item-${i + 1}`}
style={{
padding: '3px 20px',
color: '#333333',
lineHeight: 1.42857,
fontWeight: 400,
fontSize: '14px',
}}
className="whitespace-nowrap focus-visible:bg-[#f5f5f5] hover:bg-[#f5f5f5] w-full text-left"
> >
{d.display_text} {d.display_text}
</MenuItem> </button>
</DropdownMenu.Item>
))} ))}
</DropdownButton> </DropdownMenu.Content>
</DropdownMenu.Portal>
</DropdownMenu.Root>
</span>
<input <input
style={props.inputStyle} style={props.inputStyle}
type="text" type="text"