diff --git a/locale/defaultMessages.json b/locale/defaultMessages.json index a8d3eec62..85964da77 100644 --- a/locale/defaultMessages.json +++ b/locale/defaultMessages.json @@ -5283,6 +5283,10 @@ "src_dot_shipping_dot_components_dot_ShippingZonesList_dot_655374584": { "string": "No shipping zones found" }, + "src_dot_shipping_dot_invalid": { + "context": "error message", + "string": "Value is invalid" + }, "src_dot_shipping_dot_price": { "context": "error message", "string": "Maximum price cannot be lower than minimum" diff --git a/src/shipping/components/OrderValue/OrderValue.tsx b/src/shipping/components/OrderValue/OrderValue.tsx index 28b846fcc..e5bfd0585 100644 --- a/src/shipping/components/OrderValue/OrderValue.tsx +++ b/src/shipping/components/OrderValue/OrderValue.tsx @@ -164,6 +164,7 @@ export const OrderValue: React.FC = ({ })} name={`maxValue:${channel.name}`} value={channel.maxValue} + InputProps={{ inputProps: { min: channel.minValue } }} onChange={e => onChannelsChange(channel.id, { ...channel, diff --git a/src/shipping/components/OrderWeight/OrderWeight.tsx b/src/shipping/components/OrderWeight/OrderWeight.tsx index 6e29a52ba..a7a2571f7 100644 --- a/src/shipping/components/OrderWeight/OrderWeight.tsx +++ b/src/shipping/components/OrderWeight/OrderWeight.tsx @@ -74,13 +74,18 @@ export const OrderWeight: React.FC = ({ formErrors.minimumOrderWeight, intl )} - error={!!formErrors.maximumOrderWeight} + error={!!formErrors.minimumOrderWeight} fullWidth label={intl.formatMessage({ defaultMessage: "Min. Order Weight" })} name="minValue" type="number" + inputProps={{ + min: 0, + type: "number" + }} + InputProps={{ inputProps: { min: 0 } }} value={minValue} onChange={onChange} /> @@ -97,6 +102,7 @@ export const OrderWeight: React.FC = ({ })} name="maxValue" type="number" + InputProps={{ inputProps: { min: minValue } }} value={maxValue} onChange={onChange} /> diff --git a/src/shipping/components/ShippingZoneRatesPage/ShippingZoneRatesPage.tsx b/src/shipping/components/ShippingZoneRatesPage/ShippingZoneRatesPage.tsx index 0384e299b..289847826 100644 --- a/src/shipping/components/ShippingZoneRatesPage/ShippingZoneRatesPage.tsx +++ b/src/shipping/components/ShippingZoneRatesPage/ShippingZoneRatesPage.tsx @@ -64,6 +64,7 @@ export const ShippingZoneRatesPage: React.FC = ({ variant }) => { const intl = useIntl(); + const isPriceVariant = variant === ShippingMethodTypeEnum.PRICE; const initialForm: FormData = { channelListings: shippingChannels, maxValue: rate?.maximumOrderWeight?.value.toString() || "", @@ -81,11 +82,8 @@ export const ShippingZoneRatesPage: React.FC = ({ onChannelsChange, triggerChange ); - const formDisabled = data.channelListings?.some( - channel => - validatePrice(channel.minValue) || - validatePrice(channel.maxValue) || - validatePrice(channel.price) + const formDisabled = data.channelListings?.some(channel => + validatePrice(channel.price) ); return ( @@ -96,7 +94,7 @@ export const ShippingZoneRatesPage: React.FC = ({ = ({ onChange={change} /> - {variant === ShippingMethodTypeEnum.PRICE ? ( + {isPriceVariant ? ( = ({ id }) => { onCompleted: data => { const errors = data.shippingMethodChannelListingUpdate.errors; if (errors.length === 0) { + notify({ + status: "success", + text: intl.formatMessage(commonMessages.savedChanges) + }); navigate( shippingPriceRatesEditUrl( id, @@ -83,13 +86,6 @@ export const PriceRatesCreate: React.FC = ({ id }) => { data.channelListings ) }); - } else { - errors.map(err => - notify({ - status: "error", - text: getShippingErrorMessage(err, intl) - }) - ); } }; const handleBack = () => navigate(shippingZoneUrl(id)); diff --git a/src/shipping/views/PriceRatesUpdate/PriceRatesUpdate.tsx b/src/shipping/views/PriceRatesUpdate/PriceRatesUpdate.tsx index 0f5b8da73..121669bb1 100644 --- a/src/shipping/views/PriceRatesUpdate/PriceRatesUpdate.tsx +++ b/src/shipping/views/PriceRatesUpdate/PriceRatesUpdate.tsx @@ -26,7 +26,6 @@ import { import { useShippingZone } from "@saleor/shipping/queries"; import { shippingZoneUrl } from "@saleor/shipping/urls"; import { ShippingMethodTypeEnum } from "@saleor/types/globalTypes"; -import getShippingErrorMessage from "@saleor/utils/errors/shipping"; import React from "react"; import { useIntl } from "react-intl"; @@ -113,13 +112,6 @@ export const PriceRatesUpdate: React.FC = ({ shippingChannels ) }); - } else { - errors.map(err => - notify({ - status: "error", - text: getShippingErrorMessage(err, intl) - }) - ); } }; diff --git a/src/shipping/views/WeightRatesCreate/WeightRatesCreate.tsx b/src/shipping/views/WeightRatesCreate/WeightRatesCreate.tsx index c509ee5d2..b8b43880c 100644 --- a/src/shipping/views/WeightRatesCreate/WeightRatesCreate.tsx +++ b/src/shipping/views/WeightRatesCreate/WeightRatesCreate.tsx @@ -8,7 +8,7 @@ import { WindowTitle } from "@saleor/components/WindowTitle"; import useChannels from "@saleor/hooks/useChannels"; import useNavigator from "@saleor/hooks/useNavigator"; import useNotifier from "@saleor/hooks/useNotifier"; -import { sectionNames } from "@saleor/intl"; +import { commonMessages, sectionNames } from "@saleor/intl"; import { FormData } from "@saleor/shipping/components/ShippingZoneRatesPage"; import ShippingZoneRatesPage from "@saleor/shipping/components/ShippingZoneRatesPage"; import { @@ -22,7 +22,6 @@ import { shippingZoneUrl } from "@saleor/shipping/urls"; import { ShippingMethodTypeEnum } from "@saleor/types/globalTypes"; -import getShippingErrorMessage from "@saleor/utils/errors/shipping"; import React from "react"; import { useIntl } from "react-intl"; @@ -44,6 +43,10 @@ export const WeightRatesCreate: React.FC = ({ id }) => { onCompleted: data => { const errors = data.shippingMethodChannelListingUpdate.errors; if (errors.length === 0) { + notify({ + status: "success", + text: intl.formatMessage(commonMessages.savedChanges) + }); navigate( shippingWeightRatesEditUrl( id, @@ -87,13 +90,6 @@ export const WeightRatesCreate: React.FC = ({ id }) => { data.channelListings ) }); - } else { - errors.map(err => - notify({ - status: "error", - text: getShippingErrorMessage(err, intl) - }) - ); } }; diff --git a/src/shipping/views/WeightRatesUpdate/WeightRatesUpdate.tsx b/src/shipping/views/WeightRatesUpdate/WeightRatesUpdate.tsx index ebe8c19d7..714079cd5 100644 --- a/src/shipping/views/WeightRatesUpdate/WeightRatesUpdate.tsx +++ b/src/shipping/views/WeightRatesUpdate/WeightRatesUpdate.tsx @@ -26,7 +26,6 @@ import { useShippingMethodChannelListingUpdate } from "@saleor/shipping/mutation import { useShippingZone } from "@saleor/shipping/queries"; import { shippingZoneUrl } from "@saleor/shipping/urls"; import { ShippingMethodTypeEnum } from "@saleor/types/globalTypes"; -import getShippingErrorMessage from "@saleor/utils/errors/shipping"; import React from "react"; import { useIntl } from "react-intl"; @@ -113,13 +112,6 @@ export const WeightRatesUpdate: React.FC = ({ shippingChannels ) }); - } else { - errors.map(err => - notify({ - status: "error", - text: getShippingErrorMessage(err, intl) - }) - ); } }; diff --git a/src/storybook/__snapshots__/Stories.test.ts.snap b/src/storybook/__snapshots__/Stories.test.ts.snap index 79275d959..89314b54c 100644 --- a/src/storybook/__snapshots__/Stories.test.ts.snap +++ b/src/storybook/__snapshots__/Stories.test.ts.snap @@ -12425,7 +12425,7 @@ exports[`Storyshots Shipping / Order value rates default 1`] = ` +

+ Value is invalid +

+

+ Value is invalid +

@@ -13109,6 +13123,7 @@ exports[`Storyshots Shipping / Order weight rates loading 1`] = ` aria-invalid="false" class="MuiInputBase-input-id MuiOutlinedInput-input-id MuiInputBase-disabled-id MuiOutlinedInput-disabled-id" disabled="" + min="0" name="minValue" type="number" value="1" @@ -13145,6 +13160,7 @@ exports[`Storyshots Shipping / Order weight rates loading 1`] = ` aria-invalid="false" class="MuiInputBase-input-id MuiOutlinedInput-input-id MuiInputBase-disabled-id MuiOutlinedInput-disabled-id" disabled="" + min="1" name="maxValue" type="number" value="2" @@ -13262,6 +13278,7 @@ exports[`Storyshots Shipping / Order weight rates new 1`] = `