mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-27 05:20:36 +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;
|