Make company address shared component

This commit is contained in:
dominik-zeglen 2020-01-30 14:17:29 +01:00
parent 82909e9067
commit 74ea099824
4 changed files with 26 additions and 25 deletions

View file

@ -17,14 +17,15 @@ import { ShopErrorFragment } from "@saleor/siteSettings/types/ShopErrorFragment"
import getShopErrorMessage from "@saleor/utils/errors/shop";
import { AccountErrorFragment } from "@saleor/customers/types/AccountErrorFragment";
import getAccountErrorMessage from "@saleor/utils/errors/account";
import { SiteSettingsPageFormData } from "../SiteSettingsPage";
import { AddressTypeInput } from "@saleor/customers/types";
interface SiteSettingsAddressProps {
interface CompanyAddressInputProps {
countries: SingleAutocompleteChoiceType[];
data: SiteSettingsPageFormData;
data: AddressTypeInput;
displayCountry: string;
errors: Array<AccountErrorFragment | ShopErrorFragment>;
disabled: boolean;
header: string;
onChange: (event: ChangeEvent) => void;
onCountryChange: (event: ChangeEvent) => void;
}
@ -35,7 +36,7 @@ const useStyles = makeStyles(
overflow: "visible"
}
},
{ name: "SiteSettingsAddress" }
{ name: "CompanyAddressInput" }
);
function getErrorMessage(
@ -49,13 +50,14 @@ function getErrorMessage(
return getShopErrorMessage(err, intl);
}
const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
const CompanyAddressInput: React.FC<CompanyAddressInputProps> = props => {
const {
countries,
data,
disabled,
displayCountry,
errors,
header,
onChange,
onCountryChange
} = props;
@ -77,12 +79,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
return (
<Card className={classes.root}>
<CardTitle
title={intl.formatMessage({
defaultMessage: "Store Information",
description: "section header"
})}
/>
<CardTitle title={header} />
<CardContent>
<TextField
disabled={disabled}
@ -91,7 +88,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({
defaultMessage: "Company"
})}
name={"companyName" as keyof SiteSettingsPageFormData}
name={"companyName" as keyof AddressTypeInput}
onChange={onChange}
value={data.companyName}
fullWidth
@ -104,7 +101,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({
defaultMessage: "Address line 1"
})}
name={"streetAddress1" as keyof SiteSettingsPageFormData}
name={"streetAddress1" as keyof AddressTypeInput}
onChange={onChange}
value={data.streetAddress1}
fullWidth
@ -117,7 +114,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({
defaultMessage: "Address line 2"
})}
name={"streetAddress2" as keyof SiteSettingsPageFormData}
name={"streetAddress2" as keyof AddressTypeInput}
onChange={onChange}
value={data.streetAddress2}
fullWidth
@ -131,7 +128,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({
defaultMessage: "City"
})}
name={"city" as keyof SiteSettingsPageFormData}
name={"city" as keyof AddressTypeInput}
onChange={onChange}
value={data.city}
fullWidth
@ -143,7 +140,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({
defaultMessage: "ZIP / Postal code"
})}
name={"postalCode" as keyof SiteSettingsPageFormData}
name={"postalCode" as keyof AddressTypeInput}
onChange={onChange}
value={data.postalCode}
fullWidth
@ -159,7 +156,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({
defaultMessage: "Country"
})}
name={"country" as keyof SiteSettingsPageFormData}
name={"country" as keyof AddressTypeInput}
onChange={onCountryChange}
value={data.country}
choices={countries}
@ -174,7 +171,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({
defaultMessage: "Country area"
})}
name={"countryArea" as keyof SiteSettingsPageFormData}
name={"countryArea" as keyof AddressTypeInput}
onChange={onChange}
value={data.countryArea}
fullWidth
@ -189,7 +186,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({
defaultMessage: "Phone"
})}
name={"phone" as keyof SiteSettingsPageFormData}
name={"phone" as keyof AddressTypeInput}
value={data.phone}
onChange={onChange}
/>
@ -197,5 +194,5 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
</Card>
);
};
SiteSettingsAddress.displayName = "SiteSettingsAddress";
export default SiteSettingsAddress;
CompanyAddressInput.displayName = "CompanyAddressInput";
export default CompanyAddressInput;

View file

@ -0,0 +1,2 @@
export { default } from "./CompanyAddressInput";
export * from "./CompanyAddressInput";

View file

@ -1,2 +0,0 @@
export { default } from "./SiteSettingsAddress";
export * from "./SiteSettingsAddress";

View file

@ -17,10 +17,10 @@ import { commonMessages, sectionNames } from "@saleor/intl";
import createSingleAutocompleteSelectHandler from "@saleor/utils/handlers/singleAutocompleteSelectChangeHandler";
import { mapCountriesToChoices } from "@saleor/utils/maps";
import { ShopErrorFragment } from "@saleor/siteSettings/types/ShopErrorFragment";
import CompanyAddressInput from "@saleor/components/CompanyAddressInput";
import { maybe } from "../../../misc";
import { AuthorizationKeyType } from "../../../types/globalTypes";
import { SiteSettings_shop } from "../../types/SiteSettings";
import SiteSettingsAddress from "../SiteSettingsAddress/SiteSettingsAddress";
import SiteSettingsDetails from "../SiteSettingsDetails/SiteSettingsDetails";
import SiteSettingsKeys from "../SiteSettingsKeys/SiteSettingsKeys";
import SiteSettingsMailing, {
@ -200,12 +200,16 @@ const SiteSettingsPage: React.FC<SiteSettingsPageProps> = props => {
<FormattedMessage defaultMessage="Email adress you provide here will be used as a contact adress for your customers." />
</Typography>
</div>
<SiteSettingsAddress
<CompanyAddressInput
data={data}
displayCountry={displayCountry}
countries={countryChoices}
errors={[...errors, ...validationErrors]}
disabled={disabled}
header={intl.formatMessage({
defaultMessage: "Store Information",
description: "section header"
})}
onChange={change}
onCountryChange={handleCountryChange}
/>