@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@medusajs/dashboard": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
fix(dashboard): edit rules clear and reset
|
||||||
+1
@@ -53,6 +53,7 @@ export const EditRulesForm = ({
|
|||||||
setRulesToRemove={setRulesToRemove}
|
setRulesToRemove={setRulesToRemove}
|
||||||
rulesToRemove={rulesToRemove}
|
rulesToRemove={rulesToRemove}
|
||||||
promotion={promotion}
|
promotion={promotion}
|
||||||
|
formType="edit"
|
||||||
/>
|
/>
|
||||||
</RouteDrawer.Body>
|
</RouteDrawer.Body>
|
||||||
|
|
||||||
|
|||||||
+16
-1
@@ -1,7 +1,7 @@
|
|||||||
import { XMarkMini } from "@medusajs/icons"
|
import { XMarkMini } from "@medusajs/icons"
|
||||||
import { PromotionDTO } from "@medusajs/types"
|
import { PromotionDTO } from "@medusajs/types"
|
||||||
import { Badge, Button, Heading, IconButton, Select, Text } from "@medusajs/ui"
|
import { Badge, Button, Heading, IconButton, Select, Text } from "@medusajs/ui"
|
||||||
import { forwardRef, Fragment, useEffect } from "react"
|
import { forwardRef, Fragment, useEffect, useRef } from "react"
|
||||||
import {
|
import {
|
||||||
ControllerRenderProps,
|
ControllerRenderProps,
|
||||||
useFieldArray,
|
useFieldArray,
|
||||||
@@ -29,6 +29,7 @@ type RulesFormFieldType = {
|
|||||||
| "application_method.buy_rules"
|
| "application_method.buy_rules"
|
||||||
| "rules"
|
| "rules"
|
||||||
| "application_method.target_rules"
|
| "application_method.target_rules"
|
||||||
|
formType?: "create" | "edit"
|
||||||
}
|
}
|
||||||
|
|
||||||
export const RulesFormField = ({
|
export const RulesFormField = ({
|
||||||
@@ -38,7 +39,10 @@ export const RulesFormField = ({
|
|||||||
rulesToRemove,
|
rulesToRemove,
|
||||||
scope = "rules",
|
scope = "rules",
|
||||||
promotion,
|
promotion,
|
||||||
|
formType = "create",
|
||||||
}: RulesFormFieldType) => {
|
}: RulesFormFieldType) => {
|
||||||
|
const initialRulesSet = useRef(false)
|
||||||
|
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const formData = form.getValues()
|
const formData = form.getValues()
|
||||||
const { attributes } = usePromotionRuleAttributes(
|
const { attributes } = usePromotionRuleAttributes(
|
||||||
@@ -93,6 +97,14 @@ export const RulesFormField = ({
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This effect sets rules after mount but since it is reused in create and edit flows, prevent this hook from recreating rules
|
||||||
|
* when fields are intentionally set to empty (e.g. "Clear all" is pressed).
|
||||||
|
*/
|
||||||
|
if (!fields.length && formType === "edit" && initialRulesSet.current) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if (ruleType === "rules" && !fields.length) {
|
if (ruleType === "rules" && !fields.length) {
|
||||||
form.resetField("rules")
|
form.resetField("rules")
|
||||||
|
|
||||||
@@ -118,11 +130,14 @@ export const RulesFormField = ({
|
|||||||
|
|
||||||
replace(generateRuleAttributes(rulesToAppend) as any)
|
replace(generateRuleAttributes(rulesToAppend) as any)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
initialRulesSet.current = true
|
||||||
}, [
|
}, [
|
||||||
promotionType,
|
promotionType,
|
||||||
isLoading,
|
isLoading,
|
||||||
ruleType,
|
ruleType,
|
||||||
fields.length,
|
fields.length,
|
||||||
|
formType,
|
||||||
form,
|
form,
|
||||||
replace,
|
replace,
|
||||||
rules,
|
rules,
|
||||||
|
|||||||
Reference in New Issue
Block a user