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) => { if (index >= settings.customStatuses.length - 1) return; const currentStatuses = [...settings.customStatuses]; [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 } /> )) )}
); };