@medusajs/draft-order 2.10.4-preview-20251005150154 → 2.10.4-preview-20251005180152
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/admin/index.js +632 -632
- package/.medusa/server/src/admin/index.mjs +632 -632
- package/package.json +16 -16
|
@@ -9567,10 +9567,31 @@ const ID = () => {
|
|
|
9567
9567
|
/* @__PURE__ */ jsx(Outlet, {})
|
|
9568
9568
|
] });
|
|
9569
9569
|
};
|
|
9570
|
-
const
|
|
9570
|
+
const CustomItems = () => {
|
|
9571
|
+
return /* @__PURE__ */ jsxs(RouteDrawer, { children: [
|
|
9572
|
+
/* @__PURE__ */ jsx(RouteDrawer.Header, { children: /* @__PURE__ */ jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsx(Heading, { children: "Edit Custom Items" }) }) }),
|
|
9573
|
+
/* @__PURE__ */ jsx(CustomItemsForm, {})
|
|
9574
|
+
] });
|
|
9575
|
+
};
|
|
9576
|
+
const CustomItemsForm = () => {
|
|
9577
|
+
const form = useForm({
|
|
9578
|
+
resolver: zodResolver(schema$5)
|
|
9579
|
+
});
|
|
9580
|
+
return /* @__PURE__ */ jsx(RouteDrawer.Form, { form, children: /* @__PURE__ */ jsxs(KeyboundForm, { className: "flex flex-1 flex-col", children: [
|
|
9581
|
+
/* @__PURE__ */ jsx(RouteDrawer.Body, {}),
|
|
9582
|
+
/* @__PURE__ */ jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2", children: [
|
|
9583
|
+
/* @__PURE__ */ jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
|
|
9584
|
+
/* @__PURE__ */ jsx(Button, { size: "small", type: "submit", children: "Save" })
|
|
9585
|
+
] }) })
|
|
9586
|
+
] }) });
|
|
9587
|
+
};
|
|
9588
|
+
const schema$5 = objectType({
|
|
9589
|
+
email: stringType().email()
|
|
9590
|
+
});
|
|
9591
|
+
const Email = () => {
|
|
9571
9592
|
const { id } = useParams();
|
|
9572
9593
|
const { order, isPending, isError, error } = useOrder(id, {
|
|
9573
|
-
fields: "+
|
|
9594
|
+
fields: "+email"
|
|
9574
9595
|
});
|
|
9575
9596
|
if (isError) {
|
|
9576
9597
|
throw error;
|
|
@@ -9578,34 +9599,24 @@ const BillingAddress = () => {
|
|
|
9578
9599
|
const isReady = !isPending && !!order;
|
|
9579
9600
|
return /* @__PURE__ */ jsxs(RouteDrawer, { children: [
|
|
9580
9601
|
/* @__PURE__ */ jsxs(RouteDrawer.Header, { children: [
|
|
9581
|
-
/* @__PURE__ */ jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsx(Heading, { children: "Edit
|
|
9582
|
-
/* @__PURE__ */ jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Edit the
|
|
9602
|
+
/* @__PURE__ */ jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsx(Heading, { children: "Edit Email" }) }),
|
|
9603
|
+
/* @__PURE__ */ jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Edit the email for the draft order" }) })
|
|
9583
9604
|
] }),
|
|
9584
|
-
isReady && /* @__PURE__ */ jsx(
|
|
9605
|
+
isReady && /* @__PURE__ */ jsx(EmailForm, { order })
|
|
9585
9606
|
] });
|
|
9586
9607
|
};
|
|
9587
|
-
const
|
|
9588
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
9608
|
+
const EmailForm = ({ order }) => {
|
|
9589
9609
|
const form = useForm({
|
|
9590
9610
|
defaultValues: {
|
|
9591
|
-
|
|
9592
|
-
last_name: ((_b = order.billing_address) == null ? void 0 : _b.last_name) ?? "",
|
|
9593
|
-
company: ((_c = order.billing_address) == null ? void 0 : _c.company) ?? "",
|
|
9594
|
-
address_1: ((_d = order.billing_address) == null ? void 0 : _d.address_1) ?? "",
|
|
9595
|
-
address_2: ((_e = order.billing_address) == null ? void 0 : _e.address_2) ?? "",
|
|
9596
|
-
city: ((_f = order.billing_address) == null ? void 0 : _f.city) ?? "",
|
|
9597
|
-
province: ((_g = order.billing_address) == null ? void 0 : _g.province) ?? "",
|
|
9598
|
-
country_code: ((_h = order.billing_address) == null ? void 0 : _h.country_code) ?? "",
|
|
9599
|
-
postal_code: ((_i = order.billing_address) == null ? void 0 : _i.postal_code) ?? "",
|
|
9600
|
-
phone: ((_j = order.billing_address) == null ? void 0 : _j.phone) ?? ""
|
|
9611
|
+
email: order.email ?? ""
|
|
9601
9612
|
},
|
|
9602
|
-
resolver: zodResolver(schema$
|
|
9613
|
+
resolver: zodResolver(schema$4)
|
|
9603
9614
|
});
|
|
9604
9615
|
const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
|
|
9605
9616
|
const { handleSuccess } = useRouteModal();
|
|
9606
9617
|
const onSubmit = form.handleSubmit(async (data) => {
|
|
9607
9618
|
await mutateAsync(
|
|
9608
|
-
{
|
|
9619
|
+
{ email: data.email },
|
|
9609
9620
|
{
|
|
9610
9621
|
onSuccess: () => {
|
|
9611
9622
|
handleSuccess();
|
|
@@ -9622,132 +9633,18 @@ const BillingAddressForm = ({ order }) => {
|
|
|
9622
9633
|
className: "flex flex-1 flex-col overflow-hidden",
|
|
9623
9634
|
onSubmit,
|
|
9624
9635
|
children: [
|
|
9625
|
-
/* @__PURE__ */ jsx(RouteDrawer.Body, { className: "flex flex-col gap-y-6 overflow-y-auto", children: /* @__PURE__ */
|
|
9626
|
-
|
|
9627
|
-
|
|
9628
|
-
|
|
9629
|
-
|
|
9630
|
-
|
|
9631
|
-
|
|
9632
|
-
|
|
9633
|
-
|
|
9634
|
-
|
|
9635
|
-
|
|
9636
|
-
|
|
9637
|
-
),
|
|
9638
|
-
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
9639
|
-
/* @__PURE__ */ jsx(
|
|
9640
|
-
Form$2.Field,
|
|
9641
|
-
{
|
|
9642
|
-
control: form.control,
|
|
9643
|
-
name: "first_name",
|
|
9644
|
-
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
9645
|
-
/* @__PURE__ */ jsx(Form$2.Label, { children: "First name" }),
|
|
9646
|
-
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
9647
|
-
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
9648
|
-
] })
|
|
9649
|
-
}
|
|
9650
|
-
),
|
|
9651
|
-
/* @__PURE__ */ jsx(
|
|
9652
|
-
Form$2.Field,
|
|
9653
|
-
{
|
|
9654
|
-
control: form.control,
|
|
9655
|
-
name: "last_name",
|
|
9656
|
-
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
9657
|
-
/* @__PURE__ */ jsx(Form$2.Label, { children: "Last name" }),
|
|
9658
|
-
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
9659
|
-
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
9660
|
-
] })
|
|
9661
|
-
}
|
|
9662
|
-
)
|
|
9663
|
-
] }),
|
|
9664
|
-
/* @__PURE__ */ jsx(
|
|
9665
|
-
Form$2.Field,
|
|
9666
|
-
{
|
|
9667
|
-
control: form.control,
|
|
9668
|
-
name: "company",
|
|
9669
|
-
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
9670
|
-
/* @__PURE__ */ jsx(Form$2.Label, { optional: true, children: "Company" }),
|
|
9671
|
-
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
9672
|
-
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
9673
|
-
] })
|
|
9674
|
-
}
|
|
9675
|
-
),
|
|
9676
|
-
/* @__PURE__ */ jsx(
|
|
9677
|
-
Form$2.Field,
|
|
9678
|
-
{
|
|
9679
|
-
control: form.control,
|
|
9680
|
-
name: "address_1",
|
|
9681
|
-
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
9682
|
-
/* @__PURE__ */ jsx(Form$2.Label, { children: "Address" }),
|
|
9683
|
-
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
9684
|
-
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
9685
|
-
] })
|
|
9686
|
-
}
|
|
9687
|
-
),
|
|
9688
|
-
/* @__PURE__ */ jsx(
|
|
9689
|
-
Form$2.Field,
|
|
9690
|
-
{
|
|
9691
|
-
control: form.control,
|
|
9692
|
-
name: "address_2",
|
|
9693
|
-
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
9694
|
-
/* @__PURE__ */ jsx(Form$2.Label, { optional: true, children: "Apartment, suite, etc." }),
|
|
9695
|
-
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
9696
|
-
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
9697
|
-
] })
|
|
9698
|
-
}
|
|
9699
|
-
),
|
|
9700
|
-
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
9701
|
-
/* @__PURE__ */ jsx(
|
|
9702
|
-
Form$2.Field,
|
|
9703
|
-
{
|
|
9704
|
-
control: form.control,
|
|
9705
|
-
name: "postal_code",
|
|
9706
|
-
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
9707
|
-
/* @__PURE__ */ jsx(Form$2.Label, { children: "Postal code" }),
|
|
9708
|
-
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
9709
|
-
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
9710
|
-
] })
|
|
9711
|
-
}
|
|
9712
|
-
),
|
|
9713
|
-
/* @__PURE__ */ jsx(
|
|
9714
|
-
Form$2.Field,
|
|
9715
|
-
{
|
|
9716
|
-
control: form.control,
|
|
9717
|
-
name: "city",
|
|
9718
|
-
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
9719
|
-
/* @__PURE__ */ jsx(Form$2.Label, { children: "City" }),
|
|
9720
|
-
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
9721
|
-
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
9722
|
-
] })
|
|
9723
|
-
}
|
|
9724
|
-
)
|
|
9725
|
-
] }),
|
|
9726
|
-
/* @__PURE__ */ jsx(
|
|
9727
|
-
Form$2.Field,
|
|
9728
|
-
{
|
|
9729
|
-
control: form.control,
|
|
9730
|
-
name: "province",
|
|
9731
|
-
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
9732
|
-
/* @__PURE__ */ jsx(Form$2.Label, { optional: true, children: "Province / State" }),
|
|
9733
|
-
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
9734
|
-
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
9735
|
-
] })
|
|
9736
|
-
}
|
|
9737
|
-
),
|
|
9738
|
-
/* @__PURE__ */ jsx(
|
|
9739
|
-
Form$2.Field,
|
|
9740
|
-
{
|
|
9741
|
-
control: form.control,
|
|
9742
|
-
name: "phone",
|
|
9743
|
-
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
9744
|
-
/* @__PURE__ */ jsx(Form$2.Label, { optional: true, children: "Phone" }),
|
|
9745
|
-
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
9746
|
-
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
9747
|
-
] })
|
|
9748
|
-
}
|
|
9749
|
-
)
|
|
9750
|
-
] }) }),
|
|
9636
|
+
/* @__PURE__ */ jsx(RouteDrawer.Body, { className: "flex flex-col gap-y-6 overflow-y-auto", children: /* @__PURE__ */ jsx(
|
|
9637
|
+
Form$2.Field,
|
|
9638
|
+
{
|
|
9639
|
+
control: form.control,
|
|
9640
|
+
name: "email",
|
|
9641
|
+
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
9642
|
+
/* @__PURE__ */ jsx(Form$2.Label, { children: "Email" }),
|
|
9643
|
+
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
9644
|
+
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
9645
|
+
] })
|
|
9646
|
+
}
|
|
9647
|
+
) }),
|
|
9751
9648
|
/* @__PURE__ */ jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2", children: [
|
|
9752
9649
|
/* @__PURE__ */ jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
|
|
9753
9650
|
/* @__PURE__ */ jsx(Button, { size: "small", type: "submit", isLoading: isPending, children: "Save" })
|
|
@@ -9756,25 +9653,6 @@ const BillingAddressForm = ({ order }) => {
|
|
|
9756
9653
|
}
|
|
9757
9654
|
) });
|
|
9758
9655
|
};
|
|
9759
|
-
const schema$5 = addressSchema;
|
|
9760
|
-
const CustomItems = () => {
|
|
9761
|
-
return /* @__PURE__ */ jsxs(RouteDrawer, { children: [
|
|
9762
|
-
/* @__PURE__ */ jsx(RouteDrawer.Header, { children: /* @__PURE__ */ jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsx(Heading, { children: "Edit Custom Items" }) }) }),
|
|
9763
|
-
/* @__PURE__ */ jsx(CustomItemsForm, {})
|
|
9764
|
-
] });
|
|
9765
|
-
};
|
|
9766
|
-
const CustomItemsForm = () => {
|
|
9767
|
-
const form = useForm({
|
|
9768
|
-
resolver: zodResolver(schema$4)
|
|
9769
|
-
});
|
|
9770
|
-
return /* @__PURE__ */ jsx(RouteDrawer.Form, { form, children: /* @__PURE__ */ jsxs(KeyboundForm, { className: "flex flex-1 flex-col", children: [
|
|
9771
|
-
/* @__PURE__ */ jsx(RouteDrawer.Body, {}),
|
|
9772
|
-
/* @__PURE__ */ jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2", children: [
|
|
9773
|
-
/* @__PURE__ */ jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
|
|
9774
|
-
/* @__PURE__ */ jsx(Button, { size: "small", type: "submit", children: "Save" })
|
|
9775
|
-
] }) })
|
|
9776
|
-
] }) });
|
|
9777
|
-
};
|
|
9778
9656
|
const schema$4 = objectType({
|
|
9779
9657
|
email: stringType().email()
|
|
9780
9658
|
});
|
|
@@ -10752,171 +10630,380 @@ const customItemSchema = objectType({
|
|
|
10752
10630
|
quantity: numberType(),
|
|
10753
10631
|
unit_price: unionType([numberType(), stringType()])
|
|
10754
10632
|
});
|
|
10755
|
-
const
|
|
10756
|
-
|
|
10757
|
-
|
|
10758
|
-
|
|
10633
|
+
const PROMOTION_QUERY_KEY = "promotions";
|
|
10634
|
+
const promotionsQueryKeys = {
|
|
10635
|
+
list: (query2) => [
|
|
10636
|
+
PROMOTION_QUERY_KEY,
|
|
10637
|
+
query2 ? query2 : void 0
|
|
10638
|
+
],
|
|
10639
|
+
detail: (id, query2) => [
|
|
10640
|
+
PROMOTION_QUERY_KEY,
|
|
10641
|
+
id,
|
|
10642
|
+
query2 ? query2 : void 0
|
|
10643
|
+
]
|
|
10644
|
+
};
|
|
10645
|
+
const usePromotions = (query2, options) => {
|
|
10646
|
+
const { data, ...rest } = useQuery({
|
|
10647
|
+
queryKey: promotionsQueryKeys.list(query2),
|
|
10648
|
+
queryFn: async () => sdk.admin.promotion.list(query2),
|
|
10649
|
+
...options
|
|
10759
10650
|
});
|
|
10760
|
-
|
|
10761
|
-
|
|
10651
|
+
return { ...data, ...rest };
|
|
10652
|
+
};
|
|
10653
|
+
const Promotions = () => {
|
|
10654
|
+
const { id } = useParams();
|
|
10655
|
+
const {
|
|
10656
|
+
order: preview,
|
|
10657
|
+
isError: isPreviewError,
|
|
10658
|
+
error: previewError
|
|
10659
|
+
} = useOrderPreview(id, void 0);
|
|
10660
|
+
useInitiateOrderEdit({ preview });
|
|
10661
|
+
const { onCancel } = useCancelOrderEdit({ preview });
|
|
10662
|
+
if (isPreviewError) {
|
|
10663
|
+
throw previewError;
|
|
10762
10664
|
}
|
|
10763
|
-
const isReady =
|
|
10764
|
-
return /* @__PURE__ */ jsxs(RouteDrawer, { children: [
|
|
10765
|
-
/* @__PURE__ */
|
|
10766
|
-
|
|
10767
|
-
/* @__PURE__ */ jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Edit the email for the draft order" }) })
|
|
10768
|
-
] }),
|
|
10769
|
-
isReady && /* @__PURE__ */ jsx(EmailForm, { order })
|
|
10665
|
+
const isReady = !!preview;
|
|
10666
|
+
return /* @__PURE__ */ jsxs(RouteDrawer, { onClose: onCancel, children: [
|
|
10667
|
+
/* @__PURE__ */ jsx(RouteDrawer.Header, { children: /* @__PURE__ */ jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsx(Heading, { children: "Edit Promotions" }) }) }),
|
|
10668
|
+
isReady && /* @__PURE__ */ jsx(PromotionForm, { preview })
|
|
10770
10669
|
] });
|
|
10771
10670
|
};
|
|
10772
|
-
const
|
|
10773
|
-
const
|
|
10774
|
-
|
|
10775
|
-
|
|
10776
|
-
},
|
|
10777
|
-
resolver: zodResolver(schema$3)
|
|
10778
|
-
});
|
|
10779
|
-
const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
|
|
10671
|
+
const PromotionForm = ({ preview }) => {
|
|
10672
|
+
const { items, shipping_methods } = preview;
|
|
10673
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
10674
|
+
const [comboboxValue, setComboboxValue] = useState("");
|
|
10780
10675
|
const { handleSuccess } = useRouteModal();
|
|
10781
|
-
const
|
|
10782
|
-
|
|
10783
|
-
|
|
10676
|
+
const { mutateAsync: addPromotions, isPending: isAddingPromotions } = useDraftOrderAddPromotions(preview.id);
|
|
10677
|
+
const promoIds = getPromotionIds(items, shipping_methods);
|
|
10678
|
+
const { promotions, isPending, isError, error } = usePromotions(
|
|
10679
|
+
{
|
|
10680
|
+
id: promoIds
|
|
10681
|
+
},
|
|
10682
|
+
{
|
|
10683
|
+
enabled: !!promoIds.length
|
|
10684
|
+
}
|
|
10685
|
+
);
|
|
10686
|
+
const comboboxData = useComboboxData({
|
|
10687
|
+
queryKey: ["promotions", "combobox", promoIds],
|
|
10688
|
+
queryFn: async (params) => {
|
|
10689
|
+
return await sdk.admin.promotion.list({
|
|
10690
|
+
...params,
|
|
10691
|
+
id: {
|
|
10692
|
+
$nin: promoIds
|
|
10693
|
+
}
|
|
10694
|
+
});
|
|
10695
|
+
},
|
|
10696
|
+
getOptions: (data) => {
|
|
10697
|
+
return data.promotions.map((promotion) => ({
|
|
10698
|
+
label: promotion.code,
|
|
10699
|
+
value: promotion.code
|
|
10700
|
+
}));
|
|
10701
|
+
}
|
|
10702
|
+
});
|
|
10703
|
+
const add = async (value) => {
|
|
10704
|
+
if (!value) {
|
|
10705
|
+
return;
|
|
10706
|
+
}
|
|
10707
|
+
addPromotions(
|
|
10784
10708
|
{
|
|
10785
|
-
|
|
10786
|
-
|
|
10709
|
+
promo_codes: [value]
|
|
10710
|
+
},
|
|
10711
|
+
{
|
|
10712
|
+
onError: (e) => {
|
|
10713
|
+
toast.error(e.message);
|
|
10714
|
+
comboboxData.onSearchValueChange("");
|
|
10715
|
+
setComboboxValue("");
|
|
10787
10716
|
},
|
|
10788
|
-
|
|
10789
|
-
|
|
10717
|
+
onSuccess: () => {
|
|
10718
|
+
comboboxData.onSearchValueChange("");
|
|
10719
|
+
setComboboxValue("");
|
|
10790
10720
|
}
|
|
10791
10721
|
}
|
|
10792
10722
|
);
|
|
10793
|
-
}
|
|
10794
|
-
|
|
10795
|
-
|
|
10796
|
-
|
|
10797
|
-
|
|
10798
|
-
|
|
10799
|
-
|
|
10800
|
-
|
|
10801
|
-
|
|
10802
|
-
|
|
10803
|
-
|
|
10804
|
-
|
|
10805
|
-
|
|
10806
|
-
|
|
10807
|
-
|
|
10808
|
-
|
|
10809
|
-
|
|
10810
|
-
}
|
|
10811
|
-
) }),
|
|
10812
|
-
/* @__PURE__ */ jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2", children: [
|
|
10813
|
-
/* @__PURE__ */ jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
|
|
10814
|
-
/* @__PURE__ */ jsx(Button, { size: "small", type: "submit", isLoading: isPending, children: "Save" })
|
|
10815
|
-
] }) })
|
|
10816
|
-
]
|
|
10723
|
+
};
|
|
10724
|
+
const { mutateAsync: confirmOrderEdit } = useDraftOrderConfirmEdit(preview.id);
|
|
10725
|
+
const { mutateAsync: requestOrderEdit } = useOrderEditRequest(preview.id);
|
|
10726
|
+
const onSubmit = async () => {
|
|
10727
|
+
setIsSubmitting(true);
|
|
10728
|
+
let requestSucceeded = false;
|
|
10729
|
+
await requestOrderEdit(void 0, {
|
|
10730
|
+
onError: (e) => {
|
|
10731
|
+
toast.error(e.message);
|
|
10732
|
+
},
|
|
10733
|
+
onSuccess: () => {
|
|
10734
|
+
requestSucceeded = true;
|
|
10735
|
+
}
|
|
10736
|
+
});
|
|
10737
|
+
if (!requestSucceeded) {
|
|
10738
|
+
setIsSubmitting(false);
|
|
10739
|
+
return;
|
|
10817
10740
|
}
|
|
10818
|
-
|
|
10819
|
-
|
|
10820
|
-
|
|
10821
|
-
|
|
10822
|
-
|
|
10823
|
-
|
|
10824
|
-
|
|
10825
|
-
|
|
10826
|
-
|
|
10827
|
-
"div",
|
|
10828
|
-
{
|
|
10829
|
-
ref,
|
|
10830
|
-
className: clx(
|
|
10831
|
-
"bg-ui-bg-component txt-small text-ui-fg-subtle grid grid-cols-[4px_1fr] items-start gap-3 rounded-lg border p-3",
|
|
10832
|
-
className
|
|
10833
|
-
),
|
|
10834
|
-
...props,
|
|
10835
|
-
children: [
|
|
10836
|
-
/* @__PURE__ */ jsx(
|
|
10837
|
-
"div",
|
|
10838
|
-
{
|
|
10839
|
-
role: "presentation",
|
|
10840
|
-
className: clx("w-4px bg-ui-tag-neutral-icon h-full rounded-full", {
|
|
10841
|
-
"bg-ui-tag-orange-icon": variant === "warning"
|
|
10842
|
-
})
|
|
10843
|
-
}
|
|
10844
|
-
),
|
|
10845
|
-
/* @__PURE__ */ jsxs("div", { className: "text-pretty", children: [
|
|
10846
|
-
/* @__PURE__ */ jsxs("strong", { className: "txt-small-plus text-ui-fg-base", children: [
|
|
10847
|
-
labelValue,
|
|
10848
|
-
":"
|
|
10849
|
-
] }),
|
|
10850
|
-
" ",
|
|
10851
|
-
children
|
|
10852
|
-
] })
|
|
10853
|
-
]
|
|
10741
|
+
await confirmOrderEdit(void 0, {
|
|
10742
|
+
onError: (e) => {
|
|
10743
|
+
toast.error(e.message);
|
|
10744
|
+
},
|
|
10745
|
+
onSuccess: () => {
|
|
10746
|
+
handleSuccess();
|
|
10747
|
+
},
|
|
10748
|
+
onSettled: () => {
|
|
10749
|
+
setIsSubmitting(false);
|
|
10854
10750
|
}
|
|
10855
|
-
);
|
|
10856
|
-
}
|
|
10857
|
-
);
|
|
10858
|
-
InlineTip.displayName = "InlineTip";
|
|
10859
|
-
const MetadataFieldSchema = objectType({
|
|
10860
|
-
key: stringType(),
|
|
10861
|
-
disabled: booleanType().optional(),
|
|
10862
|
-
value: anyType()
|
|
10863
|
-
});
|
|
10864
|
-
const MetadataSchema = objectType({
|
|
10865
|
-
metadata: arrayType(MetadataFieldSchema)
|
|
10866
|
-
});
|
|
10867
|
-
const Metadata = () => {
|
|
10868
|
-
const { id } = useParams();
|
|
10869
|
-
const { order, isPending, isError, error } = useOrder(id, {
|
|
10870
|
-
fields: "metadata"
|
|
10871
|
-
});
|
|
10751
|
+
});
|
|
10752
|
+
};
|
|
10872
10753
|
if (isError) {
|
|
10873
10754
|
throw error;
|
|
10874
10755
|
}
|
|
10875
|
-
|
|
10876
|
-
|
|
10877
|
-
|
|
10878
|
-
|
|
10879
|
-
|
|
10880
|
-
|
|
10881
|
-
|
|
10756
|
+
return /* @__PURE__ */ jsxs(KeyboundForm, { className: "flex flex-1 flex-col", onSubmit, children: [
|
|
10757
|
+
/* @__PURE__ */ jsx(RouteDrawer.Body, { children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
|
|
10758
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", children: [
|
|
10759
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
|
|
10760
|
+
/* @__PURE__ */ jsx(Label$1, { size: "small", weight: "plus", htmlFor: "promotion-combobox", children: "Apply promotions" }),
|
|
10761
|
+
/* @__PURE__ */ jsx(Hint$1, { id: "promotion-combobox-hint", children: "Manage promotions that should be applied to the order." })
|
|
10762
|
+
] }),
|
|
10763
|
+
/* @__PURE__ */ jsx(
|
|
10764
|
+
Combobox,
|
|
10765
|
+
{
|
|
10766
|
+
id: "promotion-combobox",
|
|
10767
|
+
"aria-describedby": "promotion-combobox-hint",
|
|
10768
|
+
isFetchingNextPage: comboboxData.isFetchingNextPage,
|
|
10769
|
+
fetchNextPage: comboboxData.fetchNextPage,
|
|
10770
|
+
options: comboboxData.options,
|
|
10771
|
+
onSearchValueChange: comboboxData.onSearchValueChange,
|
|
10772
|
+
searchValue: comboboxData.searchValue,
|
|
10773
|
+
disabled: comboboxData.disabled || isAddingPromotions,
|
|
10774
|
+
onChange: add,
|
|
10775
|
+
value: comboboxValue
|
|
10776
|
+
}
|
|
10777
|
+
)
|
|
10778
|
+
] }),
|
|
10779
|
+
/* @__PURE__ */ jsx(Divider, { variant: "dashed" }),
|
|
10780
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2", children: promotions == null ? void 0 : promotions.map((promotion) => /* @__PURE__ */ jsx(
|
|
10781
|
+
PromotionItem,
|
|
10782
|
+
{
|
|
10783
|
+
promotion,
|
|
10784
|
+
orderId: preview.id,
|
|
10785
|
+
isLoading: isPending
|
|
10786
|
+
},
|
|
10787
|
+
promotion.id
|
|
10788
|
+
)) })
|
|
10789
|
+
] }) }),
|
|
10790
|
+
/* @__PURE__ */ jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2", children: [
|
|
10791
|
+
/* @__PURE__ */ jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
|
|
10792
|
+
/* @__PURE__ */ jsx(
|
|
10793
|
+
Button,
|
|
10794
|
+
{
|
|
10795
|
+
size: "small",
|
|
10796
|
+
type: "submit",
|
|
10797
|
+
isLoading: isSubmitting || isAddingPromotions,
|
|
10798
|
+
children: "Save"
|
|
10799
|
+
}
|
|
10800
|
+
)
|
|
10801
|
+
] }) })
|
|
10882
10802
|
] });
|
|
10883
10803
|
};
|
|
10884
|
-
const
|
|
10885
|
-
|
|
10886
|
-
|
|
10887
|
-
|
|
10888
|
-
|
|
10889
|
-
|
|
10890
|
-
const
|
|
10891
|
-
|
|
10892
|
-
|
|
10893
|
-
},
|
|
10894
|
-
resolver: zodResolver(MetadataSchema)
|
|
10895
|
-
});
|
|
10896
|
-
const handleSubmit = form.handleSubmit(async (data) => {
|
|
10897
|
-
const parsedData = parseValues(data);
|
|
10898
|
-
await mutateAsync(
|
|
10804
|
+
const PromotionItem = ({
|
|
10805
|
+
promotion,
|
|
10806
|
+
orderId,
|
|
10807
|
+
isLoading
|
|
10808
|
+
}) => {
|
|
10809
|
+
var _a;
|
|
10810
|
+
const { mutateAsync: removePromotions, isPending } = useDraftOrderRemovePromotions(orderId);
|
|
10811
|
+
const onRemove = async () => {
|
|
10812
|
+
removePromotions(
|
|
10899
10813
|
{
|
|
10900
|
-
|
|
10814
|
+
promo_codes: [promotion.code]
|
|
10901
10815
|
},
|
|
10902
10816
|
{
|
|
10903
|
-
|
|
10904
|
-
toast.
|
|
10905
|
-
handleSuccess();
|
|
10906
|
-
},
|
|
10907
|
-
onError: (error) => {
|
|
10908
|
-
toast.error(error.message);
|
|
10817
|
+
onError: (e) => {
|
|
10818
|
+
toast.error(e.message);
|
|
10909
10819
|
}
|
|
10910
10820
|
}
|
|
10911
10821
|
);
|
|
10912
|
-
}
|
|
10913
|
-
const
|
|
10914
|
-
|
|
10915
|
-
|
|
10916
|
-
|
|
10917
|
-
|
|
10918
|
-
|
|
10919
|
-
|
|
10822
|
+
};
|
|
10823
|
+
const displayValue = getDisplayValue(promotion);
|
|
10824
|
+
return /* @__PURE__ */ jsxs(
|
|
10825
|
+
"div",
|
|
10826
|
+
{
|
|
10827
|
+
className: clx(
|
|
10828
|
+
"bg-ui-bg-component shadow-elevation-card-rest flex items-center justify-between rounded-lg px-3 py-2",
|
|
10829
|
+
{
|
|
10830
|
+
"animate-pulse": isLoading
|
|
10831
|
+
}
|
|
10832
|
+
),
|
|
10833
|
+
children: [
|
|
10834
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
10835
|
+
/* @__PURE__ */ jsx(Text, { size: "small", weight: "plus", leading: "compact", children: promotion.code }),
|
|
10836
|
+
/* @__PURE__ */ jsxs("div", { className: "text-ui-fg-subtle flex items-center gap-1.5", children: [
|
|
10837
|
+
displayValue && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
10838
|
+
/* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", children: displayValue }),
|
|
10839
|
+
/* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", children: "·" })
|
|
10840
|
+
] }),
|
|
10841
|
+
/* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", className: "capitalize", children: (_a = promotion.application_method) == null ? void 0 : _a.allocation })
|
|
10842
|
+
] })
|
|
10843
|
+
] }),
|
|
10844
|
+
/* @__PURE__ */ jsx(
|
|
10845
|
+
IconButton,
|
|
10846
|
+
{
|
|
10847
|
+
size: "small",
|
|
10848
|
+
type: "button",
|
|
10849
|
+
variant: "transparent",
|
|
10850
|
+
onClick: onRemove,
|
|
10851
|
+
isLoading: isPending || isLoading,
|
|
10852
|
+
children: /* @__PURE__ */ jsx(XMark, {})
|
|
10853
|
+
}
|
|
10854
|
+
)
|
|
10855
|
+
]
|
|
10856
|
+
},
|
|
10857
|
+
promotion.id
|
|
10858
|
+
);
|
|
10859
|
+
};
|
|
10860
|
+
function getDisplayValue(promotion) {
|
|
10861
|
+
var _a, _b, _c, _d;
|
|
10862
|
+
const value = (_a = promotion.application_method) == null ? void 0 : _a.value;
|
|
10863
|
+
if (!value) {
|
|
10864
|
+
return null;
|
|
10865
|
+
}
|
|
10866
|
+
if (((_b = promotion.application_method) == null ? void 0 : _b.type) === "fixed") {
|
|
10867
|
+
const currency = (_c = promotion.application_method) == null ? void 0 : _c.currency_code;
|
|
10868
|
+
if (!currency) {
|
|
10869
|
+
return null;
|
|
10870
|
+
}
|
|
10871
|
+
return getLocaleAmount(value, currency);
|
|
10872
|
+
} else if (((_d = promotion.application_method) == null ? void 0 : _d.type) === "percentage") {
|
|
10873
|
+
return formatPercentage(value);
|
|
10874
|
+
}
|
|
10875
|
+
return null;
|
|
10876
|
+
}
|
|
10877
|
+
const formatter = new Intl.NumberFormat([], {
|
|
10878
|
+
style: "percent",
|
|
10879
|
+
minimumFractionDigits: 2
|
|
10880
|
+
});
|
|
10881
|
+
const formatPercentage = (value, isPercentageValue = false) => {
|
|
10882
|
+
let val = value || 0;
|
|
10883
|
+
if (!isPercentageValue) {
|
|
10884
|
+
val = val / 100;
|
|
10885
|
+
}
|
|
10886
|
+
return formatter.format(val);
|
|
10887
|
+
};
|
|
10888
|
+
function getPromotionIds(items, shippingMethods) {
|
|
10889
|
+
const promotionIds = /* @__PURE__ */ new Set();
|
|
10890
|
+
for (const item of items) {
|
|
10891
|
+
if (item.adjustments) {
|
|
10892
|
+
for (const adjustment of item.adjustments) {
|
|
10893
|
+
if (adjustment.promotion_id) {
|
|
10894
|
+
promotionIds.add(adjustment.promotion_id);
|
|
10895
|
+
}
|
|
10896
|
+
}
|
|
10897
|
+
}
|
|
10898
|
+
}
|
|
10899
|
+
for (const shippingMethod of shippingMethods) {
|
|
10900
|
+
if (shippingMethod.adjustments) {
|
|
10901
|
+
for (const adjustment of shippingMethod.adjustments) {
|
|
10902
|
+
if (adjustment.promotion_id) {
|
|
10903
|
+
promotionIds.add(adjustment.promotion_id);
|
|
10904
|
+
}
|
|
10905
|
+
}
|
|
10906
|
+
}
|
|
10907
|
+
}
|
|
10908
|
+
return Array.from(promotionIds);
|
|
10909
|
+
}
|
|
10910
|
+
const InlineTip = forwardRef(
|
|
10911
|
+
({ variant = "tip", label, className, children, ...props }, ref) => {
|
|
10912
|
+
const labelValue = label || (variant === "warning" ? "Warning" : "Tip");
|
|
10913
|
+
return /* @__PURE__ */ jsxs(
|
|
10914
|
+
"div",
|
|
10915
|
+
{
|
|
10916
|
+
ref,
|
|
10917
|
+
className: clx(
|
|
10918
|
+
"bg-ui-bg-component txt-small text-ui-fg-subtle grid grid-cols-[4px_1fr] items-start gap-3 rounded-lg border p-3",
|
|
10919
|
+
className
|
|
10920
|
+
),
|
|
10921
|
+
...props,
|
|
10922
|
+
children: [
|
|
10923
|
+
/* @__PURE__ */ jsx(
|
|
10924
|
+
"div",
|
|
10925
|
+
{
|
|
10926
|
+
role: "presentation",
|
|
10927
|
+
className: clx("w-4px bg-ui-tag-neutral-icon h-full rounded-full", {
|
|
10928
|
+
"bg-ui-tag-orange-icon": variant === "warning"
|
|
10929
|
+
})
|
|
10930
|
+
}
|
|
10931
|
+
),
|
|
10932
|
+
/* @__PURE__ */ jsxs("div", { className: "text-pretty", children: [
|
|
10933
|
+
/* @__PURE__ */ jsxs("strong", { className: "txt-small-plus text-ui-fg-base", children: [
|
|
10934
|
+
labelValue,
|
|
10935
|
+
":"
|
|
10936
|
+
] }),
|
|
10937
|
+
" ",
|
|
10938
|
+
children
|
|
10939
|
+
] })
|
|
10940
|
+
]
|
|
10941
|
+
}
|
|
10942
|
+
);
|
|
10943
|
+
}
|
|
10944
|
+
);
|
|
10945
|
+
InlineTip.displayName = "InlineTip";
|
|
10946
|
+
const MetadataFieldSchema = objectType({
|
|
10947
|
+
key: stringType(),
|
|
10948
|
+
disabled: booleanType().optional(),
|
|
10949
|
+
value: anyType()
|
|
10950
|
+
});
|
|
10951
|
+
const MetadataSchema = objectType({
|
|
10952
|
+
metadata: arrayType(MetadataFieldSchema)
|
|
10953
|
+
});
|
|
10954
|
+
const Metadata = () => {
|
|
10955
|
+
const { id } = useParams();
|
|
10956
|
+
const { order, isPending, isError, error } = useOrder(id, {
|
|
10957
|
+
fields: "metadata"
|
|
10958
|
+
});
|
|
10959
|
+
if (isError) {
|
|
10960
|
+
throw error;
|
|
10961
|
+
}
|
|
10962
|
+
const isReady = !isPending && !!order;
|
|
10963
|
+
return /* @__PURE__ */ jsxs(RouteDrawer, { children: [
|
|
10964
|
+
/* @__PURE__ */ jsxs(RouteDrawer.Header, { children: [
|
|
10965
|
+
/* @__PURE__ */ jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsx(Heading, { children: "Metadata" }) }),
|
|
10966
|
+
/* @__PURE__ */ jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Add metadata to the draft order." }) })
|
|
10967
|
+
] }),
|
|
10968
|
+
!isReady ? /* @__PURE__ */ jsx(PlaceholderInner, {}) : /* @__PURE__ */ jsx(MetadataForm, { orderId: id, metadata: order == null ? void 0 : order.metadata })
|
|
10969
|
+
] });
|
|
10970
|
+
};
|
|
10971
|
+
const METADATA_KEY_LABEL_ID = "metadata-form-key-label";
|
|
10972
|
+
const METADATA_VALUE_LABEL_ID = "metadata-form-value-label";
|
|
10973
|
+
const MetadataForm = ({ orderId, metadata }) => {
|
|
10974
|
+
const { handleSuccess } = useRouteModal();
|
|
10975
|
+
const hasUneditableRows = getHasUneditableRows(metadata);
|
|
10976
|
+
const { mutateAsync, isPending } = useUpdateDraftOrder(orderId);
|
|
10977
|
+
const form = useForm({
|
|
10978
|
+
defaultValues: {
|
|
10979
|
+
metadata: getDefaultValues(metadata)
|
|
10980
|
+
},
|
|
10981
|
+
resolver: zodResolver(MetadataSchema)
|
|
10982
|
+
});
|
|
10983
|
+
const handleSubmit = form.handleSubmit(async (data) => {
|
|
10984
|
+
const parsedData = parseValues(data);
|
|
10985
|
+
await mutateAsync(
|
|
10986
|
+
{
|
|
10987
|
+
metadata: parsedData
|
|
10988
|
+
},
|
|
10989
|
+
{
|
|
10990
|
+
onSuccess: () => {
|
|
10991
|
+
toast.success("Metadata updated");
|
|
10992
|
+
handleSuccess();
|
|
10993
|
+
},
|
|
10994
|
+
onError: (error) => {
|
|
10995
|
+
toast.error(error.message);
|
|
10996
|
+
}
|
|
10997
|
+
}
|
|
10998
|
+
);
|
|
10999
|
+
});
|
|
11000
|
+
const { fields, insert, remove } = useFieldArray({
|
|
11001
|
+
control: form.control,
|
|
11002
|
+
name: "metadata"
|
|
11003
|
+
});
|
|
11004
|
+
function deleteRow(index) {
|
|
11005
|
+
remove(index);
|
|
11006
|
+
if (fields.length === 1) {
|
|
10920
11007
|
insert(0, {
|
|
10921
11008
|
key: "",
|
|
10922
11009
|
value: "",
|
|
@@ -11133,319 +11220,42 @@ function parseValues(values) {
|
|
|
11133
11220
|
if (isEmpty) {
|
|
11134
11221
|
return null;
|
|
11135
11222
|
}
|
|
11136
|
-
const update = {};
|
|
11137
|
-
metadata.forEach((field) => {
|
|
11138
|
-
let key = field.key;
|
|
11139
|
-
let value = field.value;
|
|
11140
|
-
const disabled = field.disabled;
|
|
11141
|
-
if (!key || !value) {
|
|
11142
|
-
return;
|
|
11143
|
-
}
|
|
11144
|
-
if (disabled) {
|
|
11145
|
-
update[key] = value;
|
|
11146
|
-
return;
|
|
11147
|
-
}
|
|
11148
|
-
key = key.trim();
|
|
11149
|
-
value = value.trim();
|
|
11150
|
-
if (value === "true") {
|
|
11151
|
-
update[key] = true;
|
|
11152
|
-
} else if (value === "false") {
|
|
11153
|
-
update[key] = false;
|
|
11154
|
-
} else {
|
|
11155
|
-
const parsedNumber = parseFloat(value);
|
|
11156
|
-
if (!isNaN(parsedNumber)) {
|
|
11157
|
-
update[key] = parsedNumber;
|
|
11158
|
-
} else {
|
|
11159
|
-
update[key] = value;
|
|
11160
|
-
}
|
|
11161
|
-
}
|
|
11162
|
-
});
|
|
11163
|
-
return update;
|
|
11164
|
-
}
|
|
11165
|
-
function getHasUneditableRows(metadata) {
|
|
11166
|
-
if (!metadata) {
|
|
11167
|
-
return false;
|
|
11168
|
-
}
|
|
11169
|
-
return Object.values(metadata).some(
|
|
11170
|
-
(value) => !EDITABLE_TYPES.includes(typeof value)
|
|
11171
|
-
);
|
|
11172
|
-
}
|
|
11173
|
-
const PROMOTION_QUERY_KEY = "promotions";
|
|
11174
|
-
const promotionsQueryKeys = {
|
|
11175
|
-
list: (query2) => [
|
|
11176
|
-
PROMOTION_QUERY_KEY,
|
|
11177
|
-
query2 ? query2 : void 0
|
|
11178
|
-
],
|
|
11179
|
-
detail: (id, query2) => [
|
|
11180
|
-
PROMOTION_QUERY_KEY,
|
|
11181
|
-
id,
|
|
11182
|
-
query2 ? query2 : void 0
|
|
11183
|
-
]
|
|
11184
|
-
};
|
|
11185
|
-
const usePromotions = (query2, options) => {
|
|
11186
|
-
const { data, ...rest } = useQuery({
|
|
11187
|
-
queryKey: promotionsQueryKeys.list(query2),
|
|
11188
|
-
queryFn: async () => sdk.admin.promotion.list(query2),
|
|
11189
|
-
...options
|
|
11190
|
-
});
|
|
11191
|
-
return { ...data, ...rest };
|
|
11192
|
-
};
|
|
11193
|
-
const Promotions = () => {
|
|
11194
|
-
const { id } = useParams();
|
|
11195
|
-
const {
|
|
11196
|
-
order: preview,
|
|
11197
|
-
isError: isPreviewError,
|
|
11198
|
-
error: previewError
|
|
11199
|
-
} = useOrderPreview(id, void 0);
|
|
11200
|
-
useInitiateOrderEdit({ preview });
|
|
11201
|
-
const { onCancel } = useCancelOrderEdit({ preview });
|
|
11202
|
-
if (isPreviewError) {
|
|
11203
|
-
throw previewError;
|
|
11204
|
-
}
|
|
11205
|
-
const isReady = !!preview;
|
|
11206
|
-
return /* @__PURE__ */ jsxs(RouteDrawer, { onClose: onCancel, children: [
|
|
11207
|
-
/* @__PURE__ */ jsx(RouteDrawer.Header, { children: /* @__PURE__ */ jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsx(Heading, { children: "Edit Promotions" }) }) }),
|
|
11208
|
-
isReady && /* @__PURE__ */ jsx(PromotionForm, { preview })
|
|
11209
|
-
] });
|
|
11210
|
-
};
|
|
11211
|
-
const PromotionForm = ({ preview }) => {
|
|
11212
|
-
const { items, shipping_methods } = preview;
|
|
11213
|
-
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
11214
|
-
const [comboboxValue, setComboboxValue] = useState("");
|
|
11215
|
-
const { handleSuccess } = useRouteModal();
|
|
11216
|
-
const { mutateAsync: addPromotions, isPending: isAddingPromotions } = useDraftOrderAddPromotions(preview.id);
|
|
11217
|
-
const promoIds = getPromotionIds(items, shipping_methods);
|
|
11218
|
-
const { promotions, isPending, isError, error } = usePromotions(
|
|
11219
|
-
{
|
|
11220
|
-
id: promoIds
|
|
11221
|
-
},
|
|
11222
|
-
{
|
|
11223
|
-
enabled: !!promoIds.length
|
|
11224
|
-
}
|
|
11225
|
-
);
|
|
11226
|
-
const comboboxData = useComboboxData({
|
|
11227
|
-
queryKey: ["promotions", "combobox", promoIds],
|
|
11228
|
-
queryFn: async (params) => {
|
|
11229
|
-
return await sdk.admin.promotion.list({
|
|
11230
|
-
...params,
|
|
11231
|
-
id: {
|
|
11232
|
-
$nin: promoIds
|
|
11233
|
-
}
|
|
11234
|
-
});
|
|
11235
|
-
},
|
|
11236
|
-
getOptions: (data) => {
|
|
11237
|
-
return data.promotions.map((promotion) => ({
|
|
11238
|
-
label: promotion.code,
|
|
11239
|
-
value: promotion.code
|
|
11240
|
-
}));
|
|
11241
|
-
}
|
|
11242
|
-
});
|
|
11243
|
-
const add = async (value) => {
|
|
11244
|
-
if (!value) {
|
|
11245
|
-
return;
|
|
11246
|
-
}
|
|
11247
|
-
addPromotions(
|
|
11248
|
-
{
|
|
11249
|
-
promo_codes: [value]
|
|
11250
|
-
},
|
|
11251
|
-
{
|
|
11252
|
-
onError: (e) => {
|
|
11253
|
-
toast.error(e.message);
|
|
11254
|
-
comboboxData.onSearchValueChange("");
|
|
11255
|
-
setComboboxValue("");
|
|
11256
|
-
},
|
|
11257
|
-
onSuccess: () => {
|
|
11258
|
-
comboboxData.onSearchValueChange("");
|
|
11259
|
-
setComboboxValue("");
|
|
11260
|
-
}
|
|
11261
|
-
}
|
|
11262
|
-
);
|
|
11263
|
-
};
|
|
11264
|
-
const { mutateAsync: confirmOrderEdit } = useDraftOrderConfirmEdit(preview.id);
|
|
11265
|
-
const { mutateAsync: requestOrderEdit } = useOrderEditRequest(preview.id);
|
|
11266
|
-
const onSubmit = async () => {
|
|
11267
|
-
setIsSubmitting(true);
|
|
11268
|
-
let requestSucceeded = false;
|
|
11269
|
-
await requestOrderEdit(void 0, {
|
|
11270
|
-
onError: (e) => {
|
|
11271
|
-
toast.error(e.message);
|
|
11272
|
-
},
|
|
11273
|
-
onSuccess: () => {
|
|
11274
|
-
requestSucceeded = true;
|
|
11275
|
-
}
|
|
11276
|
-
});
|
|
11277
|
-
if (!requestSucceeded) {
|
|
11278
|
-
setIsSubmitting(false);
|
|
11279
|
-
return;
|
|
11280
|
-
}
|
|
11281
|
-
await confirmOrderEdit(void 0, {
|
|
11282
|
-
onError: (e) => {
|
|
11283
|
-
toast.error(e.message);
|
|
11284
|
-
},
|
|
11285
|
-
onSuccess: () => {
|
|
11286
|
-
handleSuccess();
|
|
11287
|
-
},
|
|
11288
|
-
onSettled: () => {
|
|
11289
|
-
setIsSubmitting(false);
|
|
11290
|
-
}
|
|
11291
|
-
});
|
|
11292
|
-
};
|
|
11293
|
-
if (isError) {
|
|
11294
|
-
throw error;
|
|
11295
|
-
}
|
|
11296
|
-
return /* @__PURE__ */ jsxs(KeyboundForm, { className: "flex flex-1 flex-col", onSubmit, children: [
|
|
11297
|
-
/* @__PURE__ */ jsx(RouteDrawer.Body, { children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
|
|
11298
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", children: [
|
|
11299
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
|
|
11300
|
-
/* @__PURE__ */ jsx(Label$1, { size: "small", weight: "plus", htmlFor: "promotion-combobox", children: "Apply promotions" }),
|
|
11301
|
-
/* @__PURE__ */ jsx(Hint$1, { id: "promotion-combobox-hint", children: "Manage promotions that should be applied to the order." })
|
|
11302
|
-
] }),
|
|
11303
|
-
/* @__PURE__ */ jsx(
|
|
11304
|
-
Combobox,
|
|
11305
|
-
{
|
|
11306
|
-
id: "promotion-combobox",
|
|
11307
|
-
"aria-describedby": "promotion-combobox-hint",
|
|
11308
|
-
isFetchingNextPage: comboboxData.isFetchingNextPage,
|
|
11309
|
-
fetchNextPage: comboboxData.fetchNextPage,
|
|
11310
|
-
options: comboboxData.options,
|
|
11311
|
-
onSearchValueChange: comboboxData.onSearchValueChange,
|
|
11312
|
-
searchValue: comboboxData.searchValue,
|
|
11313
|
-
disabled: comboboxData.disabled || isAddingPromotions,
|
|
11314
|
-
onChange: add,
|
|
11315
|
-
value: comboboxValue
|
|
11316
|
-
}
|
|
11317
|
-
)
|
|
11318
|
-
] }),
|
|
11319
|
-
/* @__PURE__ */ jsx(Divider, { variant: "dashed" }),
|
|
11320
|
-
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2", children: promotions == null ? void 0 : promotions.map((promotion) => /* @__PURE__ */ jsx(
|
|
11321
|
-
PromotionItem,
|
|
11322
|
-
{
|
|
11323
|
-
promotion,
|
|
11324
|
-
orderId: preview.id,
|
|
11325
|
-
isLoading: isPending
|
|
11326
|
-
},
|
|
11327
|
-
promotion.id
|
|
11328
|
-
)) })
|
|
11329
|
-
] }) }),
|
|
11330
|
-
/* @__PURE__ */ jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2", children: [
|
|
11331
|
-
/* @__PURE__ */ jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
|
|
11332
|
-
/* @__PURE__ */ jsx(
|
|
11333
|
-
Button,
|
|
11334
|
-
{
|
|
11335
|
-
size: "small",
|
|
11336
|
-
type: "submit",
|
|
11337
|
-
isLoading: isSubmitting || isAddingPromotions,
|
|
11338
|
-
children: "Save"
|
|
11339
|
-
}
|
|
11340
|
-
)
|
|
11341
|
-
] }) })
|
|
11342
|
-
] });
|
|
11343
|
-
};
|
|
11344
|
-
const PromotionItem = ({
|
|
11345
|
-
promotion,
|
|
11346
|
-
orderId,
|
|
11347
|
-
isLoading
|
|
11348
|
-
}) => {
|
|
11349
|
-
var _a;
|
|
11350
|
-
const { mutateAsync: removePromotions, isPending } = useDraftOrderRemovePromotions(orderId);
|
|
11351
|
-
const onRemove = async () => {
|
|
11352
|
-
removePromotions(
|
|
11353
|
-
{
|
|
11354
|
-
promo_codes: [promotion.code]
|
|
11355
|
-
},
|
|
11356
|
-
{
|
|
11357
|
-
onError: (e) => {
|
|
11358
|
-
toast.error(e.message);
|
|
11359
|
-
}
|
|
11360
|
-
}
|
|
11361
|
-
);
|
|
11362
|
-
};
|
|
11363
|
-
const displayValue = getDisplayValue(promotion);
|
|
11364
|
-
return /* @__PURE__ */ jsxs(
|
|
11365
|
-
"div",
|
|
11366
|
-
{
|
|
11367
|
-
className: clx(
|
|
11368
|
-
"bg-ui-bg-component shadow-elevation-card-rest flex items-center justify-between rounded-lg px-3 py-2",
|
|
11369
|
-
{
|
|
11370
|
-
"animate-pulse": isLoading
|
|
11371
|
-
}
|
|
11372
|
-
),
|
|
11373
|
-
children: [
|
|
11374
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
11375
|
-
/* @__PURE__ */ jsx(Text, { size: "small", weight: "plus", leading: "compact", children: promotion.code }),
|
|
11376
|
-
/* @__PURE__ */ jsxs("div", { className: "text-ui-fg-subtle flex items-center gap-1.5", children: [
|
|
11377
|
-
displayValue && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
11378
|
-
/* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", children: displayValue }),
|
|
11379
|
-
/* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", children: "·" })
|
|
11380
|
-
] }),
|
|
11381
|
-
/* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", className: "capitalize", children: (_a = promotion.application_method) == null ? void 0 : _a.allocation })
|
|
11382
|
-
] })
|
|
11383
|
-
] }),
|
|
11384
|
-
/* @__PURE__ */ jsx(
|
|
11385
|
-
IconButton,
|
|
11386
|
-
{
|
|
11387
|
-
size: "small",
|
|
11388
|
-
type: "button",
|
|
11389
|
-
variant: "transparent",
|
|
11390
|
-
onClick: onRemove,
|
|
11391
|
-
isLoading: isPending || isLoading,
|
|
11392
|
-
children: /* @__PURE__ */ jsx(XMark, {})
|
|
11393
|
-
}
|
|
11394
|
-
)
|
|
11395
|
-
]
|
|
11396
|
-
},
|
|
11397
|
-
promotion.id
|
|
11398
|
-
);
|
|
11399
|
-
};
|
|
11400
|
-
function getDisplayValue(promotion) {
|
|
11401
|
-
var _a, _b, _c, _d;
|
|
11402
|
-
const value = (_a = promotion.application_method) == null ? void 0 : _a.value;
|
|
11403
|
-
if (!value) {
|
|
11404
|
-
return null;
|
|
11405
|
-
}
|
|
11406
|
-
if (((_b = promotion.application_method) == null ? void 0 : _b.type) === "fixed") {
|
|
11407
|
-
const currency = (_c = promotion.application_method) == null ? void 0 : _c.currency_code;
|
|
11408
|
-
if (!currency) {
|
|
11409
|
-
return null;
|
|
11410
|
-
}
|
|
11411
|
-
return getLocaleAmount(value, currency);
|
|
11412
|
-
} else if (((_d = promotion.application_method) == null ? void 0 : _d.type) === "percentage") {
|
|
11413
|
-
return formatPercentage(value);
|
|
11414
|
-
}
|
|
11415
|
-
return null;
|
|
11416
|
-
}
|
|
11417
|
-
const formatter = new Intl.NumberFormat([], {
|
|
11418
|
-
style: "percent",
|
|
11419
|
-
minimumFractionDigits: 2
|
|
11420
|
-
});
|
|
11421
|
-
const formatPercentage = (value, isPercentageValue = false) => {
|
|
11422
|
-
let val = value || 0;
|
|
11423
|
-
if (!isPercentageValue) {
|
|
11424
|
-
val = val / 100;
|
|
11425
|
-
}
|
|
11426
|
-
return formatter.format(val);
|
|
11427
|
-
};
|
|
11428
|
-
function getPromotionIds(items, shippingMethods) {
|
|
11429
|
-
const promotionIds = /* @__PURE__ */ new Set();
|
|
11430
|
-
for (const item of items) {
|
|
11431
|
-
if (item.adjustments) {
|
|
11432
|
-
for (const adjustment of item.adjustments) {
|
|
11433
|
-
if (adjustment.promotion_id) {
|
|
11434
|
-
promotionIds.add(adjustment.promotion_id);
|
|
11435
|
-
}
|
|
11436
|
-
}
|
|
11437
|
-
}
|
|
11438
|
-
}
|
|
11439
|
-
for (const shippingMethod of shippingMethods) {
|
|
11440
|
-
if (shippingMethod.adjustments) {
|
|
11441
|
-
for (const adjustment of shippingMethod.adjustments) {
|
|
11442
|
-
if (adjustment.promotion_id) {
|
|
11443
|
-
promotionIds.add(adjustment.promotion_id);
|
|
11444
|
-
}
|
|
11223
|
+
const update = {};
|
|
11224
|
+
metadata.forEach((field) => {
|
|
11225
|
+
let key = field.key;
|
|
11226
|
+
let value = field.value;
|
|
11227
|
+
const disabled = field.disabled;
|
|
11228
|
+
if (!key || !value) {
|
|
11229
|
+
return;
|
|
11230
|
+
}
|
|
11231
|
+
if (disabled) {
|
|
11232
|
+
update[key] = value;
|
|
11233
|
+
return;
|
|
11234
|
+
}
|
|
11235
|
+
key = key.trim();
|
|
11236
|
+
value = value.trim();
|
|
11237
|
+
if (value === "true") {
|
|
11238
|
+
update[key] = true;
|
|
11239
|
+
} else if (value === "false") {
|
|
11240
|
+
update[key] = false;
|
|
11241
|
+
} else {
|
|
11242
|
+
const parsedNumber = parseFloat(value);
|
|
11243
|
+
if (!isNaN(parsedNumber)) {
|
|
11244
|
+
update[key] = parsedNumber;
|
|
11245
|
+
} else {
|
|
11246
|
+
update[key] = value;
|
|
11445
11247
|
}
|
|
11446
11248
|
}
|
|
11249
|
+
});
|
|
11250
|
+
return update;
|
|
11251
|
+
}
|
|
11252
|
+
function getHasUneditableRows(metadata) {
|
|
11253
|
+
if (!metadata) {
|
|
11254
|
+
return false;
|
|
11447
11255
|
}
|
|
11448
|
-
return
|
|
11256
|
+
return Object.values(metadata).some(
|
|
11257
|
+
(value) => !EDITABLE_TYPES.includes(typeof value)
|
|
11258
|
+
);
|
|
11449
11259
|
}
|
|
11450
11260
|
const SalesChannel = () => {
|
|
11451
11261
|
const { id } = useParams();
|
|
@@ -11475,7 +11285,7 @@ const SalesChannelForm = ({ order }) => {
|
|
|
11475
11285
|
defaultValues: {
|
|
11476
11286
|
sales_channel_id: order.sales_channel_id || ""
|
|
11477
11287
|
},
|
|
11478
|
-
resolver: zodResolver(schema$
|
|
11288
|
+
resolver: zodResolver(schema$3)
|
|
11479
11289
|
});
|
|
11480
11290
|
const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
|
|
11481
11291
|
const { handleSuccess } = useRouteModal();
|
|
@@ -11550,7 +11360,7 @@ const SalesChannelField = ({ control, order }) => {
|
|
|
11550
11360
|
}
|
|
11551
11361
|
);
|
|
11552
11362
|
};
|
|
11553
|
-
const schema$
|
|
11363
|
+
const schema$3 = objectType({
|
|
11554
11364
|
sales_channel_id: stringType().min(1)
|
|
11555
11365
|
});
|
|
11556
11366
|
const STACKED_FOCUS_MODAL_ID = "shipping-form";
|
|
@@ -12392,7 +12202,7 @@ const ShippingAddressForm = ({ order }) => {
|
|
|
12392
12202
|
postal_code: ((_i = order.shipping_address) == null ? void 0 : _i.postal_code) ?? "",
|
|
12393
12203
|
phone: ((_j = order.shipping_address) == null ? void 0 : _j.phone) ?? ""
|
|
12394
12204
|
},
|
|
12395
|
-
resolver: zodResolver(schema$
|
|
12205
|
+
resolver: zodResolver(schema$2)
|
|
12396
12206
|
});
|
|
12397
12207
|
const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
|
|
12398
12208
|
const { handleSuccess } = useRouteModal();
|
|
@@ -12562,7 +12372,7 @@ const ShippingAddressForm = ({ order }) => {
|
|
|
12562
12372
|
}
|
|
12563
12373
|
) });
|
|
12564
12374
|
};
|
|
12565
|
-
const schema$
|
|
12375
|
+
const schema$2 = addressSchema;
|
|
12566
12376
|
const TransferOwnership = () => {
|
|
12567
12377
|
const { id } = useParams();
|
|
12568
12378
|
const { draft_order, isPending, isError, error } = useDraftOrder(id, {
|
|
@@ -12586,7 +12396,7 @@ const TransferOwnershipForm = ({ order }) => {
|
|
|
12586
12396
|
defaultValues: {
|
|
12587
12397
|
customer_id: order.customer_id || ""
|
|
12588
12398
|
},
|
|
12589
|
-
resolver: zodResolver(schema)
|
|
12399
|
+
resolver: zodResolver(schema$1)
|
|
12590
12400
|
});
|
|
12591
12401
|
const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
|
|
12592
12402
|
const { handleSuccess } = useRouteModal();
|
|
@@ -13036,9 +12846,199 @@ const Illustration = () => {
|
|
|
13036
12846
|
}
|
|
13037
12847
|
);
|
|
13038
12848
|
};
|
|
13039
|
-
const schema = objectType({
|
|
12849
|
+
const schema$1 = objectType({
|
|
13040
12850
|
customer_id: stringType().min(1)
|
|
13041
12851
|
});
|
|
12852
|
+
const BillingAddress = () => {
|
|
12853
|
+
const { id } = useParams();
|
|
12854
|
+
const { order, isPending, isError, error } = useOrder(id, {
|
|
12855
|
+
fields: "+billing_address"
|
|
12856
|
+
});
|
|
12857
|
+
if (isError) {
|
|
12858
|
+
throw error;
|
|
12859
|
+
}
|
|
12860
|
+
const isReady = !isPending && !!order;
|
|
12861
|
+
return /* @__PURE__ */ jsxs(RouteDrawer, { children: [
|
|
12862
|
+
/* @__PURE__ */ jsxs(RouteDrawer.Header, { children: [
|
|
12863
|
+
/* @__PURE__ */ jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsx(Heading, { children: "Edit Billing Address" }) }),
|
|
12864
|
+
/* @__PURE__ */ jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Edit the billing address for the draft order" }) })
|
|
12865
|
+
] }),
|
|
12866
|
+
isReady && /* @__PURE__ */ jsx(BillingAddressForm, { order })
|
|
12867
|
+
] });
|
|
12868
|
+
};
|
|
12869
|
+
const BillingAddressForm = ({ order }) => {
|
|
12870
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
12871
|
+
const form = useForm({
|
|
12872
|
+
defaultValues: {
|
|
12873
|
+
first_name: ((_a = order.billing_address) == null ? void 0 : _a.first_name) ?? "",
|
|
12874
|
+
last_name: ((_b = order.billing_address) == null ? void 0 : _b.last_name) ?? "",
|
|
12875
|
+
company: ((_c = order.billing_address) == null ? void 0 : _c.company) ?? "",
|
|
12876
|
+
address_1: ((_d = order.billing_address) == null ? void 0 : _d.address_1) ?? "",
|
|
12877
|
+
address_2: ((_e = order.billing_address) == null ? void 0 : _e.address_2) ?? "",
|
|
12878
|
+
city: ((_f = order.billing_address) == null ? void 0 : _f.city) ?? "",
|
|
12879
|
+
province: ((_g = order.billing_address) == null ? void 0 : _g.province) ?? "",
|
|
12880
|
+
country_code: ((_h = order.billing_address) == null ? void 0 : _h.country_code) ?? "",
|
|
12881
|
+
postal_code: ((_i = order.billing_address) == null ? void 0 : _i.postal_code) ?? "",
|
|
12882
|
+
phone: ((_j = order.billing_address) == null ? void 0 : _j.phone) ?? ""
|
|
12883
|
+
},
|
|
12884
|
+
resolver: zodResolver(schema)
|
|
12885
|
+
});
|
|
12886
|
+
const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
|
|
12887
|
+
const { handleSuccess } = useRouteModal();
|
|
12888
|
+
const onSubmit = form.handleSubmit(async (data) => {
|
|
12889
|
+
await mutateAsync(
|
|
12890
|
+
{ billing_address: data },
|
|
12891
|
+
{
|
|
12892
|
+
onSuccess: () => {
|
|
12893
|
+
handleSuccess();
|
|
12894
|
+
},
|
|
12895
|
+
onError: (error) => {
|
|
12896
|
+
toast.error(error.message);
|
|
12897
|
+
}
|
|
12898
|
+
}
|
|
12899
|
+
);
|
|
12900
|
+
});
|
|
12901
|
+
return /* @__PURE__ */ jsx(RouteDrawer.Form, { form, children: /* @__PURE__ */ jsxs(
|
|
12902
|
+
KeyboundForm,
|
|
12903
|
+
{
|
|
12904
|
+
className: "flex flex-1 flex-col overflow-hidden",
|
|
12905
|
+
onSubmit,
|
|
12906
|
+
children: [
|
|
12907
|
+
/* @__PURE__ */ jsx(RouteDrawer.Body, { className: "flex flex-col gap-y-6 overflow-y-auto", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-y-4", children: [
|
|
12908
|
+
/* @__PURE__ */ jsx(
|
|
12909
|
+
Form$2.Field,
|
|
12910
|
+
{
|
|
12911
|
+
control: form.control,
|
|
12912
|
+
name: "country_code",
|
|
12913
|
+
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
12914
|
+
/* @__PURE__ */ jsx(Form$2.Label, { children: "Country" }),
|
|
12915
|
+
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(CountrySelect, { ...field }) }),
|
|
12916
|
+
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
12917
|
+
] })
|
|
12918
|
+
}
|
|
12919
|
+
),
|
|
12920
|
+
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
12921
|
+
/* @__PURE__ */ jsx(
|
|
12922
|
+
Form$2.Field,
|
|
12923
|
+
{
|
|
12924
|
+
control: form.control,
|
|
12925
|
+
name: "first_name",
|
|
12926
|
+
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
12927
|
+
/* @__PURE__ */ jsx(Form$2.Label, { children: "First name" }),
|
|
12928
|
+
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
12929
|
+
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
12930
|
+
] })
|
|
12931
|
+
}
|
|
12932
|
+
),
|
|
12933
|
+
/* @__PURE__ */ jsx(
|
|
12934
|
+
Form$2.Field,
|
|
12935
|
+
{
|
|
12936
|
+
control: form.control,
|
|
12937
|
+
name: "last_name",
|
|
12938
|
+
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
12939
|
+
/* @__PURE__ */ jsx(Form$2.Label, { children: "Last name" }),
|
|
12940
|
+
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
12941
|
+
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
12942
|
+
] })
|
|
12943
|
+
}
|
|
12944
|
+
)
|
|
12945
|
+
] }),
|
|
12946
|
+
/* @__PURE__ */ jsx(
|
|
12947
|
+
Form$2.Field,
|
|
12948
|
+
{
|
|
12949
|
+
control: form.control,
|
|
12950
|
+
name: "company",
|
|
12951
|
+
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
12952
|
+
/* @__PURE__ */ jsx(Form$2.Label, { optional: true, children: "Company" }),
|
|
12953
|
+
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
12954
|
+
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
12955
|
+
] })
|
|
12956
|
+
}
|
|
12957
|
+
),
|
|
12958
|
+
/* @__PURE__ */ jsx(
|
|
12959
|
+
Form$2.Field,
|
|
12960
|
+
{
|
|
12961
|
+
control: form.control,
|
|
12962
|
+
name: "address_1",
|
|
12963
|
+
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
12964
|
+
/* @__PURE__ */ jsx(Form$2.Label, { children: "Address" }),
|
|
12965
|
+
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
12966
|
+
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
12967
|
+
] })
|
|
12968
|
+
}
|
|
12969
|
+
),
|
|
12970
|
+
/* @__PURE__ */ jsx(
|
|
12971
|
+
Form$2.Field,
|
|
12972
|
+
{
|
|
12973
|
+
control: form.control,
|
|
12974
|
+
name: "address_2",
|
|
12975
|
+
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
12976
|
+
/* @__PURE__ */ jsx(Form$2.Label, { optional: true, children: "Apartment, suite, etc." }),
|
|
12977
|
+
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
12978
|
+
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
12979
|
+
] })
|
|
12980
|
+
}
|
|
12981
|
+
),
|
|
12982
|
+
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
12983
|
+
/* @__PURE__ */ jsx(
|
|
12984
|
+
Form$2.Field,
|
|
12985
|
+
{
|
|
12986
|
+
control: form.control,
|
|
12987
|
+
name: "postal_code",
|
|
12988
|
+
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
12989
|
+
/* @__PURE__ */ jsx(Form$2.Label, { children: "Postal code" }),
|
|
12990
|
+
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
12991
|
+
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
12992
|
+
] })
|
|
12993
|
+
}
|
|
12994
|
+
),
|
|
12995
|
+
/* @__PURE__ */ jsx(
|
|
12996
|
+
Form$2.Field,
|
|
12997
|
+
{
|
|
12998
|
+
control: form.control,
|
|
12999
|
+
name: "city",
|
|
13000
|
+
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
13001
|
+
/* @__PURE__ */ jsx(Form$2.Label, { children: "City" }),
|
|
13002
|
+
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
13003
|
+
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
13004
|
+
] })
|
|
13005
|
+
}
|
|
13006
|
+
)
|
|
13007
|
+
] }),
|
|
13008
|
+
/* @__PURE__ */ jsx(
|
|
13009
|
+
Form$2.Field,
|
|
13010
|
+
{
|
|
13011
|
+
control: form.control,
|
|
13012
|
+
name: "province",
|
|
13013
|
+
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
13014
|
+
/* @__PURE__ */ jsx(Form$2.Label, { optional: true, children: "Province / State" }),
|
|
13015
|
+
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
13016
|
+
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
13017
|
+
] })
|
|
13018
|
+
}
|
|
13019
|
+
),
|
|
13020
|
+
/* @__PURE__ */ jsx(
|
|
13021
|
+
Form$2.Field,
|
|
13022
|
+
{
|
|
13023
|
+
control: form.control,
|
|
13024
|
+
name: "phone",
|
|
13025
|
+
render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
|
|
13026
|
+
/* @__PURE__ */ jsx(Form$2.Label, { optional: true, children: "Phone" }),
|
|
13027
|
+
/* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Input, { ...field }) }),
|
|
13028
|
+
/* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
|
|
13029
|
+
] })
|
|
13030
|
+
}
|
|
13031
|
+
)
|
|
13032
|
+
] }) }),
|
|
13033
|
+
/* @__PURE__ */ jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2", children: [
|
|
13034
|
+
/* @__PURE__ */ jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
|
|
13035
|
+
/* @__PURE__ */ jsx(Button, { size: "small", type: "submit", isLoading: isPending, children: "Save" })
|
|
13036
|
+
] }) })
|
|
13037
|
+
]
|
|
13038
|
+
}
|
|
13039
|
+
) });
|
|
13040
|
+
};
|
|
13041
|
+
const schema = addressSchema;
|
|
13042
13042
|
const widgetModule = { widgets: [] };
|
|
13043
13043
|
const routeModule = {
|
|
13044
13044
|
routes: [
|
|
@@ -13059,30 +13059,26 @@ const routeModule = {
|
|
|
13059
13059
|
handle,
|
|
13060
13060
|
loader,
|
|
13061
13061
|
children: [
|
|
13062
|
-
{
|
|
13063
|
-
Component: BillingAddress,
|
|
13064
|
-
path: "/draft-orders/:id/billing-address"
|
|
13065
|
-
},
|
|
13066
13062
|
{
|
|
13067
13063
|
Component: CustomItems,
|
|
13068
13064
|
path: "/draft-orders/:id/custom-items"
|
|
13069
13065
|
},
|
|
13070
|
-
{
|
|
13071
|
-
Component: Items,
|
|
13072
|
-
path: "/draft-orders/:id/items"
|
|
13073
|
-
},
|
|
13074
13066
|
{
|
|
13075
13067
|
Component: Email,
|
|
13076
13068
|
path: "/draft-orders/:id/email"
|
|
13077
13069
|
},
|
|
13078
13070
|
{
|
|
13079
|
-
Component:
|
|
13080
|
-
path: "/draft-orders/:id/
|
|
13071
|
+
Component: Items,
|
|
13072
|
+
path: "/draft-orders/:id/items"
|
|
13081
13073
|
},
|
|
13082
13074
|
{
|
|
13083
13075
|
Component: Promotions,
|
|
13084
13076
|
path: "/draft-orders/:id/promotions"
|
|
13085
13077
|
},
|
|
13078
|
+
{
|
|
13079
|
+
Component: Metadata,
|
|
13080
|
+
path: "/draft-orders/:id/metadata"
|
|
13081
|
+
},
|
|
13086
13082
|
{
|
|
13087
13083
|
Component: SalesChannel,
|
|
13088
13084
|
path: "/draft-orders/:id/sales-channel"
|
|
@@ -13098,6 +13094,10 @@ const routeModule = {
|
|
|
13098
13094
|
{
|
|
13099
13095
|
Component: TransferOwnership,
|
|
13100
13096
|
path: "/draft-orders/:id/transfer-ownership"
|
|
13097
|
+
},
|
|
13098
|
+
{
|
|
13099
|
+
Component: BillingAddress,
|
|
13100
|
+
path: "/draft-orders/:id/billing-address"
|
|
13101
13101
|
}
|
|
13102
13102
|
]
|
|
13103
13103
|
}
|