dstpabuaran.com/resources/js/pages/settings/security.tsx
Yoga Pangestu 166419134f Refactor component imports for consistency and organization
- Updated import paths for various components to align with new directory structure.
- Changed imports from 'row-actions', 'confirm-dialog', 'image-preview-button', and 'file-upload' to their respective new locations in 'data-display', 'dialogs', and 'inputs'.
- Adjusted imports in multiple pages including purchase, restock, transaction, category, customer, product, raw-material, supplier, roles, and settings.
- Ensured all relevant components are imported from their new locations to maintain functionality.
2026-08-07 13:48:46 +07:00

126 lines
5.7 KiB
TypeScript

import { Form, Head } from '@inertiajs/react';
import { useRef } from 'react';
import { toast } from 'sonner';
import SecurityController from '@/actions/App/Http/Controllers/Settings/SecurityController';
import { InputError } from '@/components/ui';
import { PasswordInput } from '@/components/inputs';
import { Button } from '@/components/ui/button';
import { Card, CardContent } from '@/components/ui/card';
import { Label } from '@/components/ui/label';
import { edit } from '@/routes/security';
type Props = {
passwordRules: string;
};
export default function Security(props: Props) {
const passwordInput = useRef<HTMLInputElement>(null);
const currentPasswordInput = useRef<HTMLInputElement>(null);
return (
<>
<Head title="Kata Sandi" />
<h1 className="sr-only">Kata Sandi</h1>
<div className="flex h-full flex-1 flex-col gap-6 overflow-x-auto px-4 md:px-6">
<Form
{...SecurityController.update.form()}
options={{
preserveScroll: true,
}}
resetOnSuccess
onError={() => {
toast.error('Terjadi kesalahan saat menyimpan data. Silakan periksa kembali input Anda.');
}}
>
{({ errors, processing }) => (
<div className="grid gap-6">
<Card>
<CardContent className="grid grid-cols-1 gap-4 md:grid-cols-3">
<div className="grid gap-2">
<Label htmlFor="current_password">
Kata Sandi Saat{' '}
<span className="text-destructive">
*
</span>
</Label>
<PasswordInput
id="current_password"
ref={currentPasswordInput}
name="current_password"
className="mt-1 block w-full"
autoComplete="current-password"
placeholder="Masukkan kata sandi saat ini"
/>
<InputError
message={errors.current_password}
/>
</div>
<div className="grid gap-2">
<Label htmlFor="password">
Kata Sandi Baru{' '}
<span className="text-destructive">
*
</span>
</Label>
<PasswordInput
id="password"
ref={passwordInput}
name="password"
className="mt-1 block w-full"
autoComplete="new-password"
placeholder="Masukkan kata sandi baru"
passwordrules={props.passwordRules}
/>
<InputError message={errors.password} />
</div>
<div className="grid gap-2">
<Label htmlFor="password_confirmation">
Konfirmasi Kata Sandi{' '}
<span className="text-destructive">
*
</span>
</Label>
<PasswordInput
id="password_confirmation"
name="password_confirmation"
className="mt-1 block w-full"
autoComplete="new-password"
placeholder="Ulangi kata sandi baru"
passwordrules={props.passwordRules}
/>
<InputError
message={
errors.password_confirmation
}
/>
</div>
</CardContent>
</Card>
<div className="flex items-center gap-4">
<Button
type="submit"
disabled={processing}
data-test="update-password-button"
>
Simpan
</Button>
</div>
</div>
)}
</Form>
</div>
</>
);
}