refactor(kependudukan): improve TypeScript types and clean up code

- Add proper TypeScript interfaces for seeder files
- Rename MigrasiPendudukForm interface for consistency
- Separate asal/tujuan fields in MigrasiPenduduk API based on jenis
- Remove unnecessary eslint-disable comments
- Add local type definitions for public kependudukan pages
- Clean up unused imports (React, Flex, IconBuilding)
- Improve type safety in form handlers (handleChangeText vs handleChangeSelect)
- Add explicit type casting where needed to fix type errors

Co-authored-by: Qwen Code

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
2026-04-13 15:00:33 +08:00
parent d84edc44f5
commit 80186bf493
28 changed files with 213 additions and 134 deletions

View File

@@ -20,7 +20,7 @@ import { toast } from 'react-toastify';
import { useProxy } from 'valtio/utils';
import distribusiUmur from '../../../_state/kependudukan/distribusi-umur';
interface FormData {
interface DistribusiUmurForm {
rentangUmur: string;
jumlah: number;
tahun: number;
@@ -31,12 +31,12 @@ export default function EditDistribusiUmur() {
const { id } = useParams() as { id: string };
const stateDistribusiUmur = useProxy(distribusiUmur);
const [isSubmitting, setIsSubmitting] = useState(false);
const [formData, setFormData] = useState<FormData>({
const [formData, setFormData] = useState<DistribusiUmurForm>({
rentangUmur: '',
jumlah: 0,
tahun: new Date().getFullYear(),
});
const [originalData, setOriginalData] = useState<FormData>({
const [originalData, setOriginalData] = useState<DistribusiUmurForm>({
rentangUmur: '',
jumlah: 0,
tahun: new Date().getFullYear(),
@@ -78,7 +78,7 @@ export default function EditDistribusiUmur() {
stateDistribusiUmur.update.id = id;
await stateDistribusiUmur.findUnique.load(id);
const data = stateDistribusiUmur.findUnique.data;
const data = stateDistribusiUmur.findUnique.data as DistribusiUmurForm | null;
if (data) {
setFormData({
rentangUmur: data.rentangUmur ?? '',
@@ -102,15 +102,18 @@ export default function EditDistribusiUmur() {
loadData();
}, [id]);
const handleChange = useCallback(
(field: keyof FormData) =>
(value: any) => {
const val =
field === 'jumlah' || field === 'tahun'
? Number(value || 0)
: value;
const handleChangeNumber = useCallback(
(field: keyof DistribusiUmurForm) =>
(value: string | number) => {
setFormData((prev) => ({ ...prev, [field]: (typeof value === 'string' ? Number(value) || 0 : (value ?? 0)) as never }));
},
[]
);
setFormData((prev) => ({ ...prev, [field]: val }));
const handleChangeSelect = useCallback(
(field: keyof DistribusiUmurForm) =>
(value: string | null) => {
setFormData((prev) => ({ ...prev, [field]: (value || '') as never }));
},
[]
);
@@ -174,7 +177,7 @@ export default function EditDistribusiUmur() {
placeholder="Pilih rentang umur"
data={rentangUmurOptions}
value={formData.rentangUmur}
onChange={handleChange('rentangUmur')}
onChange={handleChangeSelect('rentangUmur')}
required
searchable
/>
@@ -183,7 +186,7 @@ export default function EditDistribusiUmur() {
label="Jumlah"
placeholder="Masukkan jumlah"
value={formData.jumlah}
onChange={handleChange('jumlah')}
onChange={handleChangeNumber('jumlah')}
min={0}
required
/>
@@ -193,7 +196,7 @@ export default function EditDistribusiUmur() {
placeholder="Pilih tahun"
data={yearOptions}
value={String(formData.tahun)}
onChange={handleChange('tahun')}
onChange={handleChangeSelect('tahun')}
required
/>