add reset field dependency

This commit is contained in:
faiztyanirh 2026-02-24 10:25:07 +07:00
parent 795251d911
commit 62b1d9fe45
4 changed files with 91 additions and 64 deletions

View File

@ -16,9 +16,9 @@
let props = $props();
let previousTestType = $state('');
let resetRefNum = $state();
let previousRefType = $state('');
let resetRefTxt = $state();
const { masterDetail, formFields, formActions, schema, initialForm } = props.context;
@ -225,30 +225,68 @@
})
});
$effect(() => {
const currentTestType = formState.form.TestType;
if (previousTestType && currentTestType !== previousTestType) {
calFormState.reset();
refNumState.reset();
refTxtState.reset();
}
previousTestType = currentTestType;
});
function handleTestTypeChange(value) {
formState.form.TestType = value;
//masih error cek dulu
$effect(() => {
const currentRefType = formState.form.RefType;
if (previousRefType && currentRefType !== previousRefType) {
console.log('rst');
refNumState.reset();
refTxtState.reset();
formState.form.ResultType = "";
formState.errors.ResultType = null;
formState.form.RefType = "";
formState.errors.RefType = null;
calFormState.reset();
refNumState.reset();
refTxtState.reset();
resetRefNum?.();
resetRefTxt?.();
}
function handleResultTypeChange(value) {
formState.form.ResultType = value;
formState.form.RefType = "";
formState.errors.RefType = null;
calFormState.reset();
refNumState.reset();
refTxtState.reset();
resetRefNum?.();
resetRefTxt?.();
let newRefType = "";
if (value === 'TEXT') {
newRefType = 'TEXT';
}
if (value === 'VSET') {
newRefType = 'VSET';
}
if (value === 'NORES') {
newRefType = 'NOREF';
}
previousRefType = currentRefType;
});
if (newRefType) {
formState.form.RefType = newRefType;
handleRefTypeChange(newRefType);
}
}
function handleRefTypeChange(value) {
formState.form.RefType = value;
refNumState.reset();
refTxtState.reset();
resetRefNum?.();
resetRefTxt?.();
if (value === 'RANGE' || value === 'THOLD') {
refNumState.form.NumRefType = value;
}
if (value === 'TEXT' || value === 'VSET') {
refTxtState.form.TxtRefType = value;
}
}
</script>
<FormPageContainer title="Create Test" {primaryAction} {secondaryActions} {actions}>
@ -278,6 +316,9 @@
{disabledResultTypes}
{disabledReferenceTypes}
{hiddenFields}
{handleTestTypeChange}
{handleResultTypeChange}
{handleRefTypeChange}
/>
</Tabs.Content>
<Tabs.Content value="calculation">
@ -292,9 +333,9 @@
<Tabs.Content value="reference">
<div class="w-full h-full flex items-start">
{#if refComponent === 'numeric'}
<RefNum {refNumState} {refNumFormFields} refType={formState.form.RefType}/>
<RefNum {refNumState} {refNumFormFields} bind:resetRefNum={resetRefNum}/>
{:else if refComponent === 'text'}
<RefTxt {refTxtState} refTxtFormFields={refTxtFormFieldsTransformed} refType={formState.form.RefType}/>
<RefTxt {refTxtState} refTxtFormFields={refTxtFormFieldsTransformed} bind:resetRefTxt={resetRefTxt} />
{:else}
<div class="h-full w-full flex items-center">
<ReusableEmpty desc="Select a Reference Type" />

View File

@ -9,12 +9,16 @@
import Trash2Icon from "@lucide/svelte/icons/trash-2";
import { untrack } from "svelte";
let props = $props();
let { resetRefNum = $bindable(), ...props } = $props()
let tempNumeric = $state([]);
let editingId = $state(null);
let idCounter = $state(0);
resetRefNum = () => {
tempNumeric = [];
};
let joinFields = $state({
AgeStart: { DD: "", MM: "", YY: "" },
AgeEnd: { DD: "", MM: "", YY: "" },
@ -129,12 +133,6 @@
return "-";
};
$effect(() => {
if (props.refType) {
props.refNumState.form.NumRefType = props.refType;
}
});
$effect(() => {
for (const key of ["AgeStart", "AgeEnd"]) {
props.refNumState.form[key] =

View File

@ -9,12 +9,16 @@
import Trash2Icon from "@lucide/svelte/icons/trash-2";
import { untrack } from "svelte";
let props = $props();
let { resetRefTxt = $bindable(), ...props } = $props()
let tempTxt = $state([]);
let editingId = $state(null);
let idCounter = $state(0);
resetRefTxt = () => {
tempTxt = [];
};
let joinFields = $state({
AgeStart: { DD: "", MM: "", YY: "" },
AgeEnd: { DD: "", MM: "", YY: "" },
@ -101,11 +105,11 @@
const txtRefTypeBadge = (type) => ({ TEXT: "TX", VSET: "VS" }[type] ?? null);;
$effect(() => {
if (props.refType) {
props.refTxtState.form.TxtRefType = props.refType;
}
});
// $effect(() => {
// if (props.refType) {
// props.refTxtState.form.TxtRefType = props.refType;
// }
// });
$effect(() => {
for (const key of ["AgeStart", "AgeEnd"]) {

View File

@ -21,6 +21,9 @@
disabledSign = false,
joinFields = $bindable(),
hiddenFields,
handleTestTypeChange,
handleResultTypeChange,
handleRefTypeChange,
} = $props();
let searchQuery = $state({});
@ -155,6 +158,9 @@
if (validateOn?.includes("input")) {
formState.validateField?.(key, formState.form[key], false);
}
if (key === "TestType") {
handleTestTypeChange(val);
}
if (key === "Province") {
formState.form.City = "";
if (formState.selectOptions) {
@ -164,33 +170,11 @@
formState.lastFetched.City = null;
}
}
if (key === "TestType") {
formState.form[key] = val;
formState.form.ResultType = "";
formState.errors.ResultType = null;
formState.form.RefType = "";
formState.errors.RefType = null;
if (val === 'CALC') {
formState.form.ResultType = 'NMRIC';
}
}
if (key === "ResultType") {
formState.form[key] = val;
formState.form.RefType = "";
formState.errors.RefType = null;
if (val === 'TEXT') {
formState.form.RefType = 'TEXT';
}
if (val === 'VSET') {
formState.form.RefType = 'VSET';
}
if (val === 'NORES') {
formState.form.RefType = 'NOREF';
}
handleResultTypeChange(val);
}
if (key === "RefType") {
handleRefTypeChange(val);
}
}}
onOpenChange={(open) => {