import { useMemo, useState } from 'preact/hooks'; import LeftSlideDrawer from './LeftSlideDrawer'; function formatDate(value) { if (!value) return '-'; const date = new Date(value); if (Number.isNaN(date.getTime())) return '-'; return new Intl.DateTimeFormat('hr-HR', { day: '2-digit', month: '2-digit', year: 'numeric', }).format(date); } function workOrderLabel(item) { const code = String(item?.display_code || '').trim().toUpperCase(); if (code) return code; return `WO-${String(item?.id || '').slice(0, 8)}`; } export default function ServiceNotesWidget({ notes = [], loading = false, canManageRecipients = false, activeTasks = [], activeWorkOrders = [], teamMembers = [], onCreate, onClose, }) { const [note, setNote] = useState(''); const [noteDate, setNoteDate] = useState(''); const [audience, setAudience] = useState('self'); const [targetUsers, setTargetUsers] = useState([]); const [contextType, setContextType] = useState('none'); const [contextValue, setContextValue] = useState(''); const [submitting, setSubmitting] = useState(false); const undatedNotes = useMemo( () => notes.filter((item) => !item.note_date), [notes] ); const datedNotes = useMemo( () => notes.filter((item) => !!item.note_date), [notes] ); async function handleSubmit(event) { event.preventDefault(); if (!String(note || '').trim()) return; const payload = { note: String(note || '').trim(), note_date: noteDate || null, audience, }; if (audience === 'member' && targetUsers.length > 0) { payload.target_users = targetUsers; } if (contextType === 'work_order' && contextValue) { payload.work_order = contextValue; } if (contextType === 'task' && contextValue) { payload.task = contextValue; } setSubmitting(true); try { await onCreate?.(payload); setNote(''); setNoteDate(''); setContextType('none'); setContextValue(''); setAudience('self'); setTargetUsers([]); } finally { setSubmitting(false); } } return (

Bilješke i podsjetnici u servisnom kontekstu