import { FC, ReactNode } from 'react'; import { DropdownItem, FormGroup } from 'reactstrap'; import { SimpleCard } from '../utils/SimpleCard'; import { ToggleSwitch } from '../utils/ToggleSwitch'; import { DropdownBtn } from '../utils/DropdownBtn'; import { FormText } from '../utils/forms/FormText'; import { LabeledFormGroup } from '../utils/forms/LabeledFormGroup'; import { Settings, ShortUrlCreationSettings as ShortUrlsSettings, TagFilteringMode } from './reducers/settings'; interface ShortUrlCreationProps { settings: Settings; setShortUrlCreationSettings: (settings: ShortUrlsSettings) => void; } const tagFilteringModeText = (tagFilteringMode: TagFilteringMode | undefined): string => (tagFilteringMode === 'includes' ? 'Suggest tags including input' : 'Suggest tags starting with input'); const tagFilteringModeHint = (tagFilteringMode: TagFilteringMode | undefined): ReactNode => ( tagFilteringMode === 'includes' ? <>The list of suggested tags will contain those including provided input. : <>The list of suggested tags will contain those starting with provided input. ); export const ShortUrlCreationSettings: FC = ({ settings, setShortUrlCreationSettings }) => { const shortUrlCreation: ShortUrlsSettings = settings.shortUrlCreation ?? { validateUrls: false }; const changeTagsFilteringMode = (tagFilteringMode: TagFilteringMode) => () => setShortUrlCreationSettings( { ...shortUrlCreation ?? { validateUrls: false }, tagFilteringMode }, ); return ( setShortUrlCreationSettings({ ...shortUrlCreation, validateUrls })} > Request validation on long URLs when creating new short URLs. The initial state of the Validate URL checkbox will be {shortUrlCreation.validateUrls ? 'checked' : 'unchecked'}. setShortUrlCreationSettings({ ...shortUrlCreation, forwardQuery })} > Make all new short URLs forward their query params to the long URL. The initial state of the Forward query params on redirect checkbox will be {shortUrlCreation.forwardQuery ?? true ? 'checked' : 'unchecked'}. {tagFilteringModeText('startsWith')} {tagFilteringModeText('includes')} {tagFilteringModeHint(shortUrlCreation.tagFilteringMode)} ); };