import { DeleteFilled, HolderOutlined } from "@ant-design/icons"; import { Button, Col, Form, Input, Row, Select, Space, Switch } from "antd"; import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import FormListMoveArrows from "../form-list-move-arrows/form-list-move-arrows.component"; import ConfigListEmptyState from "../layout-form-row/config-list-empty-state.component.jsx"; import InlineValidatedFormRow from "../layout-form-row/inline-validated-form-row.component.jsx"; import LayoutFormRow from "../layout-form-row/layout-form-row.component"; import { INLINE_TITLE_GROUP_STYLE, INLINE_TITLE_HANDLE_STYLE, INLINE_TITLE_INPUT_STYLE, INLINE_TITLE_LABEL_STYLE, INLINE_TITLE_ROW_STYLE, INLINE_TITLE_SEPARATOR_STYLE, INLINE_TITLE_SWITCH_GROUP_STYLE } from "../layout-form-row/inline-form-row-title.utils.js"; import i18n from "i18next"; const predefinedPartTypes = ["PAN", "PAC", "PAR", "PAL", "PAA", "PAM", "PAP", "PAS", "PASL", "PAG"]; const predefinedModLbrTypes = [ "LAA", "LAB", "LAD", "LAE", "LAF", "LAG", "LAM", "LAR", "LAS", "LAU", "LA1", "LA2", "LA3", "LA4" ]; const getFieldType = (field) => { if (["line_desc", "part_number"].includes(field)) return "string"; if (["act_price", "part_qty", "mod_lb_hrs"].includes(field)) return "number"; if (["part_type", "mod_lbr_ty"].includes(field)) return "predefined"; return null; }; const fieldSelectOptions = [ { label: i18n.t("joblines.fields.line_desc"), value: "line_desc" }, { label: i18n.t("joblines.fields.part_type"), value: "part_type" }, { label: i18n.t("joblines.fields.act_price"), value: "act_price" }, { label: i18n.t("joblines.fields.part_qty"), value: "part_qty" }, { label: i18n.t("joblines.fields.mod_lbr_ty"), value: "mod_lbr_ty" }, { label: `${i18n.t("joblines.fields.oem_partno")} / ${i18n.t("joblines.fields.alt_partno")}`, value: "part_number" }, { label: i18n.t("joblines.fields.op_code_desc"), value: "op_code_desc" } ]; export default function ShopInfoPartsScan({ form }) { const { t } = useTranslation(); const watchedFields = Form.useWatch("md_parts_scan", form); const operationOptions = useMemo( () => ({ string: [ { label: t("bodyshop.operations.contains"), value: "contains" }, { label: t("bodyshop.operations.equals"), value: "equals" }, { label: t("bodyshop.operations.starts_with"), value: "startsWith" }, { label: t("bodyshop.operations.ends_with"), value: "endsWith" } ], number: [ { label: t("bodyshop.operations.equals"), value: "=" }, { label: t("bodyshop.operations.greater_than"), value: ">" }, { label: t("bodyshop.operations.less_than"), value: "<" } ] }), [t] ); return (