Fix Position type in hide-from traits panel
This commit is contained in:
@@ -7,6 +7,7 @@ import {
|
|||||||
buildHideRuleLabel,
|
buildHideRuleLabel,
|
||||||
type HideFromRule,
|
type HideFromRule,
|
||||||
} from '@/lib/privacy-rules';
|
} from '@/lib/privacy-rules';
|
||||||
|
import type { Position } from '@/types';
|
||||||
|
|
||||||
interface HideFromTraitsPanelProps {
|
interface HideFromTraitsPanelProps {
|
||||||
rules: HideFromRule[];
|
rules: HideFromRule[];
|
||||||
@@ -14,7 +15,7 @@ interface HideFromTraitsPanelProps {
|
|||||||
onRemove: (id: string) => void;
|
onRemove: (id: string) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
const POSITIONS = ['top', 'vers', 'bottom', 'side', 'oral', 'watching'] as const;
|
const POSITIONS: Position[] = ['top', 'vers', 'bottom', 'side'];
|
||||||
|
|
||||||
export default function HideFromTraitsPanel({
|
export default function HideFromTraitsPanel({
|
||||||
rules,
|
rules,
|
||||||
@@ -26,7 +27,7 @@ export default function HideFromTraitsPanel({
|
|||||||
const [weightLb, setWeightLb] = useState('220');
|
const [weightLb, setWeightLb] = useState('220');
|
||||||
const [ageMin, setAgeMin] = useState('');
|
const [ageMin, setAgeMin] = useState('');
|
||||||
const [ageMax, setAgeMax] = useState('');
|
const [ageMax, setAgeMax] = useState('');
|
||||||
const [positions, setPositions] = useState<string[]>([]);
|
const [positions, setPositions] = useState<Position[]>([]);
|
||||||
const [bodyTypes, setBodyTypes] = useState<string[]>([]);
|
const [bodyTypes, setBodyTypes] = useState<string[]>([]);
|
||||||
const [error, setError] = useState('');
|
const [error, setError] = useState('');
|
||||||
|
|
||||||
@@ -45,8 +46,16 @@ export default function HideFromTraitsPanel({
|
|||||||
return parts.length ? parts.join(' · ') : 'Add at least one trait';
|
return parts.length ? parts.join(' · ') : 'Add at least one trait';
|
||||||
}, [heightFt, heightIn, weightLb, ageMin, ageMax, positions, bodyTypes]);
|
}, [heightFt, heightIn, weightLb, ageMin, ageMax, positions, bodyTypes]);
|
||||||
|
|
||||||
const toggle = (list: string[], value: string, set: (v: string[]) => void) => {
|
const togglePosition = (pos: Position) => {
|
||||||
set(list.includes(value) ? list.filter((x) => x !== value) : [...list, value]);
|
setPositions((list) =>
|
||||||
|
list.includes(pos) ? list.filter((x) => x !== pos) : [...list, pos]
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const toggleBodyType = (value: string) => {
|
||||||
|
setBodyTypes((list) =>
|
||||||
|
list.includes(value) ? list.filter((x) => x !== value) : [...list, value]
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleAdd = () => {
|
const handleAdd = () => {
|
||||||
@@ -196,7 +205,7 @@ export default function HideFromTraitsPanel({
|
|||||||
<button
|
<button
|
||||||
key={p}
|
key={p}
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => toggle(positions, p, setPositions)}
|
onClick={() => togglePosition(p)}
|
||||||
className={`px-2.5 py-1 rounded-full text-xs capitalize ${
|
className={`px-2.5 py-1 rounded-full text-xs capitalize ${
|
||||||
positions.includes(p)
|
positions.includes(p)
|
||||||
? 'bg-amber-500/30 text-amber-200 border border-amber-500/50'
|
? 'bg-amber-500/30 text-amber-200 border border-amber-500/50'
|
||||||
@@ -216,7 +225,7 @@ export default function HideFromTraitsPanel({
|
|||||||
<button
|
<button
|
||||||
key={b}
|
key={b}
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => toggle(bodyTypes, b, setBodyTypes)}
|
onClick={() => toggleBodyType(b)}
|
||||||
className={`px-2.5 py-1 rounded-full text-xs capitalize ${
|
className={`px-2.5 py-1 rounded-full text-xs capitalize ${
|
||||||
bodyTypes.includes(b)
|
bodyTypes.includes(b)
|
||||||
? 'bg-amber-500/30 text-amber-200 border border-amber-500/50'
|
? 'bg-amber-500/30 text-amber-200 border border-amber-500/50'
|
||||||
|
|||||||
Reference in New Issue
Block a user