feat: attrs on product

This commit is contained in:
2024-05-11 00:24:52 +03:00
parent 004ad9a562
commit 270f96bf8d
10 changed files with 29 additions and 4 deletions

View File

@@ -6,5 +6,6 @@ import type { BarcodeAttributeSchema } from './BarcodeAttributeSchema';
export type BarcodeSchema = {
barcode: string;
attributes: Array<BarcodeAttributeSchema>;
additionalField?: (string | null);
};

View File

@@ -9,6 +9,7 @@ export type BarcodeTemplateCreateRequest = {
isDefault: boolean;
size: BarcodeTemplateSizeSchema;
additionalAttributes: Array<BarcodeTemplateAdditionalAttributeSchema>;
additionalField?: (string | null);
attributeIds: Array<number>;
};

View File

@@ -10,6 +10,7 @@ export type BarcodeTemplateSchema = {
isDefault: boolean;
size: BarcodeTemplateSizeSchema;
additionalAttributes: Array<BarcodeTemplateAdditionalAttributeSchema>;
additionalField?: (string | null);
id: number;
attributes: Array<BarcodeTemplateAttributeSchema>;
};

View File

@@ -9,6 +9,7 @@ export type BarcodeTemplateUpdateRequest = {
isDefault: boolean;
size: BarcodeTemplateSizeSchema;
additionalAttributes: Array<BarcodeTemplateAdditionalAttributeSchema>;
additionalField?: (string | null);
id: number;
attributeIds: Array<number>;
};

View File

@@ -13,5 +13,6 @@ export type ProductSchema = {
brand?: (string | null);
color?: (string | null);
composition?: (string | null);
size?: (string | null);
};

View File

@@ -8,12 +8,13 @@ type Props = {
attributes: BarcodeAttributeSchema[]
barcode?: string;
quantity: number;
additionalField?: string | null;
}
type Ref = HTMLDivElement;
const PrintBarcodeContainer = forwardRef<Ref, Props>(function PrintBarcodeContainer(props: Props, ref) {
const {attributes, barcode, quantity} = props;
const {attributes, barcode, quantity, additionalField} = props;
const MAX_ATTRIBUTES = 6;
const MAX_ATTRIBUTES = additionalField ? 5 : 6;
const MIN_BARCODE_SIZE = 30;
const MAX_BARCODE_SIZE = 100;
const STEP = (MAX_BARCODE_SIZE - MIN_BARCODE_SIZE) / MAX_ATTRIBUTES;
@@ -52,6 +53,14 @@ const PrintBarcodeContainer = forwardRef<Ref, Props>(function PrintBarcodeContai
{getAttributeText(attr)}
</Text>
))}
{props.additionalField && (
<Text
className={styles['barcode-attribute-text']}
size={"xs"}
>
{props.additionalField}
</Text>
)}
</Flex>
</>
))}

View File

@@ -9,6 +9,7 @@
.barcode-container {
max-height: 1.45in;
text-align: left;
margin: 1.25mm;
padding: 1.25mm;

View File

@@ -126,7 +126,7 @@ const PrintBarcodeModal = ({
quantity={quantity}
ref={barcodeRef}
attributes={barcodeData?.attributes || []}
additionalField={barcodeData?.additionalField}
/>
</>
)

View File

@@ -6,7 +6,7 @@ import {
} from "../../../../client";
import {ContextModalProps} from "@mantine/modals";
import {useForm} from "@mantine/form";
import {Checkbox, Fieldset, Flex, rem, TextInput} from "@mantine/core";
import {Checkbox, Fieldset, Flex, rem, Textarea, TextInput} from "@mantine/core";
import BarcodeTemplateAttributeMultiselect
from "../../components/BarcodeTemplateAttributeMultiselect/BarcodeTemplateAttributeMultiselect.tsx";
import BarcodeTemplateAdditionalFieldTable
@@ -69,6 +69,11 @@ const BarcodeTemplateFormModal = ({
label={"Использовать как стандартный шаблон"}
checked={form.getInputProps('isDefault').value as boolean}
{...form.getInputProps('isDefault')}/>
<Textarea
label={"Дополнительное поле"}
placeholder={"Введите дополнительное поле"}
{...form.getInputProps('additionalField')}
/>
</Flex>
</Fieldset>

View File

@@ -89,6 +89,11 @@ const CreateProductModal = ({
label={"Цвет"}
{...form.getInputProps('color')}
/>
<TextInput
placeholder={"Введите размер"}
label={"Размер"}
{...form.getInputProps('size')}
/>
</Fieldset>
<Flex justify={"flex-end"} mt={rem(5)} gap={rem(10)}>
<Button onClick={() => onCancelClick()} variant={"subtle"}>Отменить</Button>