diff --git a/src/app/api/settings/printer/actions.ts b/src/app/api/settings/printer/actions.ts
index 21ceb3a..5ed68e0 100644
--- a/src/app/api/settings/printer/actions.ts
+++ b/src/app/api/settings/printer/actions.ts
@@ -12,6 +12,7 @@ export interface PrinterInputs {
name?: string;
code?: string;
type?: string;
+ brand?: string;
description?: string;
ip?: string;
port?: number;
diff --git a/src/app/api/settings/printer/index.ts b/src/app/api/settings/printer/index.ts
index a4c4117..3173551 100644
--- a/src/app/api/settings/printer/index.ts
+++ b/src/app/api/settings/printer/index.ts
@@ -10,6 +10,7 @@ export interface PrinterCombo {
code?: string;
name?: string;
type?: string;
+ brand?: string;
description?: string;
ip?: string;
port?: number;
@@ -21,6 +22,7 @@ export interface PrinterResult {
name?: string;
code?: string;
type?: string;
+ brand?: string;
description?: string;
ip?: string;
port?: number;
diff --git a/src/components/CreatePrinter/CreatePrinter.tsx b/src/components/CreatePrinter/CreatePrinter.tsx
index b72de16..07542ec 100644
--- a/src/components/CreatePrinter/CreatePrinter.tsx
+++ b/src/components/CreatePrinter/CreatePrinter.tsx
@@ -30,6 +30,7 @@ const CreatePrinter: React.FC = () => {
ip: "",
port: undefined,
type: "A4",
+ brand: "Canon",
dpi: undefined,
description: "",
});
@@ -50,6 +51,18 @@ const CreatePrinter: React.FC = () => {
if (formData.type !== "Label") {
setFormData((prev) => ({ ...prev, dpi: undefined }));
}
+ if (formData.type === "A4") {
+ // A4: allow Canon/Brother (keep whatever is selected, default Canon from initial state)
+ if (!formData.brand) {
+ setFormData((prev) => ({ ...prev, brand: "Canon" }));
+ }
+ } else if (formData.type === "Label") {
+ // Label: preview Zebra
+ setFormData((prev) => ({ ...prev, brand: "Zebra" }));
+ } else {
+ // Other types (if any): no brand
+ setFormData((prev) => ({ ...prev, brand: undefined }));
+ }
}, [formData.type]);
const handleChange = useCallback((field: keyof PrinterInputs) => {
@@ -74,6 +87,13 @@ const CreatePrinter: React.FC = () => {
}));
}, []);
+ const handleBrandChange = useCallback((e: SelectChangeEvent) => {
+ setFormData((prev) => ({
+ ...prev,
+ brand: e.target.value,
+ }));
+ }, []);
+
const handleDescriptionChange = useCallback((_e: any, newValue: string | null) => {
setFormData((prev) => ({
...prev,
@@ -155,6 +175,32 @@ const CreatePrinter: React.FC = () => {
+ {formData.type === "A4" && (
+
+
+ {t("Brand")}
+
+
+
+ )}
+
+ {formData.type === "Label" && (
+
+
+
+ )}
= ({ printer }) => {
ip: printer.ip || "",
port: printer.port || undefined,
type: printer.type || "",
+ brand: printer.brand ?? "Canon",
dpi: printer.dpi || undefined,
+ description: printer.description || "",
});
useEffect(() => {
if (formData.type !== "Label") {
setFormData((prev) => ({ ...prev, dpi: undefined }));
}
+ if (formData.type === "A4") {
+ if (!formData.brand) {
+ setFormData((prev) => ({ ...prev, brand: "Canon" }));
+ }
+ } else if (formData.type === "Label") {
+ setFormData((prev) => ({ ...prev, brand: "Zebra" }));
+ } else {
+ setFormData((prev) => ({ ...prev, brand: undefined }));
+ }
}, [formData.type]);
const handleChange = useCallback((field: keyof PrinterInputs) => {
@@ -63,6 +73,14 @@ const EditPrinter: React.FC = ({ printer }) => {
}));
}, []);
+ const handleBrandChange = useCallback((e: SelectChangeEvent) => {
+ const value = e.target.value;
+ setFormData((prev) => ({
+ ...prev,
+ brand: value,
+ }));
+ }, []);
+
const handleSubmit = useCallback(async () => {
setIsSubmitting(true);
try {
@@ -123,6 +141,31 @@ const EditPrinter: React.FC = ({ printer }) => {
+ {formData.type === "A4" && (
+
+
+ {t("Brand")}
+
+
+
+ )}
+ {formData.type === "Label" && (
+
+
+
+ )}
= ({ printer }) => {
disabled={formData.type !== "Label"}
/>
+
+
+