diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index a7de63bcb..9322e859a 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -8927,6 +8927,48 @@ + + md_to_emails + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + md_to_emails_emails + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + messagingpresets false @@ -13996,6 +14038,27 @@ + + external_id + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + first_name false @@ -36674,6 +36737,32 @@ + + special + + + attendance_detail_csv + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + subjects diff --git a/client/src/components/email-overlay/email-overlay.component.jsx b/client/src/components/email-overlay/email-overlay.component.jsx index baf52d376..0c7fefc78 100644 --- a/client/src/components/email-overlay/email-overlay.component.jsx +++ b/client/src/components/email-overlay/email-overlay.component.jsx @@ -42,7 +42,12 @@ export function EmailOverlayComponent({ const { t } = useTranslation(); const handleClick = ({ item, key, keyPath }) => { const email = item.props.value; - form.setFieldsValue({ to: _.uniq([...form.getFieldValue("to"), email]) }); + form.setFieldsValue({ + to: _.uniq([ + ...form.getFieldValue("to"), + ...(typeof email === "string" ? [email] : email), + ]), + }); }; const menu = ( @@ -55,6 +60,11 @@ export function EmailOverlayComponent({ {`${e.first_name} ${e.last_name}`} ))} + {bodyshop.md_to_emails.map((e, idx) => ( + + {e.label} + + ))} ); diff --git a/client/src/components/parts-order-delete-line/parts-order-delete-line.component.jsx b/client/src/components/parts-order-delete-line/parts-order-delete-line.component.jsx new file mode 100644 index 000000000..0edad9bb5 --- /dev/null +++ b/client/src/components/parts-order-delete-line/parts-order-delete-line.component.jsx @@ -0,0 +1,47 @@ +import React from "react"; +import { Button, Popconfirm } from "antd"; +import { DeleteFilled } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import { DELETE_PARTS_ORDER_LINE } from "../../graphql/parts-orders.queries"; +import { useMutation } from "@apollo/client"; + +export default function PartsOrderDeleteLine({ + disabled, + partsLineId, + partsOrderId, +}) { + const { t } = useTranslation(); + const [deletePartsOrderLine] = useMutation(DELETE_PARTS_ORDER_LINE); + return ( + { + //Delete the parts return.! + + await deletePartsOrderLine({ + variables: { partsOrderLineId: partsLineId }, + update(cache) { + cache.modify({ + id: cache.identify({ + __typename: "parts_orders", + id: partsOrderId, + }), + fields: { + parts_order_lines(cached, { readField }) { + return cached.filter((c) => { + return readField("id", c) !== partsLineId; + }); + }, + }, + }); + }, + }); + }} + > + + + ); +} diff --git a/client/src/components/parts-order-list-table/parts-order-list-table.component.jsx b/client/src/components/parts-order-list-table/parts-order-list-table.component.jsx index 9806b6cca..ed66ecdd7 100644 --- a/client/src/components/parts-order-list-table/parts-order-list-table.component.jsx +++ b/client/src/components/parts-order-list-table/parts-order-list-table.component.jsx @@ -30,6 +30,7 @@ import { TemplateList } from "../../utils/TemplateConstants"; import DataLabel from "../data-label/data-label.component"; import PartsOrderBackorderEta from "../parts-order-backorder-eta/parts-order-backorder-eta.component"; import PartsOrderCmReceived from "../parts-order-cm-received/parts-order-cm-received.component"; +import PartsOrderDeleteLine from "../parts-order-delete-line/parts-order-delete-line.component"; import PartsOrderLineBackorderButton from "../parts-order-line-backorder-button/parts-order-line-backorder-button.component"; import PartsReceiveModalContainer from "../parts-receive-modal/parts-receive-modal.container"; import PrintWrapper from "../print-wrapper/print-wrapper.component"; @@ -391,12 +392,21 @@ export function PartsOrderListTableComponent({ dataIndex: "actions", key: "actions", render: (text, record) => ( - + + + + ), }, ]; diff --git a/client/src/components/shop-employees/shop-employees-form.component.jsx b/client/src/components/shop-employees/shop-employees-form.component.jsx index 2282d62ef..82fafb1aa 100644 --- a/client/src/components/shop-employees/shop-employees-form.component.jsx +++ b/client/src/components/shop-employees/shop-employees-form.component.jsx @@ -328,6 +328,12 @@ export function ShopEmployeesFormComponent({ bodyshop }) { > + + + {(fields, { add, remove, move }) => { diff --git a/client/src/components/shop-info/shop-info.general.component.jsx b/client/src/components/shop-info/shop-info.general.component.jsx index 0eeb78d4a..92e99791b 100644 --- a/client/src/components/shop-info/shop-info.general.component.jsx +++ b/client/src/components/shop-info/shop-info.general.component.jsx @@ -1393,6 +1393,60 @@ export default function ShopInfoGeneral({ form }) { }} + + + {(fields, { add, remove, move }) => { + return ( +
+ {fields.map((field, index) => ( + + + + + + +