feat: attrs on product
This commit is contained in:
@@ -6,5 +6,6 @@ import type { BarcodeAttributeSchema } from './BarcodeAttributeSchema';
|
||||
export type BarcodeSchema = {
|
||||
barcode: string;
|
||||
attributes: Array<BarcodeAttributeSchema>;
|
||||
additionalField?: (string | null);
|
||||
};
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ export type BarcodeTemplateCreateRequest = {
|
||||
isDefault: boolean;
|
||||
size: BarcodeTemplateSizeSchema;
|
||||
additionalAttributes: Array<BarcodeTemplateAdditionalAttributeSchema>;
|
||||
additionalField?: (string | null);
|
||||
attributeIds: Array<number>;
|
||||
};
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ export type BarcodeTemplateSchema = {
|
||||
isDefault: boolean;
|
||||
size: BarcodeTemplateSizeSchema;
|
||||
additionalAttributes: Array<BarcodeTemplateAdditionalAttributeSchema>;
|
||||
additionalField?: (string | null);
|
||||
id: number;
|
||||
attributes: Array<BarcodeTemplateAttributeSchema>;
|
||||
};
|
||||
|
||||
@@ -9,6 +9,7 @@ export type BarcodeTemplateUpdateRequest = {
|
||||
isDefault: boolean;
|
||||
size: BarcodeTemplateSizeSchema;
|
||||
additionalAttributes: Array<BarcodeTemplateAdditionalAttributeSchema>;
|
||||
additionalField?: (string | null);
|
||||
id: number;
|
||||
attributeIds: Array<number>;
|
||||
};
|
||||
|
||||
@@ -13,5 +13,6 @@ export type ProductSchema = {
|
||||
brand?: (string | null);
|
||||
color?: (string | null);
|
||||
composition?: (string | null);
|
||||
size?: (string | null);
|
||||
};
|
||||
|
||||
|
||||
@@ -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>
|
||||
</>
|
||||
))}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
|
||||
.barcode-container {
|
||||
max-height: 1.45in;
|
||||
text-align: left;
|
||||
margin: 1.25mm;
|
||||
padding: 1.25mm;
|
||||
|
||||
@@ -126,7 +126,7 @@ const PrintBarcodeModal = ({
|
||||
quantity={quantity}
|
||||
ref={barcodeRef}
|
||||
attributes={barcodeData?.attributes || []}
|
||||
|
||||
additionalField={barcodeData?.additionalField}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user