Disable set as default if variant is default

This commit is contained in:
dominik-zeglen 2020-10-13 15:43:10 +02:00
parent fca8d7ab28
commit 7d397606f0
14 changed files with 96 additions and 239 deletions

View file

@ -12,6 +12,7 @@ import React from "react";
const ITEM_HEIGHT = 48;
export interface CardMenuItem {
disabled?: boolean;
label: string;
testId?: string;
onSelect: () => void;
@ -118,6 +119,7 @@ const CardMenu: React.FC<CardMenuProps> = props => {
>
{menuItems.map((menuItem, menuItemIndex) => (
<MenuItem
disabled={menuItem.disabled}
onClick={() => handleMenuClick(menuItemIndex)}
key={menuItem.label}
data-test={menuItem.testId}

View file

@ -202,7 +202,7 @@ const SeoForm: React.FC<SeoFormProps> = props => {
}
InputProps={{
inputProps: {
maxlength: maxSlugLength
maxLength: maxSlugLength
}
}}
helperText={getSlugHelperMessage()}
@ -237,7 +237,7 @@ const SeoForm: React.FC<SeoFormProps> = props => {
}
InputProps={{
inputProps: {
maxlength: maxTitleLength
maxLength: maxTitleLength
}
}}
helperText={intl.formatMessage(seoFieldMessage)}
@ -273,7 +273,7 @@ const SeoForm: React.FC<SeoFormProps> = props => {
helperText={intl.formatMessage(seoFieldMessage)}
InputProps={{
inputProps: {
maxlength: maxDescriptionLength
maxLength: maxDescriptionLength
}
}}
value={description}

View file

@ -234,6 +234,9 @@ export const fragmentVariant = gql`
}
product {
id
defaultVariant {
id
}
images {
...ProductImageFragment
}

View file

@ -67,6 +67,11 @@ export interface ProductVariant_price {
currency: string;
}
export interface ProductVariant_product_defaultVariant {
__typename: "ProductVariant";
id: string;
}
export interface ProductVariant_product_images {
__typename: "ProductImage";
id: string;
@ -97,6 +102,7 @@ export interface ProductVariant_product_variants {
export interface ProductVariant_product {
__typename: "Product";
id: string;
defaultVariant: ProductVariant_product_defaultVariant | null;
images: (ProductVariant_product_images | null)[] | null;
name: string;
thumbnail: ProductVariant_product_thumbnail | null;

View file

@ -171,7 +171,11 @@ const ProductVariantPage: React.FC<ProductVariantPageProps> = ({
{maybe(() => variant.product.name)}
</AppHeader>
<PageHeader title={header}>
<ProductVariantSetDefault onSetDefaultVariant={onSetDefaultVariant} />
{variant?.product?.defaultVariant.id !== variant?.id && (
<ProductVariantSetDefault
onSetDefaultVariant={onSetDefaultVariant}
/>
)}
</PageHeader>
<Form initial={initialForm} onSubmit={handleSubmit} confirmLeave>
{({ change, data, hasChanged, submit, triggerChange }) => {

View file

@ -402,9 +402,11 @@ export const ProductVariants: React.FC<ProductVariantsProps> = props => {
data-test="actions"
onClick={e => e.stopPropagation()}
>
<ProductVariantSetDefault
onSetDefaultVariant={() => onSetDefaultVariant(variant)}
/>
{variant?.id !== product?.defaultVariant.id && (
<ProductVariantSetDefault
onSetDefaultVariant={() => onSetDefaultVariant(variant)}
/>
)}
</TableCell>
</SortableTableRow>
);

View file

@ -1557,6 +1557,10 @@ export const variant = (placeholderImage: string): ProductVariant => ({
privateMetadata: [],
product: {
__typename: "Product" as "Product",
defaultVariant: {
__typename: "ProductVariant",
id: "var1"
},
id: "prod1",
images: [
{

View file

@ -67,6 +67,11 @@ export interface ProductVariantDetails_productVariant_price {
currency: string;
}
export interface ProductVariantDetails_productVariant_product_defaultVariant {
__typename: "ProductVariant";
id: string;
}
export interface ProductVariantDetails_productVariant_product_images {
__typename: "ProductImage";
id: string;
@ -97,6 +102,7 @@ export interface ProductVariantDetails_productVariant_product_variants {
export interface ProductVariantDetails_productVariant_product {
__typename: "Product";
id: string;
defaultVariant: ProductVariantDetails_productVariant_product_defaultVariant | null;
images: (ProductVariantDetails_productVariant_product_images | null)[] | null;
name: string;
thumbnail: ProductVariantDetails_productVariant_product_thumbnail | null;

View file

@ -314,6 +314,11 @@ export interface SimpleProductUpdate_productVariantUpdate_productVariant_price {
currency: string;
}
export interface SimpleProductUpdate_productVariantUpdate_productVariant_product_defaultVariant {
__typename: "ProductVariant";
id: string;
}
export interface SimpleProductUpdate_productVariantUpdate_productVariant_product_images {
__typename: "ProductImage";
id: string;
@ -344,6 +349,7 @@ export interface SimpleProductUpdate_productVariantUpdate_productVariant_product
export interface SimpleProductUpdate_productVariantUpdate_productVariant_product {
__typename: "Product";
id: string;
defaultVariant: SimpleProductUpdate_productVariantUpdate_productVariant_product_defaultVariant | null;
images: (SimpleProductUpdate_productVariantUpdate_productVariant_product_images | null)[] | null;
name: string;
thumbnail: SimpleProductUpdate_productVariantUpdate_productVariant_product_thumbnail | null;
@ -459,6 +465,11 @@ export interface SimpleProductUpdate_productVariantStocksCreate_productVariant_p
currency: string;
}
export interface SimpleProductUpdate_productVariantStocksCreate_productVariant_product_defaultVariant {
__typename: "ProductVariant";
id: string;
}
export interface SimpleProductUpdate_productVariantStocksCreate_productVariant_product_images {
__typename: "ProductImage";
id: string;
@ -489,6 +500,7 @@ export interface SimpleProductUpdate_productVariantStocksCreate_productVariant_p
export interface SimpleProductUpdate_productVariantStocksCreate_productVariant_product {
__typename: "Product";
id: string;
defaultVariant: SimpleProductUpdate_productVariantStocksCreate_productVariant_product_defaultVariant | null;
images: (SimpleProductUpdate_productVariantStocksCreate_productVariant_product_images | null)[] | null;
name: string;
thumbnail: SimpleProductUpdate_productVariantStocksCreate_productVariant_product_thumbnail | null;
@ -603,6 +615,11 @@ export interface SimpleProductUpdate_productVariantStocksDelete_productVariant_p
currency: string;
}
export interface SimpleProductUpdate_productVariantStocksDelete_productVariant_product_defaultVariant {
__typename: "ProductVariant";
id: string;
}
export interface SimpleProductUpdate_productVariantStocksDelete_productVariant_product_images {
__typename: "ProductImage";
id: string;
@ -633,6 +650,7 @@ export interface SimpleProductUpdate_productVariantStocksDelete_productVariant_p
export interface SimpleProductUpdate_productVariantStocksDelete_productVariant_product {
__typename: "Product";
id: string;
defaultVariant: SimpleProductUpdate_productVariantStocksDelete_productVariant_product_defaultVariant | null;
images: (SimpleProductUpdate_productVariantStocksDelete_productVariant_product_images | null)[] | null;
name: string;
thumbnail: SimpleProductUpdate_productVariantStocksDelete_productVariant_product_thumbnail | null;
@ -748,6 +766,11 @@ export interface SimpleProductUpdate_productVariantStocksUpdate_productVariant_p
currency: string;
}
export interface SimpleProductUpdate_productVariantStocksUpdate_productVariant_product_defaultVariant {
__typename: "ProductVariant";
id: string;
}
export interface SimpleProductUpdate_productVariantStocksUpdate_productVariant_product_images {
__typename: "ProductImage";
id: string;
@ -778,6 +801,7 @@ export interface SimpleProductUpdate_productVariantStocksUpdate_productVariant_p
export interface SimpleProductUpdate_productVariantStocksUpdate_productVariant_product {
__typename: "Product";
id: string;
defaultVariant: SimpleProductUpdate_productVariantStocksUpdate_productVariant_product_defaultVariant | null;
images: (SimpleProductUpdate_productVariantStocksUpdate_productVariant_product_images | null)[] | null;
name: string;
thumbnail: SimpleProductUpdate_productVariantStocksUpdate_productVariant_product_thumbnail | null;

View file

@ -74,6 +74,11 @@ export interface VariantCreate_productVariantCreate_productVariant_price {
currency: string;
}
export interface VariantCreate_productVariantCreate_productVariant_product_defaultVariant {
__typename: "ProductVariant";
id: string;
}
export interface VariantCreate_productVariantCreate_productVariant_product_images {
__typename: "ProductImage";
id: string;
@ -104,6 +109,7 @@ export interface VariantCreate_productVariantCreate_productVariant_product_varia
export interface VariantCreate_productVariantCreate_productVariant_product {
__typename: "Product";
id: string;
defaultVariant: VariantCreate_productVariantCreate_productVariant_product_defaultVariant | null;
images: (VariantCreate_productVariantCreate_productVariant_product_images | null)[] | null;
name: string;
thumbnail: VariantCreate_productVariantCreate_productVariant_product_thumbnail | null;

View file

@ -73,6 +73,11 @@ export interface VariantImageAssign_variantImageAssign_productVariant_price {
currency: string;
}
export interface VariantImageAssign_variantImageAssign_productVariant_product_defaultVariant {
__typename: "ProductVariant";
id: string;
}
export interface VariantImageAssign_variantImageAssign_productVariant_product_images {
__typename: "ProductImage";
id: string;
@ -103,6 +108,7 @@ export interface VariantImageAssign_variantImageAssign_productVariant_product_va
export interface VariantImageAssign_variantImageAssign_productVariant_product {
__typename: "Product";
id: string;
defaultVariant: VariantImageAssign_variantImageAssign_productVariant_product_defaultVariant | null;
images: (VariantImageAssign_variantImageAssign_productVariant_product_images | null)[] | null;
name: string;
thumbnail: VariantImageAssign_variantImageAssign_productVariant_product_thumbnail | null;

View file

@ -73,6 +73,11 @@ export interface VariantImageUnassign_variantImageUnassign_productVariant_price
currency: string;
}
export interface VariantImageUnassign_variantImageUnassign_productVariant_product_defaultVariant {
__typename: "ProductVariant";
id: string;
}
export interface VariantImageUnassign_variantImageUnassign_productVariant_product_images {
__typename: "ProductImage";
id: string;
@ -103,6 +108,7 @@ export interface VariantImageUnassign_variantImageUnassign_productVariant_produc
export interface VariantImageUnassign_variantImageUnassign_productVariant_product {
__typename: "Product";
id: string;
defaultVariant: VariantImageUnassign_variantImageUnassign_productVariant_product_defaultVariant | null;
images: (VariantImageUnassign_variantImageUnassign_productVariant_product_images | null)[] | null;
name: string;
thumbnail: VariantImageUnassign_variantImageUnassign_productVariant_product_thumbnail | null;

View file

@ -74,6 +74,11 @@ export interface VariantUpdate_productVariantUpdate_productVariant_price {
currency: string;
}
export interface VariantUpdate_productVariantUpdate_productVariant_product_defaultVariant {
__typename: "ProductVariant";
id: string;
}
export interface VariantUpdate_productVariantUpdate_productVariant_product_images {
__typename: "ProductImage";
id: string;
@ -104,6 +109,7 @@ export interface VariantUpdate_productVariantUpdate_productVariant_product_varia
export interface VariantUpdate_productVariantUpdate_productVariant_product {
__typename: "Product";
id: string;
defaultVariant: VariantUpdate_productVariantUpdate_productVariant_product_defaultVariant | null;
images: (VariantUpdate_productVariantUpdate_productVariant_product_images | null)[] | null;
name: string;
thumbnail: VariantUpdate_productVariantUpdate_productVariant_product_thumbnail | null;
@ -219,6 +225,11 @@ export interface VariantUpdate_productVariantStocksUpdate_productVariant_price {
currency: string;
}
export interface VariantUpdate_productVariantStocksUpdate_productVariant_product_defaultVariant {
__typename: "ProductVariant";
id: string;
}
export interface VariantUpdate_productVariantStocksUpdate_productVariant_product_images {
__typename: "ProductImage";
id: string;
@ -249,6 +260,7 @@ export interface VariantUpdate_productVariantStocksUpdate_productVariant_product
export interface VariantUpdate_productVariantStocksUpdate_productVariant_product {
__typename: "Product";
id: string;
defaultVariant: VariantUpdate_productVariantStocksUpdate_productVariant_product_defaultVariant | null;
images: (VariantUpdate_productVariantStocksUpdate_productVariant_product_images | null)[] | null;
name: string;
thumbnail: VariantUpdate_productVariantStocksUpdate_productVariant_product_thumbnail | null;

View file

@ -146622,35 +146622,7 @@ Ctrl + K"
<td
class="MuiTableCell-root-id MuiTableCell-body-id ProductVariants-colActions-id"
data-test="actions"
>
<div
data-test="menu"
>
<button
aria-haspopup="true"
aria-label="More"
class="MuiButtonBase-root-id MuiIconButton-root-id CardMenu-iconButton-id MuiIconButton-colorPrimary-id"
tabindex="0"
type="button"
>
<span
class="MuiIconButton-label-id"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root-id"
focusable="false"
role="presentation"
viewBox="0 0 24 24"
>
<path
d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"
/>
</svg>
</span>
</button>
</div>
</td>
/>
</tr>
<tr
class="MuiTableRow-root-id ProductVariants-link-id MuiTableRow-hover-id"
@ -148941,35 +148913,7 @@ Ctrl + K"
<td
class="MuiTableCell-root-id MuiTableCell-body-id ProductVariants-colActions-id"
data-test="actions"
>
<div
data-test="menu"
>
<button
aria-haspopup="true"
aria-label="More"
class="MuiButtonBase-root-id MuiIconButton-root-id CardMenu-iconButton-id MuiIconButton-colorPrimary-id"
tabindex="0"
type="button"
>
<span
class="MuiIconButton-label-id"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root-id"
focusable="false"
role="presentation"
viewBox="0 0 24 24"
>
<path
d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"
/>
</svg>
</span>
</button>
</div>
</td>
/>
</tr>
<tr
class="MuiTableRow-root-id ProductVariants-link-id MuiTableRow-hover-id"
@ -159109,35 +159053,7 @@ Ctrl + K"
<td
class="MuiTableCell-root-id MuiTableCell-body-id ProductVariants-colActions-id"
data-test="actions"
>
<div
data-test="menu"
>
<button
aria-haspopup="true"
aria-label="More"
class="MuiButtonBase-root-id MuiIconButton-root-id CardMenu-iconButton-id MuiIconButton-colorPrimary-id"
tabindex="0"
type="button"
>
<span
class="MuiIconButton-label-id"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root-id"
focusable="false"
role="presentation"
viewBox="0 0 24 24"
>
<path
d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"
/>
</svg>
</span>
</button>
</div>
</td>
/>
</tr>
<tr
class="MuiTableRow-root-id ProductVariants-link-id MuiTableRow-hover-id"
@ -163056,35 +162972,7 @@ Ctrl + K"
<td
class="MuiTableCell-root-id MuiTableCell-body-id ProductVariants-colActions-id"
data-test="actions"
>
<div
data-test="menu"
>
<button
aria-haspopup="true"
aria-label="More"
class="MuiButtonBase-root-id MuiIconButton-root-id CardMenu-iconButton-id MuiIconButton-colorPrimary-id"
tabindex="0"
type="button"
>
<span
class="MuiIconButton-label-id"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root-id"
focusable="false"
role="presentation"
viewBox="0 0 24 24"
>
<path
d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"
/>
</svg>
</span>
</button>
</div>
</td>
/>
</tr>
<tr
class="MuiTableRow-root-id ProductVariants-link-id MuiTableRow-hover-id"
@ -173538,35 +173426,7 @@ exports[`Storyshots Views / Products / Product variant details attribute errors
>
<div
class="PageHeader-root-id"
>
<div
data-test="menu"
>
<button
aria-haspopup="true"
aria-label="More"
class="MuiButtonBase-root-id MuiIconButton-root-id CardMenu-iconButton-id MuiIconButton-colorPrimary-id"
tabindex="0"
type="button"
>
<span
class="MuiIconButton-label-id"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root-id"
focusable="false"
role="presentation"
viewBox="0 0 24 24"
>
<path
d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"
/>
</svg>
</span>
</button>
</div>
</div>
/>
</div>
</div>
<form>
@ -175002,35 +174862,7 @@ exports[`Storyshots Views / Products / Product variant details no warehouses 1`]
>
<div
class="PageHeader-root-id"
>
<div
data-test="menu"
>
<button
aria-haspopup="true"
aria-label="More"
class="MuiButtonBase-root-id MuiIconButton-root-id CardMenu-iconButton-id MuiIconButton-colorPrimary-id"
tabindex="0"
type="button"
>
<span
class="MuiIconButton-label-id"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root-id"
focusable="false"
role="presentation"
viewBox="0 0 24 24"
>
<path
d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"
/>
</svg>
</span>
</button>
</div>
</div>
/>
</div>
</div>
<form>
@ -176251,35 +176083,7 @@ exports[`Storyshots Views / Products / Product variant details when loaded data
>
<div
class="PageHeader-root-id"
>
<div
data-test="menu"
>
<button
aria-haspopup="true"
aria-label="More"
class="MuiButtonBase-root-id MuiIconButton-root-id CardMenu-iconButton-id MuiIconButton-colorPrimary-id"
tabindex="0"
type="button"
>
<span
class="MuiIconButton-label-id"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root-id"
focusable="false"
role="presentation"
viewBox="0 0 24 24"
>
<path
d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"
/>
</svg>
</span>
</button>
</div>
</div>
/>
</div>
</div>
<form>
@ -177702,35 +177506,7 @@ exports[`Storyshots Views / Products / Product variant details when loading data
>
<div
class="PageHeader-root-id"
>
<div
data-test="menu"
>
<button
aria-haspopup="true"
aria-label="More"
class="MuiButtonBase-root-id MuiIconButton-root-id CardMenu-iconButton-id MuiIconButton-colorPrimary-id"
tabindex="0"
type="button"
>
<span
class="MuiIconButton-label-id"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root-id"
focusable="false"
role="presentation"
viewBox="0 0 24 24"
>
<path
d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"
/>
</svg>
</span>
</button>
</div>
</div>
/>
</div>
</div>
<form>