feat: enhance DoctorFormPage with searchable specialties and improved UI components
- Refactored DoctorFormPage to use Controller from react-hook-form for better form handling. - Added a new Field component for consistent input styling and error handling. - Implemented a SpecialtyPicker component with improved selection logic for specialties. - Updated the layout and styling of the form sections for better user experience. - Integrated SearchableSelect for selecting specialties and roles in DoctorsPage and UsersPage. - Added createClinic API endpoint to handle clinic creation with validation for mobile and name fields.
This commit is contained in:
@@ -10,6 +10,7 @@ import { formatDate, formatDateTime } from '../lib/utils';
|
||||
import PageHeader from '../components/ui/PageHeader';
|
||||
import StatusBadge from '../components/ui/StatusBadge';
|
||||
import ConfirmDialog from '../components/ui/ConfirmDialog';
|
||||
import SearchableSelect from '../components/ui/SearchableSelect';
|
||||
|
||||
const ALL_STATUSES: { value: AppointmentStatus; label: string }[] = [
|
||||
{ value: 'pending', label: 'رزرو شده' },
|
||||
@@ -112,16 +113,15 @@ export default function AppointmentDetailPage() {
|
||||
<div className="mt-6">
|
||||
<label className="cp-label mb-2">تغییر وضعیت:</label>
|
||||
<div className="flex gap-2">
|
||||
<select
|
||||
value={newStatus}
|
||||
onChange={(e) => setNewStatus(e.target.value)}
|
||||
className="cp-input flex-1"
|
||||
>
|
||||
<option value="">انتخاب وضعیت...</option>
|
||||
{ALL_STATUSES.map((s) => (
|
||||
<option key={s.value} value={s.value}>{s.label}</option>
|
||||
))}
|
||||
</select>
|
||||
<div style={{ flex: 1 }}>
|
||||
<SearchableSelect
|
||||
options={ALL_STATUSES.map(s => ({ value: s.value, label: s.label }))}
|
||||
value={newStatus || null}
|
||||
onChange={(v) => setNewStatus(v ? String(v) : '')}
|
||||
placeholder="انتخاب وضعیت..."
|
||||
isClearable
|
||||
/>
|
||||
</div>
|
||||
<button
|
||||
onClick={() => newStatus && statusMutation.mutate(newStatus)}
|
||||
disabled={!newStatus || statusMutation.isPending}
|
||||
|
||||
Reference in New Issue
Block a user