feat: indicates not saved changes on steps editor's screen
This commit is contained in:
@@ -225,24 +225,27 @@ export default function CaseEditor({
|
|||||||
</Tooltip>
|
</Tooltip>
|
||||||
<h3 className="font-bold ms-2">{testCase.title}</h3>
|
<h3 className="font-bold ms-2">{testCase.title}</h3>
|
||||||
</div>
|
</div>
|
||||||
<Button
|
<div className="flex items-center">
|
||||||
startContent={<Save size={16} />}
|
{isDirty && <Circle size={8} color="#525252" fill="#525252" className="me-1" />}
|
||||||
size="sm"
|
<Button
|
||||||
isDisabled={!context.isProjectDeveloper(Number(projectId))}
|
startContent={<Save size={16} />}
|
||||||
color="primary"
|
size="sm"
|
||||||
isLoading={isUpdating}
|
isDisabled={!context.isProjectDeveloper(Number(projectId))}
|
||||||
onPress={async () => {
|
color="primary"
|
||||||
setIsUpdating(true);
|
isLoading={isUpdating}
|
||||||
await updateCase(context.token.access_token, testCase);
|
onPress={async () => {
|
||||||
if (testCase.Steps) {
|
setIsUpdating(true);
|
||||||
await updateSteps(context.token.access_token, Number(caseId), testCase.Steps);
|
await updateCase(context.token.access_token, testCase);
|
||||||
}
|
if (testCase.Steps) {
|
||||||
setIsUpdating(false);
|
await updateSteps(context.token.access_token, Number(caseId), testCase.Steps);
|
||||||
setIsDirty(false);
|
}
|
||||||
}}
|
setIsUpdating(false);
|
||||||
>
|
setIsDirty(false);
|
||||||
{isUpdating ? messages.updating : messages.update}
|
}}
|
||||||
</Button>
|
>
|
||||||
|
{isUpdating ? messages.updating : messages.update}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="p-5">
|
<div className="p-5">
|
||||||
@@ -375,7 +378,7 @@ export default function CaseEditor({
|
|||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div>
|
<div>
|
||||||
<div className="flex items-center">
|
<div className="flex items-center mb-3">
|
||||||
<h6 className="font-bold">{messages.steps}</h6>
|
<h6 className="font-bold">{messages.steps}</h6>
|
||||||
<Button
|
<Button
|
||||||
startContent={<Plus size={16} />}
|
startContent={<Plus size={16} />}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Textarea, Button, Tooltip } from '@nextui-org/react';
|
import { Textarea, Button, Tooltip, Avatar } from '@nextui-org/react';
|
||||||
import { CaseMessages, StepType } from '@/types/case';
|
import { CaseMessages, StepType } from '@/types/case';
|
||||||
import { Plus, Trash } from 'lucide-react';
|
import { Plus, Trash } from 'lucide-react';
|
||||||
|
|
||||||
@@ -25,32 +25,33 @@ export default function StepsEditor({ isDisabled, steps, onStepUpdate, onStepPlu
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{filteredSteps.map((step, index) => (
|
{filteredSteps.map((step, index) => (
|
||||||
<div key={index} className="flex">
|
<div key={index} className="flex items-center my-1">
|
||||||
<div className="bg-neutral-50 dark:bg-neutral-600 rounded-full flex items-center justify-center min-w-unit-8 w-unit-8 h-unit-8 mt-3 me-2">
|
<Avatar className="me-2" size="sm" name={step.caseSteps.stepNo.toString()} />
|
||||||
<div>{step.caseSteps.stepNo}</div>
|
<div key={step.id} className="grow flex gap-2">
|
||||||
|
<div className="w-1/2">
|
||||||
|
<Textarea
|
||||||
|
size="sm"
|
||||||
|
variant="bordered"
|
||||||
|
label={messages.detailsOfTheStep}
|
||||||
|
value={step.step}
|
||||||
|
onValueChange={(changeValue) => {
|
||||||
|
onStepUpdate(step.id, { ...step, step: changeValue, editState: 'changed' });
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="w-1/2">
|
||||||
|
<Textarea
|
||||||
|
size="sm"
|
||||||
|
variant="bordered"
|
||||||
|
label={messages.expectedResult}
|
||||||
|
value={step.result}
|
||||||
|
onValueChange={(changeValue) => {
|
||||||
|
onStepUpdate(step.id, { ...step, result: changeValue, editState: 'changed' });
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Textarea
|
<div className="flex flex-col">
|
||||||
size="sm"
|
|
||||||
variant="bordered"
|
|
||||||
label={messages.detailsOfTheStep}
|
|
||||||
value={step.step}
|
|
||||||
onValueChange={(changeValue) => {
|
|
||||||
onStepUpdate(step.id, { ...step, step: changeValue, editState: 'changed' });
|
|
||||||
}}
|
|
||||||
className="mt-3 me-1"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Textarea
|
|
||||||
size="sm"
|
|
||||||
variant="bordered"
|
|
||||||
label={messages.expectedResult}
|
|
||||||
value={step.result}
|
|
||||||
onValueChange={(changeValue) => {
|
|
||||||
onStepUpdate(step.id, { ...step, result: changeValue, editState: 'changed' });
|
|
||||||
}}
|
|
||||||
className="mt-3 ms-1"
|
|
||||||
/>
|
|
||||||
<div className="mt-3 ms-1">
|
|
||||||
<Tooltip content={messages.deleteThisStep} placement="left">
|
<Tooltip content={messages.deleteThisStep} placement="left">
|
||||||
<Button
|
<Button
|
||||||
isIconOnly
|
isIconOnly
|
||||||
|
|||||||
Reference in New Issue
Block a user