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 getShopErrorMessage from "@saleor/utils/errors/shop";
import { AccountErrorFragment } from "@saleor/customers/types/AccountErrorFragment"; import { AccountErrorFragment } from "@saleor/customers/types/AccountErrorFragment";
import getAccountErrorMessage from "@saleor/utils/errors/account"; import getAccountErrorMessage from "@saleor/utils/errors/account";
import { SiteSettingsPageFormData } from "../SiteSettingsPage"; import { AddressTypeInput } from "@saleor/customers/types";
interface SiteSettingsAddressProps { interface CompanyAddressInputProps {
countries: SingleAutocompleteChoiceType[]; countries: SingleAutocompleteChoiceType[];
data: SiteSettingsPageFormData; data: AddressTypeInput;
displayCountry: string; displayCountry: string;
errors: Array<AccountErrorFragment | ShopErrorFragment>; errors: Array<AccountErrorFragment | ShopErrorFragment>;
disabled: boolean; disabled: boolean;
header: string;
onChange: (event: ChangeEvent) => void; onChange: (event: ChangeEvent) => void;
onCountryChange: (event: ChangeEvent) => void; onCountryChange: (event: ChangeEvent) => void;
} }
@ -35,7 +36,7 @@ const useStyles = makeStyles(
overflow: "visible" overflow: "visible"
} }
}, },
{ name: "SiteSettingsAddress" } { name: "CompanyAddressInput" }
); );
function getErrorMessage( function getErrorMessage(
@ -49,13 +50,14 @@ function getErrorMessage(
return getShopErrorMessage(err, intl); return getShopErrorMessage(err, intl);
} }
const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => { const CompanyAddressInput: React.FC<CompanyAddressInputProps> = props => {
const { const {
countries, countries,
data, data,
disabled, disabled,
displayCountry, displayCountry,
errors, errors,
header,
onChange, onChange,
onCountryChange onCountryChange
} = props; } = props;
@ -77,12 +79,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
return ( return (
<Card className={classes.root}> <Card className={classes.root}>
<CardTitle <CardTitle title={header} />
title={intl.formatMessage({
defaultMessage: "Store Information",
description: "section header"
})}
/>
<CardContent> <CardContent>
<TextField <TextField
disabled={disabled} disabled={disabled}
@ -91,7 +88,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({ label={intl.formatMessage({
defaultMessage: "Company" defaultMessage: "Company"
})} })}
name={"companyName" as keyof SiteSettingsPageFormData} name={"companyName" as keyof AddressTypeInput}
onChange={onChange} onChange={onChange}
value={data.companyName} value={data.companyName}
fullWidth fullWidth
@ -104,7 +101,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({ label={intl.formatMessage({
defaultMessage: "Address line 1" defaultMessage: "Address line 1"
})} })}
name={"streetAddress1" as keyof SiteSettingsPageFormData} name={"streetAddress1" as keyof AddressTypeInput}
onChange={onChange} onChange={onChange}
value={data.streetAddress1} value={data.streetAddress1}
fullWidth fullWidth
@ -117,7 +114,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({ label={intl.formatMessage({
defaultMessage: "Address line 2" defaultMessage: "Address line 2"
})} })}
name={"streetAddress2" as keyof SiteSettingsPageFormData} name={"streetAddress2" as keyof AddressTypeInput}
onChange={onChange} onChange={onChange}
value={data.streetAddress2} value={data.streetAddress2}
fullWidth fullWidth
@ -131,7 +128,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({ label={intl.formatMessage({
defaultMessage: "City" defaultMessage: "City"
})} })}
name={"city" as keyof SiteSettingsPageFormData} name={"city" as keyof AddressTypeInput}
onChange={onChange} onChange={onChange}
value={data.city} value={data.city}
fullWidth fullWidth
@ -143,7 +140,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({ label={intl.formatMessage({
defaultMessage: "ZIP / Postal code" defaultMessage: "ZIP / Postal code"
})} })}
name={"postalCode" as keyof SiteSettingsPageFormData} name={"postalCode" as keyof AddressTypeInput}
onChange={onChange} onChange={onChange}
value={data.postalCode} value={data.postalCode}
fullWidth fullWidth
@ -159,7 +156,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({ label={intl.formatMessage({
defaultMessage: "Country" defaultMessage: "Country"
})} })}
name={"country" as keyof SiteSettingsPageFormData} name={"country" as keyof AddressTypeInput}
onChange={onCountryChange} onChange={onCountryChange}
value={data.country} value={data.country}
choices={countries} choices={countries}
@ -174,7 +171,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({ label={intl.formatMessage({
defaultMessage: "Country area" defaultMessage: "Country area"
})} })}
name={"countryArea" as keyof SiteSettingsPageFormData} name={"countryArea" as keyof AddressTypeInput}
onChange={onChange} onChange={onChange}
value={data.countryArea} value={data.countryArea}
fullWidth fullWidth
@ -189,7 +186,7 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
label={intl.formatMessage({ label={intl.formatMessage({
defaultMessage: "Phone" defaultMessage: "Phone"
})} })}
name={"phone" as keyof SiteSettingsPageFormData} name={"phone" as keyof AddressTypeInput}
value={data.phone} value={data.phone}
onChange={onChange} onChange={onChange}
/> />
@ -197,5 +194,5 @@ const SiteSettingsAddress: React.FC<SiteSettingsAddressProps> = props => {
</Card> </Card>
); );
}; };
SiteSettingsAddress.displayName = "SiteSettingsAddress"; CompanyAddressInput.displayName = "CompanyAddressInput";
export default SiteSettingsAddress; 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 createSingleAutocompleteSelectHandler from "@saleor/utils/handlers/singleAutocompleteSelectChangeHandler";
import { mapCountriesToChoices } from "@saleor/utils/maps"; import { mapCountriesToChoices } from "@saleor/utils/maps";
import { ShopErrorFragment } from "@saleor/siteSettings/types/ShopErrorFragment"; import { ShopErrorFragment } from "@saleor/siteSettings/types/ShopErrorFragment";
import CompanyAddressInput from "@saleor/components/CompanyAddressInput";
import { maybe } from "../../../misc"; import { maybe } from "../../../misc";
import { AuthorizationKeyType } from "../../../types/globalTypes"; import { AuthorizationKeyType } from "../../../types/globalTypes";
import { SiteSettings_shop } from "../../types/SiteSettings"; import { SiteSettings_shop } from "../../types/SiteSettings";
import SiteSettingsAddress from "../SiteSettingsAddress/SiteSettingsAddress";
import SiteSettingsDetails from "../SiteSettingsDetails/SiteSettingsDetails"; import SiteSettingsDetails from "../SiteSettingsDetails/SiteSettingsDetails";
import SiteSettingsKeys from "../SiteSettingsKeys/SiteSettingsKeys"; import SiteSettingsKeys from "../SiteSettingsKeys/SiteSettingsKeys";
import SiteSettingsMailing, { 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." /> <FormattedMessage defaultMessage="Email adress you provide here will be used as a contact adress for your customers." />
</Typography> </Typography>
</div> </div>
<SiteSettingsAddress <CompanyAddressInput
data={data} data={data}
displayCountry={displayCountry} displayCountry={displayCountry}
countries={countryChoices} countries={countryChoices}
errors={[...errors, ...validationErrors]} errors={[...errors, ...validationErrors]}
disabled={disabled} disabled={disabled}
header={intl.formatMessage({
defaultMessage: "Store Information",
description: "section header"
})}
onChange={change} onChange={change}
onCountryChange={handleCountryChange} onCountryChange={handleCountryChange}
/> />