From 8cb665e09171c1542b59f051ff83ddd10cd92806 Mon Sep 17 00:00:00 2001 From: Dawid Tarasiuk Date: Tue, 23 Nov 2021 10:03:07 +0100 Subject: [PATCH] Fix assign countries dialogs (#1610) --- src/components/Form/Form.tsx | 11 +++- .../DiscountCountrySelectDialog.tsx | 45 +++++---------- .../DiscountCountrySelectDialog/styles.ts | 13 +++++ .../ShippingZoneCountriesAssignDialog.tsx | 56 ++++++------------- .../styles.ts | 16 ++++++ src/styles/useScrollableDialogStyle.ts | 6 ++ 6 files changed, 74 insertions(+), 73 deletions(-) create mode 100644 src/discounts/components/DiscountCountrySelectDialog/styles.ts create mode 100644 src/shipping/components/ShippingZoneCountriesAssignDialog/styles.ts diff --git a/src/components/Form/Form.tsx b/src/components/Form/Form.tsx index 88d893e22..28280163d 100644 --- a/src/components/Form/Form.tsx +++ b/src/components/Form/Form.tsx @@ -1,7 +1,8 @@ import useForm, { SubmitPromise, UseFormResult } from "@saleor/hooks/useForm"; import React from "react"; -export interface FormProps { +export interface FormProps + extends Omit, "onSubmit"> { children: (props: UseFormResult) => React.ReactNode; confirmLeave?: boolean; initial?: T; @@ -10,7 +11,7 @@ export interface FormProps { } function Form(props: FormProps) { - const { children, initial, resetOnSubmit, onSubmit } = props; + const { children, initial, resetOnSubmit, onSubmit, ...rest } = props; const renderProps = useForm(initial, onSubmit); function handleSubmit(event?: React.FormEvent, cb?: () => void) { @@ -32,7 +33,11 @@ function Form(props: FormProps) { submit(); } - return
{children(renderProps)}
; + return ( +
+ {children(renderProps)} +
+ ); } Form.displayName = "Form"; diff --git a/src/discounts/components/DiscountCountrySelectDialog/DiscountCountrySelectDialog.tsx b/src/discounts/components/DiscountCountrySelectDialog/DiscountCountrySelectDialog.tsx index 0761b67ea..58fe83a7e 100644 --- a/src/discounts/components/DiscountCountrySelectDialog/DiscountCountrySelectDialog.tsx +++ b/src/discounts/components/DiscountCountrySelectDialog/DiscountCountrySelectDialog.tsx @@ -21,11 +21,13 @@ import ResponsiveTable from "@saleor/components/ResponsiveTable"; // tslint:disable no-submodule-imports import { ShopInfo_shop_countries } from "@saleor/components/Shop/types/ShopInfo"; import { buttonMessages } from "@saleor/intl"; -import { makeStyles } from "@saleor/macaw-ui"; +import useScrollableDialogStyle from "@saleor/styles/useScrollableDialogStyle"; import { filter } from "fuzzaldrin"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; +import { useStyles } from "./styles"; + interface FormData { allCountries: boolean; countries: string[]; @@ -41,29 +43,6 @@ export interface DiscountCountrySelectDialogProps { onConfirm: (data: FormData) => void; } -const useStyles = makeStyles( - theme => ({ - checkboxCell: { - paddingLeft: 0 - }, - containerTitle: { - padding: theme.spacing(1.25, 0) - }, - container: { - maxHeight: 500, - paddingTop: 0, - marginBottom: theme.spacing(3) - }, - heading: { - marginBottom: theme.spacing(1), - marginTop: theme.spacing(2) - }, - wideCell: { - width: "100%" - } - }), - { name: "DiscountCountrySelectDialog" } -); const DiscountCountrySelectDialog: React.FC = props => { const { confirmButtonState, @@ -74,6 +53,7 @@ const DiscountCountrySelectDialog: React.FC = onConfirm } = props; const classes = useStyles(props); + const scrollableDialogClasses = useScrollableDialogStyle(); const intl = useIntl(); @@ -84,7 +64,11 @@ const DiscountCountrySelectDialog: React.FC = }; return ( -
+ {({ data, change }) => { const countrySelectionMap = countries.reduce((acc, country) => { acc[country.code] = !!data.countries.find( @@ -120,18 +104,17 @@ const DiscountCountrySelectDialog: React.FC = })} fullWidth /> - -
- - - + +
+ +
- + {filter(countries, data.query, { diff --git a/src/discounts/components/DiscountCountrySelectDialog/styles.ts b/src/discounts/components/DiscountCountrySelectDialog/styles.ts new file mode 100644 index 000000000..2ef3625e2 --- /dev/null +++ b/src/discounts/components/DiscountCountrySelectDialog/styles.ts @@ -0,0 +1,13 @@ +import { makeStyles } from "@saleor/macaw-ui"; + +export const useStyles = makeStyles( + { + checkboxCell: { + paddingLeft: 0 + }, + wideCell: { + width: "100%" + } + }, + { name: "DiscountCountrySelectDialog" } +); diff --git a/src/shipping/components/ShippingZoneCountriesAssignDialog/ShippingZoneCountriesAssignDialog.tsx b/src/shipping/components/ShippingZoneCountriesAssignDialog/ShippingZoneCountriesAssignDialog.tsx index 9f8382e94..e65d6ed71 100644 --- a/src/shipping/components/ShippingZoneCountriesAssignDialog/ShippingZoneCountriesAssignDialog.tsx +++ b/src/shipping/components/ShippingZoneCountriesAssignDialog/ShippingZoneCountriesAssignDialog.tsx @@ -20,11 +20,13 @@ import Hr from "@saleor/components/Hr"; import ResponsiveTable from "@saleor/components/ResponsiveTable"; import { ShopInfo_shop_countries } from "@saleor/components/Shop/types/ShopInfo"; import { buttonMessages } from "@saleor/intl"; -import { makeStyles } from "@saleor/macaw-ui"; +import useScrollableDialogStyle from "@saleor/styles/useScrollableDialogStyle"; import { filter } from "fuzzaldrin"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; +import { useStyles } from "./styles"; + interface FormData { countries: string[]; query: string; @@ -41,32 +43,6 @@ export interface ShippingZoneCountriesAssignDialogProps { onConfirm: (data: FormData) => void; } -const useStyles = makeStyles( - theme => ({ - checkboxCell: { - paddingLeft: 0 - }, - heading: { - marginBottom: theme.spacing(2), - marginTop: theme.spacing(2) - }, - container: { - padding: theme.spacing(1.25, 0) - }, - scrollAreaContainer: { - maxHeight: 400, - padding: theme.spacing(1.25, 0), - marginBottom: theme.spacing(3) - }, - table: { - border: "1px solid " + theme.palette.grey[200] - }, - wideCell: { - width: "100%" - } - }), - { name: "ShippingZoneCountriesAssignDialog" } -); const ShippingZoneCountriesAssignDialog: React.FC = props => { const { confirmButtonState, @@ -79,6 +55,7 @@ const ShippingZoneCountriesAssignDialog: React.FC - + {({ data, change }) => { const countrySelectionMap = countries.reduce((acc, country) => { acc[country.code] = !!data.countries.find( @@ -122,13 +103,13 @@ const ShippingZoneCountriesAssignDialog: React.FC - -
- - - + +
+ + + @@ -157,18 +138,15 @@ const ShippingZoneCountriesAssignDialog: React.FC -
- - - + + - - + {filter(countries, data.query, { diff --git a/src/shipping/components/ShippingZoneCountriesAssignDialog/styles.ts b/src/shipping/components/ShippingZoneCountriesAssignDialog/styles.ts new file mode 100644 index 000000000..99317cecf --- /dev/null +++ b/src/shipping/components/ShippingZoneCountriesAssignDialog/styles.ts @@ -0,0 +1,16 @@ +import { makeStyles } from "@saleor/macaw-ui"; + +export const useStyles = makeStyles( + theme => ({ + checkboxCell: { + paddingLeft: 0 + }, + table: { + border: "1px solid " + theme.palette.grey[200] + }, + wideCell: { + width: "100%" + } + }), + { name: "ShippingZoneCountriesAssignDialog" } +); diff --git a/src/styles/useScrollableDialogStyle.ts b/src/styles/useScrollableDialogStyle.ts index 5749b554f..96a430def 100644 --- a/src/styles/useScrollableDialogStyle.ts +++ b/src/styles/useScrollableDialogStyle.ts @@ -6,6 +6,12 @@ const useScrollableDialogStyle = makeStyles( height: "calc(100% - 64px)", maxHeight: 700 }, + form: { + display: "flex", + flexDirection: "column", + height: "100%", + overflowY: "auto" + }, loadMoreLoaderContainer: { alignItems: "center", display: "flex",