@medusajs/draft-order 2.11.0 → 2.11.1-snapshot-20251021080449
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 +609 -609
- package/.medusa/server/src/admin/index.mjs +609 -609
- package/package.json +24 -22
|
@@ -9592,10 +9592,10 @@ const CustomItemsForm = () => {
|
|
|
9592
9592
|
const schema$5 = objectType({
|
|
9593
9593
|
email: stringType().email()
|
|
9594
9594
|
});
|
|
9595
|
-
const
|
|
9595
|
+
const Email = () => {
|
|
9596
9596
|
const { id } = reactRouterDom.useParams();
|
|
9597
9597
|
const { order, isPending, isError, error } = useOrder(id, {
|
|
9598
|
-
fields: "+
|
|
9598
|
+
fields: "+email"
|
|
9599
9599
|
});
|
|
9600
9600
|
if (isError) {
|
|
9601
9601
|
throw error;
|
|
@@ -9603,26 +9603,16 @@ const BillingAddress = () => {
|
|
|
9603
9603
|
const isReady = !isPending && !!order;
|
|
9604
9604
|
return /* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer, { children: [
|
|
9605
9605
|
/* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer.Header, { children: [
|
|
9606
|
-
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { children: "Edit
|
|
9607
|
-
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Edit the
|
|
9606
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { children: "Edit Email" }) }),
|
|
9607
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Edit the email for the draft order" }) })
|
|
9608
9608
|
] }),
|
|
9609
|
-
isReady && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9609
|
+
isReady && /* @__PURE__ */ jsxRuntime.jsx(EmailForm, { order })
|
|
9610
9610
|
] });
|
|
9611
9611
|
};
|
|
9612
|
-
const
|
|
9613
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
9612
|
+
const EmailForm = ({ order }) => {
|
|
9614
9613
|
const form = reactHookForm.useForm({
|
|
9615
9614
|
defaultValues: {
|
|
9616
|
-
|
|
9617
|
-
last_name: ((_b = order.billing_address) == null ? void 0 : _b.last_name) ?? "",
|
|
9618
|
-
company: ((_c = order.billing_address) == null ? void 0 : _c.company) ?? "",
|
|
9619
|
-
address_1: ((_d = order.billing_address) == null ? void 0 : _d.address_1) ?? "",
|
|
9620
|
-
address_2: ((_e = order.billing_address) == null ? void 0 : _e.address_2) ?? "",
|
|
9621
|
-
city: ((_f = order.billing_address) == null ? void 0 : _f.city) ?? "",
|
|
9622
|
-
province: ((_g = order.billing_address) == null ? void 0 : _g.province) ?? "",
|
|
9623
|
-
country_code: ((_h = order.billing_address) == null ? void 0 : _h.country_code) ?? "",
|
|
9624
|
-
postal_code: ((_i = order.billing_address) == null ? void 0 : _i.postal_code) ?? "",
|
|
9625
|
-
phone: ((_j = order.billing_address) == null ? void 0 : _j.phone) ?? ""
|
|
9615
|
+
email: order.email ?? ""
|
|
9626
9616
|
},
|
|
9627
9617
|
resolver: zod.zodResolver(schema$4)
|
|
9628
9618
|
});
|
|
@@ -9630,7 +9620,7 @@ const BillingAddressForm = ({ order }) => {
|
|
|
9630
9620
|
const { handleSuccess } = useRouteModal();
|
|
9631
9621
|
const onSubmit = form.handleSubmit(async (data) => {
|
|
9632
9622
|
await mutateAsync(
|
|
9633
|
-
{
|
|
9623
|
+
{ email: data.email },
|
|
9634
9624
|
{
|
|
9635
9625
|
onSuccess: () => {
|
|
9636
9626
|
handleSuccess();
|
|
@@ -9647,132 +9637,18 @@ const BillingAddressForm = ({ order }) => {
|
|
|
9647
9637
|
className: "flex flex-1 flex-col overflow-hidden",
|
|
9648
9638
|
onSubmit,
|
|
9649
9639
|
children: [
|
|
9650
|
-
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Body, { className: "flex flex-col gap-y-6 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.
|
|
9651
|
-
|
|
9652
|
-
|
|
9653
|
-
|
|
9654
|
-
|
|
9655
|
-
|
|
9656
|
-
|
|
9657
|
-
|
|
9658
|
-
|
|
9659
|
-
|
|
9660
|
-
|
|
9661
|
-
|
|
9662
|
-
),
|
|
9663
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
9664
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9665
|
-
Form$2.Field,
|
|
9666
|
-
{
|
|
9667
|
-
control: form.control,
|
|
9668
|
-
name: "first_name",
|
|
9669
|
-
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
9670
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "First name" }),
|
|
9671
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
9672
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
9673
|
-
] })
|
|
9674
|
-
}
|
|
9675
|
-
),
|
|
9676
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9677
|
-
Form$2.Field,
|
|
9678
|
-
{
|
|
9679
|
-
control: form.control,
|
|
9680
|
-
name: "last_name",
|
|
9681
|
-
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
9682
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "Last name" }),
|
|
9683
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
9684
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
9685
|
-
] })
|
|
9686
|
-
}
|
|
9687
|
-
)
|
|
9688
|
-
] }),
|
|
9689
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9690
|
-
Form$2.Field,
|
|
9691
|
-
{
|
|
9692
|
-
control: form.control,
|
|
9693
|
-
name: "company",
|
|
9694
|
-
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
9695
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { optional: true, children: "Company" }),
|
|
9696
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
9697
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
9698
|
-
] })
|
|
9699
|
-
}
|
|
9700
|
-
),
|
|
9701
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9702
|
-
Form$2.Field,
|
|
9703
|
-
{
|
|
9704
|
-
control: form.control,
|
|
9705
|
-
name: "address_1",
|
|
9706
|
-
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
9707
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "Address" }),
|
|
9708
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
9709
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
9710
|
-
] })
|
|
9711
|
-
}
|
|
9712
|
-
),
|
|
9713
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9714
|
-
Form$2.Field,
|
|
9715
|
-
{
|
|
9716
|
-
control: form.control,
|
|
9717
|
-
name: "address_2",
|
|
9718
|
-
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
9719
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { optional: true, children: "Apartment, suite, etc." }),
|
|
9720
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
9721
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
9722
|
-
] })
|
|
9723
|
-
}
|
|
9724
|
-
),
|
|
9725
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
9726
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9727
|
-
Form$2.Field,
|
|
9728
|
-
{
|
|
9729
|
-
control: form.control,
|
|
9730
|
-
name: "postal_code",
|
|
9731
|
-
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
9732
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "Postal code" }),
|
|
9733
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
9734
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
9735
|
-
] })
|
|
9736
|
-
}
|
|
9737
|
-
),
|
|
9738
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9739
|
-
Form$2.Field,
|
|
9740
|
-
{
|
|
9741
|
-
control: form.control,
|
|
9742
|
-
name: "city",
|
|
9743
|
-
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
9744
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "City" }),
|
|
9745
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
9746
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
9747
|
-
] })
|
|
9748
|
-
}
|
|
9749
|
-
)
|
|
9750
|
-
] }),
|
|
9751
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9752
|
-
Form$2.Field,
|
|
9753
|
-
{
|
|
9754
|
-
control: form.control,
|
|
9755
|
-
name: "province",
|
|
9756
|
-
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
9757
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { optional: true, children: "Province / State" }),
|
|
9758
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
9759
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
9760
|
-
] })
|
|
9761
|
-
}
|
|
9762
|
-
),
|
|
9763
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9764
|
-
Form$2.Field,
|
|
9765
|
-
{
|
|
9766
|
-
control: form.control,
|
|
9767
|
-
name: "phone",
|
|
9768
|
-
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
9769
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { optional: true, children: "Phone" }),
|
|
9770
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
9771
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
9772
|
-
] })
|
|
9773
|
-
}
|
|
9774
|
-
)
|
|
9775
|
-
] }) }),
|
|
9640
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Body, { className: "flex flex-col gap-y-6 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9641
|
+
Form$2.Field,
|
|
9642
|
+
{
|
|
9643
|
+
control: form.control,
|
|
9644
|
+
name: "email",
|
|
9645
|
+
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
9646
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "Email" }),
|
|
9647
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
9648
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
9649
|
+
] })
|
|
9650
|
+
}
|
|
9651
|
+
) }),
|
|
9776
9652
|
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2", children: [
|
|
9777
9653
|
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
|
|
9778
9654
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", type: "submit", isLoading: isPending, children: "Save" })
|
|
@@ -9781,7 +9657,9 @@ const BillingAddressForm = ({ order }) => {
|
|
|
9781
9657
|
}
|
|
9782
9658
|
) });
|
|
9783
9659
|
};
|
|
9784
|
-
const schema$4 =
|
|
9660
|
+
const schema$4 = objectType({
|
|
9661
|
+
email: stringType().email()
|
|
9662
|
+
});
|
|
9785
9663
|
const NumberInput = React.forwardRef(
|
|
9786
9664
|
({
|
|
9787
9665
|
value,
|
|
@@ -10756,10 +10634,54 @@ const customItemSchema = objectType({
|
|
|
10756
10634
|
quantity: numberType(),
|
|
10757
10635
|
unit_price: unionType([numberType(), stringType()])
|
|
10758
10636
|
});
|
|
10759
|
-
const
|
|
10637
|
+
const InlineTip = React.forwardRef(
|
|
10638
|
+
({ variant = "tip", label, className, children, ...props }, ref) => {
|
|
10639
|
+
const labelValue = label || (variant === "warning" ? "Warning" : "Tip");
|
|
10640
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10641
|
+
"div",
|
|
10642
|
+
{
|
|
10643
|
+
ref,
|
|
10644
|
+
className: ui.clx(
|
|
10645
|
+
"bg-ui-bg-component txt-small text-ui-fg-subtle grid grid-cols-[4px_1fr] items-start gap-3 rounded-lg border p-3",
|
|
10646
|
+
className
|
|
10647
|
+
),
|
|
10648
|
+
...props,
|
|
10649
|
+
children: [
|
|
10650
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10651
|
+
"div",
|
|
10652
|
+
{
|
|
10653
|
+
role: "presentation",
|
|
10654
|
+
className: ui.clx("w-4px bg-ui-tag-neutral-icon h-full rounded-full", {
|
|
10655
|
+
"bg-ui-tag-orange-icon": variant === "warning"
|
|
10656
|
+
})
|
|
10657
|
+
}
|
|
10658
|
+
),
|
|
10659
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-pretty", children: [
|
|
10660
|
+
/* @__PURE__ */ jsxRuntime.jsxs("strong", { className: "txt-small-plus text-ui-fg-base", children: [
|
|
10661
|
+
labelValue,
|
|
10662
|
+
":"
|
|
10663
|
+
] }),
|
|
10664
|
+
" ",
|
|
10665
|
+
children
|
|
10666
|
+
] })
|
|
10667
|
+
]
|
|
10668
|
+
}
|
|
10669
|
+
);
|
|
10670
|
+
}
|
|
10671
|
+
);
|
|
10672
|
+
InlineTip.displayName = "InlineTip";
|
|
10673
|
+
const MetadataFieldSchema = objectType({
|
|
10674
|
+
key: stringType(),
|
|
10675
|
+
disabled: booleanType().optional(),
|
|
10676
|
+
value: anyType()
|
|
10677
|
+
});
|
|
10678
|
+
const MetadataSchema = objectType({
|
|
10679
|
+
metadata: arrayType(MetadataFieldSchema)
|
|
10680
|
+
});
|
|
10681
|
+
const Metadata = () => {
|
|
10760
10682
|
const { id } = reactRouterDom.useParams();
|
|
10761
10683
|
const { order, isPending, isError, error } = useOrder(id, {
|
|
10762
|
-
fields: "
|
|
10684
|
+
fields: "metadata"
|
|
10763
10685
|
});
|
|
10764
10686
|
if (isError) {
|
|
10765
10687
|
throw error;
|
|
@@ -10767,26 +10689,33 @@ const Email = () => {
|
|
|
10767
10689
|
const isReady = !isPending && !!order;
|
|
10768
10690
|
return /* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer, { children: [
|
|
10769
10691
|
/* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer.Header, { children: [
|
|
10770
|
-
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { children: "
|
|
10771
|
-
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "
|
|
10692
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { children: "Metadata" }) }),
|
|
10693
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Add metadata to the draft order." }) })
|
|
10772
10694
|
] }),
|
|
10773
|
-
isReady
|
|
10695
|
+
!isReady ? /* @__PURE__ */ jsxRuntime.jsx(PlaceholderInner, {}) : /* @__PURE__ */ jsxRuntime.jsx(MetadataForm, { orderId: id, metadata: order == null ? void 0 : order.metadata })
|
|
10774
10696
|
] });
|
|
10775
10697
|
};
|
|
10776
|
-
const
|
|
10698
|
+
const METADATA_KEY_LABEL_ID = "metadata-form-key-label";
|
|
10699
|
+
const METADATA_VALUE_LABEL_ID = "metadata-form-value-label";
|
|
10700
|
+
const MetadataForm = ({ orderId, metadata }) => {
|
|
10701
|
+
const { handleSuccess } = useRouteModal();
|
|
10702
|
+
const hasUneditableRows = getHasUneditableRows(metadata);
|
|
10703
|
+
const { mutateAsync, isPending } = useUpdateDraftOrder(orderId);
|
|
10777
10704
|
const form = reactHookForm.useForm({
|
|
10778
10705
|
defaultValues: {
|
|
10779
|
-
|
|
10706
|
+
metadata: getDefaultValues(metadata)
|
|
10780
10707
|
},
|
|
10781
|
-
resolver: zod.zodResolver(
|
|
10708
|
+
resolver: zod.zodResolver(MetadataSchema)
|
|
10782
10709
|
});
|
|
10783
|
-
const
|
|
10784
|
-
|
|
10785
|
-
const onSubmit = form.handleSubmit(async (data) => {
|
|
10710
|
+
const handleSubmit = form.handleSubmit(async (data) => {
|
|
10711
|
+
const parsedData = parseValues(data);
|
|
10786
10712
|
await mutateAsync(
|
|
10787
|
-
{
|
|
10713
|
+
{
|
|
10714
|
+
metadata: parsedData
|
|
10715
|
+
},
|
|
10788
10716
|
{
|
|
10789
10717
|
onSuccess: () => {
|
|
10718
|
+
ui.toast.success("Metadata updated");
|
|
10790
10719
|
handleSuccess();
|
|
10791
10720
|
},
|
|
10792
10721
|
onError: (error) => {
|
|
@@ -10795,141 +10724,266 @@ const EmailForm = ({ order }) => {
|
|
|
10795
10724
|
}
|
|
10796
10725
|
);
|
|
10797
10726
|
});
|
|
10798
|
-
|
|
10799
|
-
|
|
10800
|
-
|
|
10801
|
-
|
|
10802
|
-
|
|
10803
|
-
|
|
10804
|
-
|
|
10805
|
-
|
|
10806
|
-
|
|
10807
|
-
|
|
10808
|
-
|
|
10809
|
-
|
|
10810
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "Email" }),
|
|
10811
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
10812
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
10813
|
-
] })
|
|
10814
|
-
}
|
|
10815
|
-
) }),
|
|
10816
|
-
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2", children: [
|
|
10817
|
-
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
|
|
10818
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", type: "submit", isLoading: isPending, children: "Save" })
|
|
10819
|
-
] }) })
|
|
10820
|
-
]
|
|
10821
|
-
}
|
|
10822
|
-
) });
|
|
10823
|
-
};
|
|
10824
|
-
const schema$3 = objectType({
|
|
10825
|
-
email: stringType().email()
|
|
10826
|
-
});
|
|
10827
|
-
const SalesChannel = () => {
|
|
10828
|
-
const { id } = reactRouterDom.useParams();
|
|
10829
|
-
const { draft_order, isPending, isError, error } = useDraftOrder(
|
|
10830
|
-
id,
|
|
10831
|
-
{
|
|
10832
|
-
fields: "+sales_channel_id"
|
|
10833
|
-
},
|
|
10834
|
-
{
|
|
10835
|
-
enabled: !!id
|
|
10727
|
+
const { fields, insert, remove } = reactHookForm.useFieldArray({
|
|
10728
|
+
control: form.control,
|
|
10729
|
+
name: "metadata"
|
|
10730
|
+
});
|
|
10731
|
+
function deleteRow(index) {
|
|
10732
|
+
remove(index);
|
|
10733
|
+
if (fields.length === 1) {
|
|
10734
|
+
insert(0, {
|
|
10735
|
+
key: "",
|
|
10736
|
+
value: "",
|
|
10737
|
+
disabled: false
|
|
10738
|
+
});
|
|
10836
10739
|
}
|
|
10837
|
-
);
|
|
10838
|
-
if (isError) {
|
|
10839
|
-
throw error;
|
|
10840
10740
|
}
|
|
10841
|
-
|
|
10842
|
-
|
|
10843
|
-
|
|
10844
|
-
|
|
10845
|
-
|
|
10846
|
-
|
|
10847
|
-
|
|
10848
|
-
] });
|
|
10849
|
-
};
|
|
10850
|
-
const SalesChannelForm = ({ order }) => {
|
|
10851
|
-
const form = reactHookForm.useForm({
|
|
10852
|
-
defaultValues: {
|
|
10853
|
-
sales_channel_id: order.sales_channel_id || ""
|
|
10854
|
-
},
|
|
10855
|
-
resolver: zod.zodResolver(schema$2)
|
|
10856
|
-
});
|
|
10857
|
-
const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
|
|
10858
|
-
const { handleSuccess } = useRouteModal();
|
|
10859
|
-
const onSubmit = form.handleSubmit(async (data) => {
|
|
10860
|
-
await mutateAsync(
|
|
10861
|
-
{
|
|
10862
|
-
sales_channel_id: data.sales_channel_id
|
|
10863
|
-
},
|
|
10864
|
-
{
|
|
10865
|
-
onSuccess: () => {
|
|
10866
|
-
ui.toast.success("Sales channel updated");
|
|
10867
|
-
handleSuccess();
|
|
10868
|
-
},
|
|
10869
|
-
onError: (error) => {
|
|
10870
|
-
ui.toast.error(error.message);
|
|
10871
|
-
}
|
|
10872
|
-
}
|
|
10873
|
-
);
|
|
10874
|
-
});
|
|
10741
|
+
function insertRow(index, position) {
|
|
10742
|
+
insert(index + (position === "above" ? 0 : 1), {
|
|
10743
|
+
key: "",
|
|
10744
|
+
value: "",
|
|
10745
|
+
disabled: false
|
|
10746
|
+
});
|
|
10747
|
+
}
|
|
10875
10748
|
return /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Form, { form, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10876
10749
|
KeyboundForm,
|
|
10877
10750
|
{
|
|
10751
|
+
onSubmit: handleSubmit,
|
|
10878
10752
|
className: "flex flex-1 flex-col overflow-hidden",
|
|
10879
|
-
onSubmit,
|
|
10880
10753
|
children: [
|
|
10881
|
-
/* @__PURE__ */ jsxRuntime.
|
|
10882
|
-
|
|
10883
|
-
|
|
10754
|
+
/* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer.Body, { className: "flex flex-1 flex-col gap-y-8 overflow-y-auto", children: [
|
|
10755
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-ui-bg-base shadow-elevation-card-rest grid grid-cols-1 divide-y rounded-lg", children: [
|
|
10756
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-ui-bg-subtle grid grid-cols-2 divide-x rounded-t-lg", children: [
|
|
10757
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "txt-compact-small-plus text-ui-fg-subtle px-2 py-1.5", children: /* @__PURE__ */ jsxRuntime.jsx("label", { id: METADATA_KEY_LABEL_ID, children: "Key" }) }),
|
|
10758
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "txt-compact-small-plus text-ui-fg-subtle px-2 py-1.5", children: /* @__PURE__ */ jsxRuntime.jsx("label", { id: METADATA_VALUE_LABEL_ID, children: "Value" }) })
|
|
10759
|
+
] }),
|
|
10760
|
+
fields.map((field, index) => {
|
|
10761
|
+
const isDisabled = field.disabled || false;
|
|
10762
|
+
let placeholder = "-";
|
|
10763
|
+
if (typeof field.value === "object") {
|
|
10764
|
+
placeholder = "{ ... }";
|
|
10765
|
+
}
|
|
10766
|
+
if (Array.isArray(field.value)) {
|
|
10767
|
+
placeholder = "[ ... ]";
|
|
10768
|
+
}
|
|
10769
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
10770
|
+
ConditionalTooltip,
|
|
10771
|
+
{
|
|
10772
|
+
showTooltip: isDisabled,
|
|
10773
|
+
content: "This row is disabled because it contains non-primitive data.",
|
|
10774
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "group/table relative", children: [
|
|
10775
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
10776
|
+
"div",
|
|
10777
|
+
{
|
|
10778
|
+
className: ui.clx("grid grid-cols-2 divide-x", {
|
|
10779
|
+
"overflow-hidden rounded-b-lg": index === fields.length - 1
|
|
10780
|
+
}),
|
|
10781
|
+
children: [
|
|
10782
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10783
|
+
Form$2.Field,
|
|
10784
|
+
{
|
|
10785
|
+
control: form.control,
|
|
10786
|
+
name: `metadata.${index}.key`,
|
|
10787
|
+
render: ({ field: field2 }) => {
|
|
10788
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Form$2.Item, { children: /* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
10789
|
+
GridInput,
|
|
10790
|
+
{
|
|
10791
|
+
"aria-labelledby": METADATA_KEY_LABEL_ID,
|
|
10792
|
+
...field2,
|
|
10793
|
+
disabled: isDisabled,
|
|
10794
|
+
placeholder: "Key"
|
|
10795
|
+
}
|
|
10796
|
+
) }) });
|
|
10797
|
+
}
|
|
10798
|
+
}
|
|
10799
|
+
),
|
|
10800
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10801
|
+
Form$2.Field,
|
|
10802
|
+
{
|
|
10803
|
+
control: form.control,
|
|
10804
|
+
name: `metadata.${index}.value`,
|
|
10805
|
+
render: ({ field: { value, ...field2 } }) => {
|
|
10806
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Form$2.Item, { children: /* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
10807
|
+
GridInput,
|
|
10808
|
+
{
|
|
10809
|
+
"aria-labelledby": METADATA_VALUE_LABEL_ID,
|
|
10810
|
+
...field2,
|
|
10811
|
+
value: isDisabled ? placeholder : value,
|
|
10812
|
+
disabled: isDisabled,
|
|
10813
|
+
placeholder: "Value"
|
|
10814
|
+
}
|
|
10815
|
+
) }) });
|
|
10816
|
+
}
|
|
10817
|
+
}
|
|
10818
|
+
)
|
|
10819
|
+
]
|
|
10820
|
+
}
|
|
10821
|
+
),
|
|
10822
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu, { children: [
|
|
10823
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10824
|
+
ui.DropdownMenu.Trigger,
|
|
10825
|
+
{
|
|
10826
|
+
className: ui.clx(
|
|
10827
|
+
"invisible absolute inset-y-0 -right-2.5 my-auto group-hover/table:visible data-[state='open']:visible",
|
|
10828
|
+
{
|
|
10829
|
+
hidden: isDisabled
|
|
10830
|
+
}
|
|
10831
|
+
),
|
|
10832
|
+
disabled: isDisabled,
|
|
10833
|
+
asChild: true,
|
|
10834
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { size: "2xsmall", children: /* @__PURE__ */ jsxRuntime.jsx(icons.EllipsisVertical, {}) })
|
|
10835
|
+
}
|
|
10836
|
+
),
|
|
10837
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu.Content, { children: [
|
|
10838
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
10839
|
+
ui.DropdownMenu.Item,
|
|
10840
|
+
{
|
|
10841
|
+
className: "gap-x-2",
|
|
10842
|
+
onClick: () => insertRow(index, "above"),
|
|
10843
|
+
children: [
|
|
10844
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowUpMini, { className: "text-ui-fg-subtle" }),
|
|
10845
|
+
"Insert row above"
|
|
10846
|
+
]
|
|
10847
|
+
}
|
|
10848
|
+
),
|
|
10849
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
10850
|
+
ui.DropdownMenu.Item,
|
|
10851
|
+
{
|
|
10852
|
+
className: "gap-x-2",
|
|
10853
|
+
onClick: () => insertRow(index, "below"),
|
|
10854
|
+
children: [
|
|
10855
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownMini, { className: "text-ui-fg-subtle" }),
|
|
10856
|
+
"Insert row below"
|
|
10857
|
+
]
|
|
10858
|
+
}
|
|
10859
|
+
),
|
|
10860
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenu.Separator, {}),
|
|
10861
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
10862
|
+
ui.DropdownMenu.Item,
|
|
10863
|
+
{
|
|
10864
|
+
className: "gap-x-2",
|
|
10865
|
+
onClick: () => deleteRow(index),
|
|
10866
|
+
children: [
|
|
10867
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.Trash, { className: "text-ui-fg-subtle" }),
|
|
10868
|
+
"Delete row"
|
|
10869
|
+
]
|
|
10870
|
+
}
|
|
10871
|
+
)
|
|
10872
|
+
] })
|
|
10873
|
+
] })
|
|
10874
|
+
] })
|
|
10875
|
+
},
|
|
10876
|
+
field.id
|
|
10877
|
+
);
|
|
10878
|
+
})
|
|
10879
|
+
] }),
|
|
10880
|
+
hasUneditableRows && /* @__PURE__ */ jsxRuntime.jsx(InlineTip, { variant: "warning", label: "Some rows are disabled", children: "This object contains non-primitive metadata, such as arrays or objects, that can't be edited here. To edit the disabled rows, use the API directly." })
|
|
10881
|
+
] }),
|
|
10882
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-x-2", children: [
|
|
10883
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", variant: "secondary", type: "button", children: "Cancel" }) }),
|
|
10884
10884
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", type: "submit", isLoading: isPending, children: "Save" })
|
|
10885
10885
|
] }) })
|
|
10886
10886
|
]
|
|
10887
10887
|
}
|
|
10888
10888
|
) });
|
|
10889
10889
|
};
|
|
10890
|
-
const
|
|
10891
|
-
const salesChannels = useComboboxData({
|
|
10892
|
-
queryFn: async (params) => {
|
|
10893
|
-
return await sdk.admin.salesChannel.list(params);
|
|
10894
|
-
},
|
|
10895
|
-
queryKey: ["sales-channels"],
|
|
10896
|
-
getOptions: (data) => {
|
|
10897
|
-
return data.sales_channels.map((salesChannel) => ({
|
|
10898
|
-
label: salesChannel.name,
|
|
10899
|
-
value: salesChannel.id
|
|
10900
|
-
}));
|
|
10901
|
-
},
|
|
10902
|
-
defaultValue: order.sales_channel_id || void 0
|
|
10903
|
-
});
|
|
10890
|
+
const GridInput = React.forwardRef(({ className, ...props }, ref) => {
|
|
10904
10891
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
10905
|
-
|
|
10892
|
+
"input",
|
|
10906
10893
|
{
|
|
10907
|
-
|
|
10908
|
-
|
|
10909
|
-
|
|
10910
|
-
|
|
10911
|
-
|
|
10912
|
-
|
|
10913
|
-
|
|
10914
|
-
{
|
|
10915
|
-
options: salesChannels.options,
|
|
10916
|
-
fetchNextPage: salesChannels.fetchNextPage,
|
|
10917
|
-
isFetchingNextPage: salesChannels.isFetchingNextPage,
|
|
10918
|
-
searchValue: salesChannels.searchValue,
|
|
10919
|
-
onSearchValueChange: salesChannels.onSearchValueChange,
|
|
10920
|
-
placeholder: "Select sales channel",
|
|
10921
|
-
...field
|
|
10922
|
-
}
|
|
10923
|
-
) }),
|
|
10924
|
-
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
10925
|
-
] });
|
|
10926
|
-
}
|
|
10894
|
+
ref,
|
|
10895
|
+
...props,
|
|
10896
|
+
autoComplete: "off",
|
|
10897
|
+
className: ui.clx(
|
|
10898
|
+
"txt-compact-small text-ui-fg-base placeholder:text-ui-fg-muted disabled:text-ui-fg-disabled disabled:bg-ui-bg-base bg-transparent px-2 py-1.5 outline-none",
|
|
10899
|
+
className
|
|
10900
|
+
)
|
|
10927
10901
|
}
|
|
10928
10902
|
);
|
|
10929
|
-
};
|
|
10930
|
-
const schema$2 = objectType({
|
|
10931
|
-
sales_channel_id: stringType().min(1)
|
|
10932
10903
|
});
|
|
10904
|
+
GridInput.displayName = "MetadataForm.GridInput";
|
|
10905
|
+
const PlaceholderInner = () => {
|
|
10906
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-1 flex-col overflow-hidden", children: [
|
|
10907
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Body, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Skeleton, { className: "h-[148ox] w-full rounded-lg" }) }),
|
|
10908
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-x-2", children: [
|
|
10909
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Skeleton, { className: "h-7 w-12 rounded-md" }),
|
|
10910
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Skeleton, { className: "h-7 w-12 rounded-md" })
|
|
10911
|
+
] }) })
|
|
10912
|
+
] });
|
|
10913
|
+
};
|
|
10914
|
+
const EDITABLE_TYPES = ["string", "number", "boolean"];
|
|
10915
|
+
function getDefaultValues(metadata) {
|
|
10916
|
+
if (!metadata || !Object.keys(metadata).length) {
|
|
10917
|
+
return [
|
|
10918
|
+
{
|
|
10919
|
+
key: "",
|
|
10920
|
+
value: "",
|
|
10921
|
+
disabled: false
|
|
10922
|
+
}
|
|
10923
|
+
];
|
|
10924
|
+
}
|
|
10925
|
+
return Object.entries(metadata).map(([key, value]) => {
|
|
10926
|
+
if (!EDITABLE_TYPES.includes(typeof value)) {
|
|
10927
|
+
return {
|
|
10928
|
+
key,
|
|
10929
|
+
value,
|
|
10930
|
+
disabled: true
|
|
10931
|
+
};
|
|
10932
|
+
}
|
|
10933
|
+
let stringValue = value;
|
|
10934
|
+
if (typeof value !== "string") {
|
|
10935
|
+
stringValue = JSON.stringify(value);
|
|
10936
|
+
}
|
|
10937
|
+
return {
|
|
10938
|
+
key,
|
|
10939
|
+
value: stringValue,
|
|
10940
|
+
original_key: key
|
|
10941
|
+
};
|
|
10942
|
+
});
|
|
10943
|
+
}
|
|
10944
|
+
function parseValues(values) {
|
|
10945
|
+
const metadata = values.metadata;
|
|
10946
|
+
const isEmpty = !metadata.length || metadata.length === 1 && !metadata[0].key && !metadata[0].value;
|
|
10947
|
+
if (isEmpty) {
|
|
10948
|
+
return null;
|
|
10949
|
+
}
|
|
10950
|
+
const update = {};
|
|
10951
|
+
metadata.forEach((field) => {
|
|
10952
|
+
let key = field.key;
|
|
10953
|
+
let value = field.value;
|
|
10954
|
+
const disabled = field.disabled;
|
|
10955
|
+
if (!key || !value) {
|
|
10956
|
+
return;
|
|
10957
|
+
}
|
|
10958
|
+
if (disabled) {
|
|
10959
|
+
update[key] = value;
|
|
10960
|
+
return;
|
|
10961
|
+
}
|
|
10962
|
+
key = key.trim();
|
|
10963
|
+
value = value.trim();
|
|
10964
|
+
if (value === "true") {
|
|
10965
|
+
update[key] = true;
|
|
10966
|
+
} else if (value === "false") {
|
|
10967
|
+
update[key] = false;
|
|
10968
|
+
} else {
|
|
10969
|
+
const parsedNumber = parseFloat(value);
|
|
10970
|
+
if (!isNaN(parsedNumber)) {
|
|
10971
|
+
update[key] = parsedNumber;
|
|
10972
|
+
} else {
|
|
10973
|
+
update[key] = value;
|
|
10974
|
+
}
|
|
10975
|
+
}
|
|
10976
|
+
});
|
|
10977
|
+
return update;
|
|
10978
|
+
}
|
|
10979
|
+
function getHasUneditableRows(metadata) {
|
|
10980
|
+
if (!metadata) {
|
|
10981
|
+
return false;
|
|
10982
|
+
}
|
|
10983
|
+
return Object.values(metadata).some(
|
|
10984
|
+
(value) => !EDITABLE_TYPES.includes(typeof value)
|
|
10985
|
+
);
|
|
10986
|
+
}
|
|
10933
10987
|
const PROMOTION_QUERY_KEY = "promotions";
|
|
10934
10988
|
const promotionsQueryKeys = {
|
|
10935
10989
|
list: (query2) => [
|
|
@@ -11204,9 +11258,115 @@ function getPromotionIds(items, shippingMethods) {
|
|
|
11204
11258
|
}
|
|
11205
11259
|
}
|
|
11206
11260
|
}
|
|
11207
|
-
}
|
|
11208
|
-
return Array.from(promotionIds);
|
|
11209
|
-
}
|
|
11261
|
+
}
|
|
11262
|
+
return Array.from(promotionIds);
|
|
11263
|
+
}
|
|
11264
|
+
const SalesChannel = () => {
|
|
11265
|
+
const { id } = reactRouterDom.useParams();
|
|
11266
|
+
const { draft_order, isPending, isError, error } = useDraftOrder(
|
|
11267
|
+
id,
|
|
11268
|
+
{
|
|
11269
|
+
fields: "+sales_channel_id"
|
|
11270
|
+
},
|
|
11271
|
+
{
|
|
11272
|
+
enabled: !!id
|
|
11273
|
+
}
|
|
11274
|
+
);
|
|
11275
|
+
if (isError) {
|
|
11276
|
+
throw error;
|
|
11277
|
+
}
|
|
11278
|
+
const ISrEADY = !!draft_order && !isPending;
|
|
11279
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer, { children: [
|
|
11280
|
+
/* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer.Header, { children: [
|
|
11281
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { children: "Edit Sales Channel" }) }),
|
|
11282
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Update which sales channel the draft order is associated with" }) })
|
|
11283
|
+
] }),
|
|
11284
|
+
ISrEADY && /* @__PURE__ */ jsxRuntime.jsx(SalesChannelForm, { order: draft_order })
|
|
11285
|
+
] });
|
|
11286
|
+
};
|
|
11287
|
+
const SalesChannelForm = ({ order }) => {
|
|
11288
|
+
const form = reactHookForm.useForm({
|
|
11289
|
+
defaultValues: {
|
|
11290
|
+
sales_channel_id: order.sales_channel_id || ""
|
|
11291
|
+
},
|
|
11292
|
+
resolver: zod.zodResolver(schema$3)
|
|
11293
|
+
});
|
|
11294
|
+
const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
|
|
11295
|
+
const { handleSuccess } = useRouteModal();
|
|
11296
|
+
const onSubmit = form.handleSubmit(async (data) => {
|
|
11297
|
+
await mutateAsync(
|
|
11298
|
+
{
|
|
11299
|
+
sales_channel_id: data.sales_channel_id
|
|
11300
|
+
},
|
|
11301
|
+
{
|
|
11302
|
+
onSuccess: () => {
|
|
11303
|
+
ui.toast.success("Sales channel updated");
|
|
11304
|
+
handleSuccess();
|
|
11305
|
+
},
|
|
11306
|
+
onError: (error) => {
|
|
11307
|
+
ui.toast.error(error.message);
|
|
11308
|
+
}
|
|
11309
|
+
}
|
|
11310
|
+
);
|
|
11311
|
+
});
|
|
11312
|
+
return /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Form, { form, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11313
|
+
KeyboundForm,
|
|
11314
|
+
{
|
|
11315
|
+
className: "flex flex-1 flex-col overflow-hidden",
|
|
11316
|
+
onSubmit,
|
|
11317
|
+
children: [
|
|
11318
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Body, { className: "flex flex-col gap-y-6 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx(SalesChannelField, { control: form.control, order }) }),
|
|
11319
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2", children: [
|
|
11320
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
|
|
11321
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", type: "submit", isLoading: isPending, children: "Save" })
|
|
11322
|
+
] }) })
|
|
11323
|
+
]
|
|
11324
|
+
}
|
|
11325
|
+
) });
|
|
11326
|
+
};
|
|
11327
|
+
const SalesChannelField = ({ control, order }) => {
|
|
11328
|
+
const salesChannels = useComboboxData({
|
|
11329
|
+
queryFn: async (params) => {
|
|
11330
|
+
return await sdk.admin.salesChannel.list(params);
|
|
11331
|
+
},
|
|
11332
|
+
queryKey: ["sales-channels"],
|
|
11333
|
+
getOptions: (data) => {
|
|
11334
|
+
return data.sales_channels.map((salesChannel) => ({
|
|
11335
|
+
label: salesChannel.name,
|
|
11336
|
+
value: salesChannel.id
|
|
11337
|
+
}));
|
|
11338
|
+
},
|
|
11339
|
+
defaultValue: order.sales_channel_id || void 0
|
|
11340
|
+
});
|
|
11341
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11342
|
+
Form$2.Field,
|
|
11343
|
+
{
|
|
11344
|
+
control,
|
|
11345
|
+
name: "sales_channel_id",
|
|
11346
|
+
render: ({ field }) => {
|
|
11347
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
11348
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "Sales Channel" }),
|
|
11349
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
11350
|
+
Combobox,
|
|
11351
|
+
{
|
|
11352
|
+
options: salesChannels.options,
|
|
11353
|
+
fetchNextPage: salesChannels.fetchNextPage,
|
|
11354
|
+
isFetchingNextPage: salesChannels.isFetchingNextPage,
|
|
11355
|
+
searchValue: salesChannels.searchValue,
|
|
11356
|
+
onSearchValueChange: salesChannels.onSearchValueChange,
|
|
11357
|
+
placeholder: "Select sales channel",
|
|
11358
|
+
...field
|
|
11359
|
+
}
|
|
11360
|
+
) }),
|
|
11361
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
11362
|
+
] });
|
|
11363
|
+
}
|
|
11364
|
+
}
|
|
11365
|
+
);
|
|
11366
|
+
};
|
|
11367
|
+
const schema$3 = objectType({
|
|
11368
|
+
sales_channel_id: stringType().min(1)
|
|
11369
|
+
});
|
|
11210
11370
|
const STACKED_FOCUS_MODAL_ID = "shipping-form";
|
|
11211
11371
|
const Shipping = () => {
|
|
11212
11372
|
var _a;
|
|
@@ -12046,7 +12206,7 @@ const ShippingAddressForm = ({ order }) => {
|
|
|
12046
12206
|
postal_code: ((_i = order.shipping_address) == null ? void 0 : _i.postal_code) ?? "",
|
|
12047
12207
|
phone: ((_j = order.shipping_address) == null ? void 0 : _j.phone) ?? ""
|
|
12048
12208
|
},
|
|
12049
|
-
resolver: zod.zodResolver(schema$
|
|
12209
|
+
resolver: zod.zodResolver(schema$2)
|
|
12050
12210
|
});
|
|
12051
12211
|
const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
|
|
12052
12212
|
const { handleSuccess } = useRouteModal();
|
|
@@ -12216,7 +12376,7 @@ const ShippingAddressForm = ({ order }) => {
|
|
|
12216
12376
|
}
|
|
12217
12377
|
) });
|
|
12218
12378
|
};
|
|
12219
|
-
const schema$
|
|
12379
|
+
const schema$2 = addressSchema;
|
|
12220
12380
|
const TransferOwnership = () => {
|
|
12221
12381
|
const { id } = reactRouterDom.useParams();
|
|
12222
12382
|
const { draft_order, isPending, isError, error } = useDraftOrder(id, {
|
|
@@ -12240,7 +12400,7 @@ const TransferOwnershipForm = ({ order }) => {
|
|
|
12240
12400
|
defaultValues: {
|
|
12241
12401
|
customer_id: order.customer_id || ""
|
|
12242
12402
|
},
|
|
12243
|
-
resolver: zod.zodResolver(schema)
|
|
12403
|
+
resolver: zod.zodResolver(schema$1)
|
|
12244
12404
|
});
|
|
12245
12405
|
const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
|
|
12246
12406
|
const { handleSuccess } = useRouteModal();
|
|
@@ -12690,57 +12850,13 @@ const Illustration = () => {
|
|
|
12690
12850
|
}
|
|
12691
12851
|
);
|
|
12692
12852
|
};
|
|
12693
|
-
const schema = objectType({
|
|
12853
|
+
const schema$1 = objectType({
|
|
12694
12854
|
customer_id: stringType().min(1)
|
|
12695
12855
|
});
|
|
12696
|
-
const
|
|
12697
|
-
({ variant = "tip", label, className, children, ...props }, ref) => {
|
|
12698
|
-
const labelValue = label || (variant === "warning" ? "Warning" : "Tip");
|
|
12699
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12700
|
-
"div",
|
|
12701
|
-
{
|
|
12702
|
-
ref,
|
|
12703
|
-
className: ui.clx(
|
|
12704
|
-
"bg-ui-bg-component txt-small text-ui-fg-subtle grid grid-cols-[4px_1fr] items-start gap-3 rounded-lg border p-3",
|
|
12705
|
-
className
|
|
12706
|
-
),
|
|
12707
|
-
...props,
|
|
12708
|
-
children: [
|
|
12709
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12710
|
-
"div",
|
|
12711
|
-
{
|
|
12712
|
-
role: "presentation",
|
|
12713
|
-
className: ui.clx("w-4px bg-ui-tag-neutral-icon h-full rounded-full", {
|
|
12714
|
-
"bg-ui-tag-orange-icon": variant === "warning"
|
|
12715
|
-
})
|
|
12716
|
-
}
|
|
12717
|
-
),
|
|
12718
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-pretty", children: [
|
|
12719
|
-
/* @__PURE__ */ jsxRuntime.jsxs("strong", { className: "txt-small-plus text-ui-fg-base", children: [
|
|
12720
|
-
labelValue,
|
|
12721
|
-
":"
|
|
12722
|
-
] }),
|
|
12723
|
-
" ",
|
|
12724
|
-
children
|
|
12725
|
-
] })
|
|
12726
|
-
]
|
|
12727
|
-
}
|
|
12728
|
-
);
|
|
12729
|
-
}
|
|
12730
|
-
);
|
|
12731
|
-
InlineTip.displayName = "InlineTip";
|
|
12732
|
-
const MetadataFieldSchema = objectType({
|
|
12733
|
-
key: stringType(),
|
|
12734
|
-
disabled: booleanType().optional(),
|
|
12735
|
-
value: anyType()
|
|
12736
|
-
});
|
|
12737
|
-
const MetadataSchema = objectType({
|
|
12738
|
-
metadata: arrayType(MetadataFieldSchema)
|
|
12739
|
-
});
|
|
12740
|
-
const Metadata = () => {
|
|
12856
|
+
const BillingAddress = () => {
|
|
12741
12857
|
const { id } = reactRouterDom.useParams();
|
|
12742
12858
|
const { order, isPending, isError, error } = useOrder(id, {
|
|
12743
|
-
fields: "
|
|
12859
|
+
fields: "+billing_address"
|
|
12744
12860
|
});
|
|
12745
12861
|
if (isError) {
|
|
12746
12862
|
throw error;
|
|
@@ -12748,301 +12864,185 @@ const Metadata = () => {
|
|
|
12748
12864
|
const isReady = !isPending && !!order;
|
|
12749
12865
|
return /* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer, { children: [
|
|
12750
12866
|
/* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer.Header, { children: [
|
|
12751
|
-
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { children: "
|
|
12752
|
-
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "
|
|
12867
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { children: "Edit Billing Address" }) }),
|
|
12868
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Edit the billing address for the draft order" }) })
|
|
12753
12869
|
] }),
|
|
12754
|
-
|
|
12870
|
+
isReady && /* @__PURE__ */ jsxRuntime.jsx(BillingAddressForm, { order })
|
|
12755
12871
|
] });
|
|
12756
12872
|
};
|
|
12757
|
-
const
|
|
12758
|
-
|
|
12759
|
-
const MetadataForm = ({ orderId, metadata }) => {
|
|
12760
|
-
const { handleSuccess } = useRouteModal();
|
|
12761
|
-
const hasUneditableRows = getHasUneditableRows(metadata);
|
|
12762
|
-
const { mutateAsync, isPending } = useUpdateDraftOrder(orderId);
|
|
12873
|
+
const BillingAddressForm = ({ order }) => {
|
|
12874
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
12763
12875
|
const form = reactHookForm.useForm({
|
|
12764
12876
|
defaultValues: {
|
|
12765
|
-
|
|
12877
|
+
first_name: ((_a = order.billing_address) == null ? void 0 : _a.first_name) ?? "",
|
|
12878
|
+
last_name: ((_b = order.billing_address) == null ? void 0 : _b.last_name) ?? "",
|
|
12879
|
+
company: ((_c = order.billing_address) == null ? void 0 : _c.company) ?? "",
|
|
12880
|
+
address_1: ((_d = order.billing_address) == null ? void 0 : _d.address_1) ?? "",
|
|
12881
|
+
address_2: ((_e = order.billing_address) == null ? void 0 : _e.address_2) ?? "",
|
|
12882
|
+
city: ((_f = order.billing_address) == null ? void 0 : _f.city) ?? "",
|
|
12883
|
+
province: ((_g = order.billing_address) == null ? void 0 : _g.province) ?? "",
|
|
12884
|
+
country_code: ((_h = order.billing_address) == null ? void 0 : _h.country_code) ?? "",
|
|
12885
|
+
postal_code: ((_i = order.billing_address) == null ? void 0 : _i.postal_code) ?? "",
|
|
12886
|
+
phone: ((_j = order.billing_address) == null ? void 0 : _j.phone) ?? ""
|
|
12766
12887
|
},
|
|
12767
|
-
resolver: zod.zodResolver(
|
|
12888
|
+
resolver: zod.zodResolver(schema)
|
|
12768
12889
|
});
|
|
12769
|
-
const
|
|
12770
|
-
|
|
12890
|
+
const { mutateAsync, isPending } = useUpdateDraftOrder(order.id);
|
|
12891
|
+
const { handleSuccess } = useRouteModal();
|
|
12892
|
+
const onSubmit = form.handleSubmit(async (data) => {
|
|
12771
12893
|
await mutateAsync(
|
|
12772
|
-
{
|
|
12773
|
-
metadata: parsedData
|
|
12774
|
-
},
|
|
12894
|
+
{ billing_address: data },
|
|
12775
12895
|
{
|
|
12776
12896
|
onSuccess: () => {
|
|
12777
|
-
ui.toast.success("Metadata updated");
|
|
12778
12897
|
handleSuccess();
|
|
12779
12898
|
},
|
|
12780
12899
|
onError: (error) => {
|
|
12781
12900
|
ui.toast.error(error.message);
|
|
12782
12901
|
}
|
|
12783
12902
|
}
|
|
12784
|
-
);
|
|
12785
|
-
});
|
|
12786
|
-
|
|
12787
|
-
|
|
12788
|
-
|
|
12789
|
-
|
|
12790
|
-
|
|
12791
|
-
|
|
12792
|
-
|
|
12793
|
-
|
|
12794
|
-
|
|
12795
|
-
|
|
12796
|
-
|
|
12797
|
-
|
|
12798
|
-
|
|
12799
|
-
|
|
12800
|
-
|
|
12801
|
-
|
|
12802
|
-
|
|
12803
|
-
|
|
12804
|
-
|
|
12805
|
-
|
|
12806
|
-
|
|
12807
|
-
|
|
12808
|
-
|
|
12809
|
-
|
|
12810
|
-
|
|
12811
|
-
|
|
12812
|
-
|
|
12813
|
-
|
|
12814
|
-
|
|
12815
|
-
|
|
12816
|
-
|
|
12817
|
-
|
|
12818
|
-
|
|
12819
|
-
|
|
12820
|
-
|
|
12821
|
-
|
|
12822
|
-
|
|
12823
|
-
|
|
12824
|
-
|
|
12825
|
-
|
|
12826
|
-
|
|
12827
|
-
|
|
12828
|
-
|
|
12829
|
-
|
|
12830
|
-
{
|
|
12831
|
-
showTooltip: isDisabled,
|
|
12832
|
-
content: "This row is disabled because it contains non-primitive data.",
|
|
12833
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "group/table relative", children: [
|
|
12834
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12835
|
-
"div",
|
|
12836
|
-
{
|
|
12837
|
-
className: ui.clx("grid grid-cols-2 divide-x", {
|
|
12838
|
-
"overflow-hidden rounded-b-lg": index === fields.length - 1
|
|
12839
|
-
}),
|
|
12840
|
-
children: [
|
|
12841
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12842
|
-
Form$2.Field,
|
|
12843
|
-
{
|
|
12844
|
-
control: form.control,
|
|
12845
|
-
name: `metadata.${index}.key`,
|
|
12846
|
-
render: ({ field: field2 }) => {
|
|
12847
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Form$2.Item, { children: /* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12848
|
-
GridInput,
|
|
12849
|
-
{
|
|
12850
|
-
"aria-labelledby": METADATA_KEY_LABEL_ID,
|
|
12851
|
-
...field2,
|
|
12852
|
-
disabled: isDisabled,
|
|
12853
|
-
placeholder: "Key"
|
|
12854
|
-
}
|
|
12855
|
-
) }) });
|
|
12856
|
-
}
|
|
12857
|
-
}
|
|
12858
|
-
),
|
|
12859
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12860
|
-
Form$2.Field,
|
|
12861
|
-
{
|
|
12862
|
-
control: form.control,
|
|
12863
|
-
name: `metadata.${index}.value`,
|
|
12864
|
-
render: ({ field: { value, ...field2 } }) => {
|
|
12865
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Form$2.Item, { children: /* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12866
|
-
GridInput,
|
|
12867
|
-
{
|
|
12868
|
-
"aria-labelledby": METADATA_VALUE_LABEL_ID,
|
|
12869
|
-
...field2,
|
|
12870
|
-
value: isDisabled ? placeholder : value,
|
|
12871
|
-
disabled: isDisabled,
|
|
12872
|
-
placeholder: "Value"
|
|
12873
|
-
}
|
|
12874
|
-
) }) });
|
|
12875
|
-
}
|
|
12876
|
-
}
|
|
12877
|
-
)
|
|
12878
|
-
]
|
|
12879
|
-
}
|
|
12880
|
-
),
|
|
12881
|
-
/* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu, { children: [
|
|
12882
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12883
|
-
ui.DropdownMenu.Trigger,
|
|
12884
|
-
{
|
|
12885
|
-
className: ui.clx(
|
|
12886
|
-
"invisible absolute inset-y-0 -right-2.5 my-auto group-hover/table:visible data-[state='open']:visible",
|
|
12887
|
-
{
|
|
12888
|
-
hidden: isDisabled
|
|
12889
|
-
}
|
|
12890
|
-
),
|
|
12891
|
-
disabled: isDisabled,
|
|
12892
|
-
asChild: true,
|
|
12893
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { size: "2xsmall", children: /* @__PURE__ */ jsxRuntime.jsx(icons.EllipsisVertical, {}) })
|
|
12894
|
-
}
|
|
12895
|
-
),
|
|
12896
|
-
/* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu.Content, { children: [
|
|
12897
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12898
|
-
ui.DropdownMenu.Item,
|
|
12899
|
-
{
|
|
12900
|
-
className: "gap-x-2",
|
|
12901
|
-
onClick: () => insertRow(index, "above"),
|
|
12902
|
-
children: [
|
|
12903
|
-
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowUpMini, { className: "text-ui-fg-subtle" }),
|
|
12904
|
-
"Insert row above"
|
|
12905
|
-
]
|
|
12906
|
-
}
|
|
12907
|
-
),
|
|
12908
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12909
|
-
ui.DropdownMenu.Item,
|
|
12910
|
-
{
|
|
12911
|
-
className: "gap-x-2",
|
|
12912
|
-
onClick: () => insertRow(index, "below"),
|
|
12913
|
-
children: [
|
|
12914
|
-
/* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownMini, { className: "text-ui-fg-subtle" }),
|
|
12915
|
-
"Insert row below"
|
|
12916
|
-
]
|
|
12917
|
-
}
|
|
12918
|
-
),
|
|
12919
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenu.Separator, {}),
|
|
12920
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12921
|
-
ui.DropdownMenu.Item,
|
|
12922
|
-
{
|
|
12923
|
-
className: "gap-x-2",
|
|
12924
|
-
onClick: () => deleteRow(index),
|
|
12925
|
-
children: [
|
|
12926
|
-
/* @__PURE__ */ jsxRuntime.jsx(icons.Trash, { className: "text-ui-fg-subtle" }),
|
|
12927
|
-
"Delete row"
|
|
12928
|
-
]
|
|
12929
|
-
}
|
|
12930
|
-
)
|
|
12931
|
-
] })
|
|
12932
|
-
] })
|
|
12933
|
-
] })
|
|
12934
|
-
},
|
|
12935
|
-
field.id
|
|
12936
|
-
);
|
|
12937
|
-
})
|
|
12903
|
+
);
|
|
12904
|
+
});
|
|
12905
|
+
return /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Form, { form, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12906
|
+
KeyboundForm,
|
|
12907
|
+
{
|
|
12908
|
+
className: "flex flex-1 flex-col overflow-hidden",
|
|
12909
|
+
onSubmit,
|
|
12910
|
+
children: [
|
|
12911
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Body, { className: "flex flex-col gap-y-6 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-4", children: [
|
|
12912
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12913
|
+
Form$2.Field,
|
|
12914
|
+
{
|
|
12915
|
+
control: form.control,
|
|
12916
|
+
name: "country_code",
|
|
12917
|
+
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
12918
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "Country" }),
|
|
12919
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(CountrySelect, { ...field }) }),
|
|
12920
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
12921
|
+
] })
|
|
12922
|
+
}
|
|
12923
|
+
),
|
|
12924
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
12925
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12926
|
+
Form$2.Field,
|
|
12927
|
+
{
|
|
12928
|
+
control: form.control,
|
|
12929
|
+
name: "first_name",
|
|
12930
|
+
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
12931
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "First name" }),
|
|
12932
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
12933
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
12934
|
+
] })
|
|
12935
|
+
}
|
|
12936
|
+
),
|
|
12937
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12938
|
+
Form$2.Field,
|
|
12939
|
+
{
|
|
12940
|
+
control: form.control,
|
|
12941
|
+
name: "last_name",
|
|
12942
|
+
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
12943
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "Last name" }),
|
|
12944
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
12945
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
12946
|
+
] })
|
|
12947
|
+
}
|
|
12948
|
+
)
|
|
12938
12949
|
] }),
|
|
12939
|
-
|
|
12940
|
-
|
|
12941
|
-
|
|
12942
|
-
|
|
12950
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12951
|
+
Form$2.Field,
|
|
12952
|
+
{
|
|
12953
|
+
control: form.control,
|
|
12954
|
+
name: "company",
|
|
12955
|
+
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
12956
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { optional: true, children: "Company" }),
|
|
12957
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
12958
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
12959
|
+
] })
|
|
12960
|
+
}
|
|
12961
|
+
),
|
|
12962
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12963
|
+
Form$2.Field,
|
|
12964
|
+
{
|
|
12965
|
+
control: form.control,
|
|
12966
|
+
name: "address_1",
|
|
12967
|
+
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
12968
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "Address" }),
|
|
12969
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
12970
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
12971
|
+
] })
|
|
12972
|
+
}
|
|
12973
|
+
),
|
|
12974
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12975
|
+
Form$2.Field,
|
|
12976
|
+
{
|
|
12977
|
+
control: form.control,
|
|
12978
|
+
name: "address_2",
|
|
12979
|
+
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
12980
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { optional: true, children: "Apartment, suite, etc." }),
|
|
12981
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
12982
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
12983
|
+
] })
|
|
12984
|
+
}
|
|
12985
|
+
),
|
|
12986
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
12987
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12988
|
+
Form$2.Field,
|
|
12989
|
+
{
|
|
12990
|
+
control: form.control,
|
|
12991
|
+
name: "postal_code",
|
|
12992
|
+
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
12993
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "Postal code" }),
|
|
12994
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
12995
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
12996
|
+
] })
|
|
12997
|
+
}
|
|
12998
|
+
),
|
|
12999
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13000
|
+
Form$2.Field,
|
|
13001
|
+
{
|
|
13002
|
+
control: form.control,
|
|
13003
|
+
name: "city",
|
|
13004
|
+
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
13005
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "City" }),
|
|
13006
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
13007
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
13008
|
+
] })
|
|
13009
|
+
}
|
|
13010
|
+
)
|
|
13011
|
+
] }),
|
|
13012
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13013
|
+
Form$2.Field,
|
|
13014
|
+
{
|
|
13015
|
+
control: form.control,
|
|
13016
|
+
name: "province",
|
|
13017
|
+
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
13018
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { optional: true, children: "Province / State" }),
|
|
13019
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
13020
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
13021
|
+
] })
|
|
13022
|
+
}
|
|
13023
|
+
),
|
|
13024
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13025
|
+
Form$2.Field,
|
|
13026
|
+
{
|
|
13027
|
+
control: form.control,
|
|
13028
|
+
name: "phone",
|
|
13029
|
+
render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
|
|
13030
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { optional: true, children: "Phone" }),
|
|
13031
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Input, { ...field }) }),
|
|
13032
|
+
/* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
|
|
13033
|
+
] })
|
|
13034
|
+
}
|
|
13035
|
+
)
|
|
13036
|
+
] }) }),
|
|
13037
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2", children: [
|
|
13038
|
+
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
|
|
12943
13039
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", type: "submit", isLoading: isPending, children: "Save" })
|
|
12944
13040
|
] }) })
|
|
12945
13041
|
]
|
|
12946
13042
|
}
|
|
12947
13043
|
) });
|
|
12948
13044
|
};
|
|
12949
|
-
const
|
|
12950
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12951
|
-
"input",
|
|
12952
|
-
{
|
|
12953
|
-
ref,
|
|
12954
|
-
...props,
|
|
12955
|
-
autoComplete: "off",
|
|
12956
|
-
className: ui.clx(
|
|
12957
|
-
"txt-compact-small text-ui-fg-base placeholder:text-ui-fg-muted disabled:text-ui-fg-disabled disabled:bg-ui-bg-base bg-transparent px-2 py-1.5 outline-none",
|
|
12958
|
-
className
|
|
12959
|
-
)
|
|
12960
|
-
}
|
|
12961
|
-
);
|
|
12962
|
-
});
|
|
12963
|
-
GridInput.displayName = "MetadataForm.GridInput";
|
|
12964
|
-
const PlaceholderInner = () => {
|
|
12965
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-1 flex-col overflow-hidden", children: [
|
|
12966
|
-
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Body, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Skeleton, { className: "h-[148ox] w-full rounded-lg" }) }),
|
|
12967
|
-
/* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-x-2", children: [
|
|
12968
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Skeleton, { className: "h-7 w-12 rounded-md" }),
|
|
12969
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Skeleton, { className: "h-7 w-12 rounded-md" })
|
|
12970
|
-
] }) })
|
|
12971
|
-
] });
|
|
12972
|
-
};
|
|
12973
|
-
const EDITABLE_TYPES = ["string", "number", "boolean"];
|
|
12974
|
-
function getDefaultValues(metadata) {
|
|
12975
|
-
if (!metadata || !Object.keys(metadata).length) {
|
|
12976
|
-
return [
|
|
12977
|
-
{
|
|
12978
|
-
key: "",
|
|
12979
|
-
value: "",
|
|
12980
|
-
disabled: false
|
|
12981
|
-
}
|
|
12982
|
-
];
|
|
12983
|
-
}
|
|
12984
|
-
return Object.entries(metadata).map(([key, value]) => {
|
|
12985
|
-
if (!EDITABLE_TYPES.includes(typeof value)) {
|
|
12986
|
-
return {
|
|
12987
|
-
key,
|
|
12988
|
-
value,
|
|
12989
|
-
disabled: true
|
|
12990
|
-
};
|
|
12991
|
-
}
|
|
12992
|
-
let stringValue = value;
|
|
12993
|
-
if (typeof value !== "string") {
|
|
12994
|
-
stringValue = JSON.stringify(value);
|
|
12995
|
-
}
|
|
12996
|
-
return {
|
|
12997
|
-
key,
|
|
12998
|
-
value: stringValue,
|
|
12999
|
-
original_key: key
|
|
13000
|
-
};
|
|
13001
|
-
});
|
|
13002
|
-
}
|
|
13003
|
-
function parseValues(values) {
|
|
13004
|
-
const metadata = values.metadata;
|
|
13005
|
-
const isEmpty = !metadata.length || metadata.length === 1 && !metadata[0].key && !metadata[0].value;
|
|
13006
|
-
if (isEmpty) {
|
|
13007
|
-
return null;
|
|
13008
|
-
}
|
|
13009
|
-
const update = {};
|
|
13010
|
-
metadata.forEach((field) => {
|
|
13011
|
-
let key = field.key;
|
|
13012
|
-
let value = field.value;
|
|
13013
|
-
const disabled = field.disabled;
|
|
13014
|
-
if (!key || !value) {
|
|
13015
|
-
return;
|
|
13016
|
-
}
|
|
13017
|
-
if (disabled) {
|
|
13018
|
-
update[key] = value;
|
|
13019
|
-
return;
|
|
13020
|
-
}
|
|
13021
|
-
key = key.trim();
|
|
13022
|
-
value = value.trim();
|
|
13023
|
-
if (value === "true") {
|
|
13024
|
-
update[key] = true;
|
|
13025
|
-
} else if (value === "false") {
|
|
13026
|
-
update[key] = false;
|
|
13027
|
-
} else {
|
|
13028
|
-
const parsedNumber = parseFloat(value);
|
|
13029
|
-
if (!isNaN(parsedNumber)) {
|
|
13030
|
-
update[key] = parsedNumber;
|
|
13031
|
-
} else {
|
|
13032
|
-
update[key] = value;
|
|
13033
|
-
}
|
|
13034
|
-
}
|
|
13035
|
-
});
|
|
13036
|
-
return update;
|
|
13037
|
-
}
|
|
13038
|
-
function getHasUneditableRows(metadata) {
|
|
13039
|
-
if (!metadata) {
|
|
13040
|
-
return false;
|
|
13041
|
-
}
|
|
13042
|
-
return Object.values(metadata).some(
|
|
13043
|
-
(value) => !EDITABLE_TYPES.includes(typeof value)
|
|
13044
|
-
);
|
|
13045
|
-
}
|
|
13045
|
+
const schema = addressSchema;
|
|
13046
13046
|
const widgetModule = { widgets: [] };
|
|
13047
13047
|
const routeModule = {
|
|
13048
13048
|
routes: [
|
|
@@ -13068,25 +13068,25 @@ const routeModule = {
|
|
|
13068
13068
|
path: "/draft-orders/:id/custom-items"
|
|
13069
13069
|
},
|
|
13070
13070
|
{
|
|
13071
|
-
Component:
|
|
13072
|
-
path: "/draft-orders/:id/
|
|
13071
|
+
Component: Email,
|
|
13072
|
+
path: "/draft-orders/:id/email"
|
|
13073
13073
|
},
|
|
13074
13074
|
{
|
|
13075
13075
|
Component: Items,
|
|
13076
13076
|
path: "/draft-orders/:id/items"
|
|
13077
13077
|
},
|
|
13078
13078
|
{
|
|
13079
|
-
Component:
|
|
13080
|
-
path: "/draft-orders/:id/
|
|
13081
|
-
},
|
|
13082
|
-
{
|
|
13083
|
-
Component: SalesChannel,
|
|
13084
|
-
path: "/draft-orders/:id/sales-channel"
|
|
13079
|
+
Component: Metadata,
|
|
13080
|
+
path: "/draft-orders/:id/metadata"
|
|
13085
13081
|
},
|
|
13086
13082
|
{
|
|
13087
13083
|
Component: Promotions,
|
|
13088
13084
|
path: "/draft-orders/:id/promotions"
|
|
13089
13085
|
},
|
|
13086
|
+
{
|
|
13087
|
+
Component: SalesChannel,
|
|
13088
|
+
path: "/draft-orders/:id/sales-channel"
|
|
13089
|
+
},
|
|
13090
13090
|
{
|
|
13091
13091
|
Component: Shipping,
|
|
13092
13092
|
path: "/draft-orders/:id/shipping"
|
|
@@ -13100,8 +13100,8 @@ const routeModule = {
|
|
|
13100
13100
|
path: "/draft-orders/:id/transfer-ownership"
|
|
13101
13101
|
},
|
|
13102
13102
|
{
|
|
13103
|
-
Component:
|
|
13104
|
-
path: "/draft-orders/:id/
|
|
13103
|
+
Component: BillingAddress,
|
|
13104
|
+
path: "/draft-orders/:id/billing-address"
|
|
13105
13105
|
}
|
|
13106
13106
|
]
|
|
13107
13107
|
}
|