mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 21:10:38 +03:00
67 lines
2.7 KiB
TypeScript
67 lines
2.7 KiB
TypeScript
import { useCallback } from 'react';
|
||
|
||
import Dropdown from '../../../components/Common/Dropdown';
|
||
import DropdownButton from '../../../components/Common/DropdownButton';
|
||
import useDropdown from '../../../hooks/useDropdown';
|
||
import { DependencyMode } from '../../../utils/models';
|
||
import { getDependencyLabel } from '../../../utils/staticUI';
|
||
|
||
interface DependencyModePickerProps {
|
||
value: DependencyMode
|
||
onChange: (value: DependencyMode) => void
|
||
}
|
||
|
||
function DependencyModePicker({ value, onChange }: DependencyModePickerProps) {
|
||
const pickerMenu = useDropdown();
|
||
|
||
const handleChange = useCallback(
|
||
(newValue: DependencyMode) => {
|
||
pickerMenu.hide();
|
||
onChange(newValue);
|
||
}, [pickerMenu, onChange]);
|
||
|
||
return (
|
||
<div ref={pickerMenu.ref}>
|
||
<span
|
||
className='text-sm font-semibold underline cursor-pointer select-none whitespace-nowrap'
|
||
tabIndex={-1}
|
||
onClick={pickerMenu.toggle}
|
||
>
|
||
{getDependencyLabel(value)}
|
||
</span>
|
||
{ pickerMenu.isActive &&
|
||
<Dropdown stretchLeft >
|
||
<DropdownButton onClick={() => handleChange(DependencyMode.ALL)}>
|
||
<p><b>вся схема:</b> список всех конституент схемы</p>
|
||
</DropdownButton>
|
||
<DropdownButton onClick={() => handleChange(DependencyMode.EXPRESSION)}>
|
||
<p><b>выражение:</b> список идентификаторов из выражения</p>
|
||
</DropdownButton>
|
||
<DropdownButton onClick={() => handleChange(DependencyMode.OUTPUTS)}>
|
||
<p><b>потребители:</b> конституенты, ссылающиеся на данную</p>
|
||
</DropdownButton>
|
||
<DropdownButton onClick={() => handleChange(DependencyMode.INPUTS)}>
|
||
<p><b>поставщики:</b> конституенты, на которые ссылается данная</p>
|
||
</DropdownButton>
|
||
<DropdownButton onClick={() => handleChange(DependencyMode.EXPAND_OUTPUTS)}>
|
||
<p><b>зависимые:</b> конституенты, зависящие по цепочке</p>
|
||
</DropdownButton>
|
||
<DropdownButton onClick={() => handleChange(DependencyMode.EXPAND_INPUTS)}>
|
||
<p><b>влияющие:</b> конституенты, влияющие на данную (цепочка)</p>
|
||
</DropdownButton>
|
||
</Dropdown>
|
||
}
|
||
</div>
|
||
|
||
// case DependencyMode.OUTPUTS: return 'потребители';
|
||
// case DependencyMode.INPUTS: return 'поставщики';
|
||
// case DependencyMode.EXPAND_INPUTS: return 'влияющие';
|
||
// case DependencyMode.EXPAND_OUTPUTS: return 'зависимые';
|
||
// }
|
||
// }
|
||
|
||
);
|
||
}
|
||
|
||
export default DependencyModePicker;
|