diff --git a/app/webpacker/controllers/mixins/useRenderCustomer.js b/app/webpacker/controllers/mixins/useRenderCustomer.js new file mode 100644 index 0000000000..2f23da24c0 --- /dev/null +++ b/app/webpacker/controllers/mixins/useRenderCustomer.js @@ -0,0 +1,50 @@ +export const useRenderCustomer = (controller) => { + Object.assign(controller, { + renderOption(item, escape) { + if (!item.bill_address) { + return this.renderWithNoBillAddress(item, escape); + } + return `
+
+
${escape(item.email)}
+ ${ + item.bill_address.firstname + ? `${I18n.t("bill_address")} + ${item.bill_address.firstname} ${ + item.bill_address.lastname + }
+ ${item.bill_address.address1}, ${ + item.bill_address.address2 + }
+ ${item.bill_address.city} +
+ ${ + item.bill_address.state_id && + item.bill_address.state && + item.bill_address.state.name + ? item.bill_address.state.name + : item.bill_address.state_name + } + + ${ + item.bill_address.country && + item.bill_address.country.name + ? item.bill_address.country.name + : item.bill_address.country_name + } + ` + : "" + } +
+
`; + }, + + renderWithNoBillAddress(item, escape) { + return `
+
${escape( + item.email + )}
+
`; + }, + }); +}; diff --git a/app/webpacker/controllers/select_customer_controller.js b/app/webpacker/controllers/select_customer_controller.js index c02ff5bcc8..7034dbd4d0 100644 --- a/app/webpacker/controllers/select_customer_controller.js +++ b/app/webpacker/controllers/select_customer_controller.js @@ -1,11 +1,13 @@ import TomSelectController from "./tom_select_controller"; import { useSearchCustomer } from "./mixins/useSearchCustomer"; +import { useRenderCustomer } from "./mixins/useRenderCustomer"; export default class extends TomSelectController { static values = { options: Object, distributor: Number }; connect() { useSearchCustomer(this); + useRenderCustomer(this); const options = { valueField: "id", labelField: "email", @@ -21,50 +23,6 @@ export default class extends TomSelectController { this.items = []; } - renderOption(item, escape) { - if (!item.bill_address) { - return this.renderWithNoBillAddress(item, escape); - } - return `
-
-
${escape(item.email)}
- ${ - item.bill_address.firstname - ? `${I18n.t("bill_address")} - ${item.bill_address.firstname} ${ - item.bill_address.lastname - }
- ${item.bill_address.address1}, ${ - item.bill_address.address2 - }
- ${item.bill_address.city} -
- ${ - item.bill_address.state_id && - item.bill_address.state && - item.bill_address.state.name - ? item.bill_address.state.name - : item.bill_address.state_name - } - - ${ - item.bill_address.country && item.bill_address.country.name - ? item.bill_address.country.name - : item.bill_address.country_name - } - ` - : "" - } -
-
`; - } - - renderWithNoBillAddress(item, escape) { - return `
-
${escape(item.email)}
-
`; - } - onItemSelect(id, item) { const customer = this.items.find((item) => item.id == id); ["bill_address", "ship_address"].forEach((address) => {