import { PluginSettings } from "@/types/pluginSettings"; import React from "react"; import { CustomStatusItem, Props as CustomStatusItemProps, } from "./CustomStatusItem"; import { SettingItem } from "./SettingItem"; export type Props = { settings: PluginSettings; onChange: (key: keyof PluginSettings, value: unknown) => void; }; export const CustomStatusSettings: React.FC = ({ settings, onChange, }) => { const addNewCustomStatus = () => { const currentStatuses = [...(settings.customStatuses || [])]; currentStatuses.push({ name: "", icon: "", lucideIcon: "", }); onChange("customStatuses", currentStatuses); }; const removeCustomStatus: CustomStatusItemProps["onCustomStatusRemove"] = ( index, ) => { const currentStatuses = [...(settings.customStatuses || [])]; currentStatuses.splice(index, 1); onChange("customStatuses", currentStatuses); }; const updateCustomStatus: CustomStatusItemProps["onCustomStatusChange"] = ( index, column, value, ) => { const currentStatuses = [...(settings.customStatuses || [])]; const target = currentStatuses[index]; if (target) { target[column] = value; onChange("customStatuses", currentStatuses); } }; const moveCustomStatusUp = (index: number) => { if (index <= 0) return; const currentStatuses = [...(settings.customStatuses || [])]; [currentStatuses[index - 1], currentStatuses[index]] = [ currentStatuses[index], currentStatuses[index - 1], ]; onChange("customStatuses", currentStatuses); }; const moveCustomStatusDown = (index: number) => { const currentStatuses = [...(settings.customStatuses || [])]; if (index >= currentStatuses.length - 1) return; [currentStatuses[index], currentStatuses[index + 1]] = [ currentStatuses[index + 1], currentStatuses[index], ]; onChange("customStatuses", currentStatuses); }; return (

Custom Statuses

onChange("useCustomStatusesOnly", e.target.checked) } />
{(settings.customStatuses || []).length === 0 ? (

No custom statuses yet. Click "Add Status" below to create your first one.

) : ( (settings.customStatuses || []).map((status, index) => ( 0} canMoveDown={ index < (settings.customStatuses || []).length - 1 } /> )) )}
); };