@quan-erp/base-frontend 1.0.7 → 1.0.9

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.
Files changed (66) hide show
  1. package/dist-export/api/area-region/area-region.api.d.ts +8 -0
  2. package/dist-export/api/area-region/area-region.api.d.ts.map +1 -0
  3. package/dist-export/api/area-region/area-region.api.js +33 -0
  4. package/dist-export/api/area-region/area-region.constants.d.ts +9 -0
  5. package/dist-export/api/area-region/area-region.constants.d.ts.map +1 -0
  6. package/dist-export/api/area-region/area-region.constants.js +4 -0
  7. package/dist-export/api/area-region/area-region.export.d.ts +14 -0
  8. package/dist-export/api/area-region/area-region.export.d.ts.map +1 -0
  9. package/dist-export/api/area-region/area-region.export.js +16 -0
  10. package/dist-export/api/area-region/area-region.mutations.d.ts +10 -0
  11. package/dist-export/api/area-region/area-region.mutations.d.ts.map +1 -0
  12. package/dist-export/api/area-region/area-region.mutations.js +34 -0
  13. package/dist-export/api/area-region/area-region.queries.d.ts +5 -0
  14. package/dist-export/api/area-region/area-region.queries.d.ts.map +1 -0
  15. package/dist-export/api/area-region/area-region.queries.js +14 -0
  16. package/dist-export/api/area-region/area-region.types.d.ts +17 -0
  17. package/dist-export/api/area-region/area-region.types.d.ts.map +1 -0
  18. package/dist-export/api/area-region/area-region.types.js +1 -0
  19. package/dist-export/api/business-unit/business-unit.api.d.ts +8 -0
  20. package/dist-export/api/business-unit/business-unit.api.d.ts.map +1 -0
  21. package/dist-export/api/business-unit/business-unit.api.js +33 -0
  22. package/dist-export/api/business-unit/business-unit.constants.d.ts +9 -0
  23. package/dist-export/api/business-unit/business-unit.constants.d.ts.map +1 -0
  24. package/dist-export/api/business-unit/business-unit.constants.js +4 -0
  25. package/dist-export/api/business-unit/business-unit.export.d.ts +14 -0
  26. package/dist-export/api/business-unit/business-unit.export.d.ts.map +1 -0
  27. package/dist-export/api/business-unit/business-unit.export.js +16 -0
  28. package/dist-export/api/business-unit/business-unit.mutations.d.ts +10 -0
  29. package/dist-export/api/business-unit/business-unit.mutations.d.ts.map +1 -0
  30. package/dist-export/api/business-unit/business-unit.mutations.js +34 -0
  31. package/dist-export/api/business-unit/business-unit.queries.d.ts +5 -0
  32. package/dist-export/api/business-unit/business-unit.queries.d.ts.map +1 -0
  33. package/dist-export/api/business-unit/business-unit.queries.js +14 -0
  34. package/dist-export/api/business-unit/business-unit.types.d.ts +17 -0
  35. package/dist-export/api/business-unit/business-unit.types.d.ts.map +1 -0
  36. package/dist-export/api/business-unit/business-unit.types.js +1 -0
  37. package/dist-export/api/partner/partner.type.d.ts +8 -0
  38. package/dist-export/api/partner/partner.type.d.ts.map +1 -1
  39. package/dist-export/export.d.ts +14 -0
  40. package/dist-export/export.d.ts.map +1 -1
  41. package/dist-export/export.js +16 -0
  42. package/dist-export/page/partner/area-region.export.d.ts +5 -0
  43. package/dist-export/page/partner/area-region.export.d.ts.map +1 -0
  44. package/dist-export/page/partner/area-region.export.js +6 -0
  45. package/dist-export/page/partner/business-unit.export.d.ts +5 -0
  46. package/dist-export/page/partner/business-unit.export.d.ts.map +1 -0
  47. package/dist-export/page/partner/business-unit.export.js +6 -0
  48. package/dist-export/page/partner/component/area-region-form.d.ts +8 -0
  49. package/dist-export/page/partner/component/area-region-form.d.ts.map +1 -0
  50. package/dist-export/page/partner/component/area-region-form.js +101 -0
  51. package/dist-export/page/partner/component/area-region.dropdown.d.ts +16 -0
  52. package/dist-export/page/partner/component/area-region.dropdown.d.ts.map +1 -0
  53. package/dist-export/page/partner/component/area-region.dropdown.js +62 -0
  54. package/dist-export/page/partner/component/business-unit-form.d.ts +8 -0
  55. package/dist-export/page/partner/component/business-unit-form.d.ts.map +1 -0
  56. package/dist-export/page/partner/component/business-unit-form.js +101 -0
  57. package/dist-export/page/partner/component/business-unit.dropdown.d.ts +16 -0
  58. package/dist-export/page/partner/component/business-unit.dropdown.d.ts.map +1 -0
  59. package/dist-export/page/partner/component/business-unit.dropdown.js +62 -0
  60. package/dist-export/page/partner/locales/en-US.json +82 -0
  61. package/dist-export/page/partner/locales/my-MM.json +82 -0
  62. package/dist-export/page/partner/locales/zh-CN.json +82 -0
  63. package/dist-export/page/partner/partner.locale.d.ts +3 -0
  64. package/dist-export/page/partner/partner.locale.d.ts.map +1 -0
  65. package/dist-export/page/partner/partner.locale.js +5 -0
  66. package/package.json +6 -6
@@ -0,0 +1,101 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Button, ConfirmDialog, DialogFooter, Form, FormControl, FormField, FormItem, FormLabel, FormMessage, Input, ResponsiveContent, ResponsiveHeader, ResponsiveTitle, Switch, UncontrolledResponsiveDialog, useLazyLocaleTranslation, } from "@quan-erp/shared-ui";
3
+ import { zodResolver } from "@hookform/resolvers/zod";
4
+ import { forwardRef, useImperativeHandle, useRef, useState } from "react";
5
+ import { useForm } from "react-hook-form";
6
+ import z from "zod";
7
+ import { useCreateAreaRegionMutation, useDeleteAreaRegionMutation, useUpdateAreaRegionMutation, } from "../../../api/area-region/area-region.mutations";
8
+ import { PartnerLocaleLazy } from "../partner.locale";
9
+ import { BUILTIN_PLUGIN } from "../../../utils/common";
10
+ import { useBaseLocale } from "../../../locale/locale.export";
11
+ const areaRegionSchema = z.object({
12
+ id: z.number().nullable().optional(),
13
+ name: z.string().min(1, "Name is required"),
14
+ code: z.string().optional(),
15
+ isActive: z.boolean(),
16
+ });
17
+ export const AreaRegionForm = forwardRef((_, ref) => {
18
+ const dialogRef = useRef(null);
19
+ const partnerLocales = useLazyLocaleTranslation(PartnerLocaleLazy);
20
+ const baseLocale = useBaseLocale();
21
+ const [confirmDeleteOpen, setConfirmDeleteOpen] = useState(false);
22
+ const { mutateAsync: createAreaRegion, isPending: isCreating } = useCreateAreaRegionMutation();
23
+ const { mutateAsync: updateAreaRegion, isPending: isUpdating } = useUpdateAreaRegionMutation();
24
+ const { mutateAsync: deleteAreaRegion, isPending: isDeleting } = useDeleteAreaRegionMutation();
25
+ const isPending = isCreating || isUpdating || isDeleting;
26
+ const form = useForm({
27
+ resolver: zodResolver(areaRegionSchema),
28
+ defaultValues: {
29
+ id: null,
30
+ name: "",
31
+ code: "",
32
+ isActive: true,
33
+ },
34
+ });
35
+ const editId = form.watch("id");
36
+ const isEdit = editId != null;
37
+ useImperativeHandle(ref, () => ({
38
+ open: () => dialogRef.current?.open(),
39
+ close: () => dialogRef.current?.close(),
40
+ setInitialData: (data) => {
41
+ if (data) {
42
+ form.reset({
43
+ id: data.id,
44
+ name: data.name,
45
+ code: data.code ?? "",
46
+ isActive: data.isActive ?? true,
47
+ });
48
+ }
49
+ else {
50
+ form.reset({
51
+ id: null,
52
+ name: "",
53
+ code: "",
54
+ isActive: true,
55
+ });
56
+ }
57
+ },
58
+ }));
59
+ const onSubmit = form.handleSubmit(async (values) => {
60
+ const name = values.name.trim();
61
+ const code = values.code?.trim() || undefined;
62
+ if (isEdit) {
63
+ await updateAreaRegion({
64
+ id: editId,
65
+ data: {
66
+ name,
67
+ code: code ?? null,
68
+ isActive: values.isActive,
69
+ },
70
+ });
71
+ }
72
+ else {
73
+ await createAreaRegion({
74
+ name,
75
+ ...(code ? { code } : {}),
76
+ isActive: values.isActive,
77
+ });
78
+ }
79
+ dialogRef.current?.close();
80
+ });
81
+ const onDelete = async () => {
82
+ if (editId == null)
83
+ return;
84
+ await deleteAreaRegion(editId);
85
+ dialogRef.current?.close();
86
+ };
87
+ return (_jsxs(_Fragment, { children: [_jsx(UncontrolledResponsiveDialog, { ref: dialogRef, trackBrowserBack: false, children: _jsxs(ResponsiveContent, { pluginName: BUILTIN_PLUGIN.name, className: "builtin:w-full builtin:max-w-none builtin:md:max-w-[425px] builtin:gap-4", children: [_jsx(ResponsiveHeader, { children: _jsx(ResponsiveTitle, { children: _jsx("div", { children: isEdit
88
+ ? partnerLocales.get("edit-area-region", "Edit area region")
89
+ : partnerLocales.get("create-area-region", "Create area region") }) }) }), _jsx(Form, { ...form, children: _jsxs("form", { onSubmit: (e) => {
90
+ e.stopPropagation();
91
+ return onSubmit(e);
92
+ }, className: "builtin:flex builtin:flex-col builtin:gap-3", children: [_jsx(FormField, { control: form.control, name: "name", disabled: isPending, render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: partnerLocales.get("area-region-name", "Name") }), _jsx(FormControl, { children: _jsx(Input, { ...field, placeholder: partnerLocales.get("area-region-name", "Name") }) }), _jsx(FormMessage, {})] })) }), _jsx(FormField, { control: form.control, name: "code", disabled: isPending, render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: partnerLocales.get("area-region-code", "Code (optional)") }), _jsx(FormControl, { children: _jsx(Input, { ...field, placeholder: partnerLocales.get("area-region-code", "Code (optional)") }) }), _jsx(FormMessage, {})] })) }), _jsx(FormField, { control: form.control, name: "isActive", disabled: isPending, render: ({ field }) => (_jsxs(FormItem, { className: "builtin:flex builtin:items-center builtin:justify-between builtin:px-0 builtin:py-2", children: [_jsx(FormLabel, { children: partnerLocales.get("area-region-active", "Active") }), _jsx(FormControl, { children: _jsx(Switch, { checked: field.value, onCheckedChange: field.onChange, disabled: isPending }) })] })) }), _jsxs(DialogFooter, { className: "builtin:flex builtin:w-full builtin:items-center builtin:justify-between builtin:gap-2 builtin:bg-(--dialog-background)", children: [isEdit ? (_jsx(Button, { type: "button", variant: "destructive", disabled: isPending, onClick: () => setConfirmDeleteOpen(true), children: baseLocale.get("delete", "Delete") })) : (_jsx("div", {})), _jsxs("div", { className: "builtin:flex builtin:items-center builtin:gap-2", children: [_jsx(Button, { type: "button", variant: "secondary", disabled: isPending, onClick: () => dialogRef.current?.close(), children: baseLocale.get("cancel", "Cancel") }), _jsx(Button, { type: "submit", disabled: isPending, children: isPending
93
+ ? partnerLocales.get("saving", "Saving...")
94
+ : partnerLocales.get("save", "Save") })] })] })] }) })] }) }), _jsx(ConfirmDialog, { open: confirmDeleteOpen, onClose: setConfirmDeleteOpen, onConfirm: onDelete, options: {
95
+ title: partnerLocales.get("delete-area-region", "Delete area region"),
96
+ description: partnerLocales.get("delete-area-region-confirm", "Are you sure you want to delete this area region?"),
97
+ confirmText: baseLocale.get("delete", "Delete"),
98
+ cancelText: baseLocale.get("cancel", "Cancel"),
99
+ variant: "destructive",
100
+ } })] }));
101
+ });
@@ -0,0 +1,16 @@
1
+ import { type ReactNode } from "react";
2
+ import type { AreaRegionDto } from "../../../api/area-region/area-region.types";
3
+ import type { TakeAndPartialRest } from "../../../utils/types.utils";
4
+ export type AreaRegionDropdownValue = number | TakeAndPartialRest<AreaRegionDto, "id" | "name">;
5
+ export type AreaRegionDropdownProps = {
6
+ value?: AreaRegionDropdownValue;
7
+ trigger?: (value?: AreaRegionDropdownValue) => ReactNode;
8
+ setValue: (v?: number, areaRegion?: AreaRegionDto) => void;
9
+ isCompact?: boolean;
10
+ className?: string;
11
+ disabled?: boolean;
12
+ allowClear?: boolean;
13
+ placeholder?: string;
14
+ };
15
+ export declare function AreaRegionDropdown({ value, setValue, trigger, isCompact, className, disabled, allowClear, placeholder: externalPlaceholder, }: AreaRegionDropdownProps): import("react").JSX.Element;
16
+ //# sourceMappingURL=area-region.dropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"area-region.dropdown.d.ts","sourceRoot":"","sources":["../../../../src/page/partner/component/area-region.dropdown.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAIrE,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,kBAAkB,CAAC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;AAEhG,MAAM,MAAM,uBAAuB,GAAG;IAClC,KAAK,CAAC,EAAE,uBAAuB,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,uBAAuB,KAAK,SAAS,CAAC;IACzD,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAOF,wBAAgB,kBAAkB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,EACT,QAAQ,EACR,UAAU,EACV,WAAW,EAAE,mBAAmB,GACnC,EAAE,uBAAuB,+BA+KzB"}
@@ -0,0 +1,62 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Button, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, Popover, PopoverContent, PopoverTrigger, cn, useMediaQuery, useDebounceValue, Drawer, DrawerTrigger, DrawerContent, useLazyLocaleTranslation, } from "@quan-erp/shared-ui";
3
+ import { Check, Down, LoadingFour, Pencil } from "@icon-park/react";
4
+ import { Plus } from "lucide-react";
5
+ import { useMemo, useState, useRef } from "react";
6
+ import { useAreaRegionQuery } from "../../../api/area-region/area-region.queries";
7
+ import { PartnerLocaleLazy } from "../partner.locale";
8
+ import { AreaRegionForm } from "./area-region-form";
9
+ function resolveAreaRegionId(value) {
10
+ if (value == null)
11
+ return undefined;
12
+ return typeof value === "number" ? value : value.id;
13
+ }
14
+ export function AreaRegionDropdown({ value, setValue, trigger, isCompact, className, disabled, allowClear, placeholder: externalPlaceholder, }) {
15
+ const t = useLazyLocaleTranslation(PartnerLocaleLazy);
16
+ const formRef = useRef(null);
17
+ const placeholder = externalPlaceholder || t.get("select-area-region", "Select area region...");
18
+ const [open, setOpen] = useState(false);
19
+ const [search, setSearch] = useState("");
20
+ const debouncedSearch = useDebounceValue(search, 500);
21
+ const isMobile = useMediaQuery();
22
+ const selectedId = resolveAreaRegionId(value);
23
+ const { data: areaRegions = [], isLoading } = useAreaRegionQuery({
24
+ currentPage: 1,
25
+ pageSize: 100,
26
+ query: debouncedSearch,
27
+ }, { enabled: open || selectedId != null });
28
+ const selectedLabel = useMemo(() => {
29
+ if (trigger)
30
+ return null;
31
+ if (selectedId == null)
32
+ return placeholder;
33
+ const found = areaRegions.find((r) => r.id === selectedId);
34
+ if (found) {
35
+ return found.code ? `${found.name} (${found.code})` : found.name;
36
+ }
37
+ if (typeof value === "object" && value?.name)
38
+ return value.name;
39
+ return placeholder;
40
+ }, [selectedId, areaRegions, placeholder, trigger, value]);
41
+ const ListContent = (_jsxs(Command, { shouldFilter: false, className: cn("builtin:bg-transparent"), children: [_jsx(CommandInput, { placeholder: t.get("search-area-region", "Search area region..."), autoFocus: false, value: search, onValueChange: setSearch }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: isLoading ? (_jsxs("div", { className: "builtin:flex builtin:items-center builtin:gap-2", children: [_jsx(LoadingFour, { className: "builtin:h-4 builtin:w-4 builtin:animate-spin" }), _jsx("span", { children: t.get("searching", "Searching...") })] })) : (t.get("no-area-region-found", "No area region found.")) }), _jsxs(CommandGroup, { heading: t.get("available-area-regions", "Available area regions"), children: [allowClear && (_jsxs(CommandItem, { value: "all area regions", onSelect: () => {
42
+ setValue(undefined, undefined);
43
+ setOpen(false);
44
+ }, className: cn("builtin:flex builtin:cursor-pointer builtin:items-center builtin:justify-between builtin:px-3 builtin:py-3 builtin:md:py-2 builtin:md:h-10 builtin:h-12 builtin:rounded-2xl", selectedId == null && "builtin:bg-accent/50"), children: [_jsx("span", { className: "builtin:text-sm builtin:leading-none builtin:font-semibold", children: placeholder }), selectedId == null && _jsx(Check, { className: "builtin:text-primary builtin:h-4 builtin:w-4" })] })), areaRegions.map((region) => (_jsxs(CommandItem, { value: region.name, onSelect: () => {
45
+ setValue(region.id, region);
46
+ setOpen(false);
47
+ }, className: cn("builtin:flex builtin:cursor-pointer builtin:items-center builtin:justify-between builtin:gap-2 builtin:px-3 builtin:py-3 builtin:md:py-2 builtin:rounded-2xl", selectedId === region.id && "builtin:bg-accent/50"), children: [_jsxs("div", { className: "builtin:flex builtin:min-w-0 builtin:flex-1 builtin:flex-col builtin:gap-0.5", children: [_jsx("span", { className: "builtin:truncate builtin:text-sm builtin:leading-none builtin:font-semibold", children: region.name }), region.code && (_jsx("span", { className: "builtin:text-muted-foreground builtin:text-[10px]", children: region.code }))] }), _jsxs("div", { className: "builtin:flex builtin:shrink-0 builtin:items-center builtin:gap-1", children: [selectedId === region.id && (_jsx(Check, { className: "builtin:text-primary builtin:h-4 builtin:w-4" })), _jsx(Button, { type: "button", variant: "ghost", size: "icon", className: "builtin:h-7 builtin:w-7", onClick: (e) => {
48
+ e.stopPropagation();
49
+ setOpen(false);
50
+ formRef.current?.setInitialData(region);
51
+ formRef.current?.open();
52
+ }, children: _jsx(Pencil, { className: "builtin:h-3.5 builtin:w-3.5" }) })] })] }, region.id)))] }), _jsx("div", { className: "builtin:border-border builtin:border-t builtin:p-1", children: _jsxs(CommandItem, { onSelect: () => {
53
+ setOpen(false);
54
+ formRef.current?.setInitialData(null);
55
+ formRef.current?.open();
56
+ }, className: "builtin:text-primary builtin:flex builtin:cursor-pointer builtin:items-center builtin:gap-2 builtin:rounded-2xl builtin:px-3 builtin:py-2", children: [_jsx(Plus, { className: "builtin:h-4 builtin:w-4" }), _jsx("span", { className: "builtin:text-sm builtin:font-semibold", children: t.get("create-area-region", "Create area region") })] }) })] })] }));
57
+ const defaultTrigger = (_jsxs(Button, { variant: "select", disabled: disabled, role: "combobox", "aria-expanded": open, className: cn("builtin:border-input/50 builtin:hover:bg-accent builtin:hover:text-accent-foreground builtin:w-full builtin:justify-between builtin:font-normal builtin:transition-colors", isCompact ? "builtin:h-8 builtin:px-2 builtin:text-xs" : "builtin:h-11 builtin:px-3 builtin:text-sm builtin:md:h-9", className), children: [_jsx("span", { className: "builtin:truncate", children: selectedLabel }), _jsx(Down, { className: "builtin:ml-2 builtin:h-4 builtin:w-4 builtin:shrink-0 builtin:opacity-50" })] }));
58
+ if (isMobile) {
59
+ return (_jsxs(_Fragment, { children: [_jsxs(Drawer, { open: open, onOpenChange: setOpen, children: [_jsx(DrawerTrigger, { asChild: true, children: trigger ? trigger(value) : defaultTrigger }), _jsx(DrawerContent, { className: "builtin:flex builtin:max-h-[85vh] builtin:flex-col builtin:overflow-hidden builtin:p-2", children: ListContent })] }), _jsx(AreaRegionForm, { ref: formRef })] }));
60
+ }
61
+ return (_jsxs(_Fragment, { children: [_jsxs(Popover, { open: open, onOpenChange: setOpen, modal: true, children: [_jsx(PopoverTrigger, { asChild: true, children: trigger ? trigger(value) : defaultTrigger }), _jsx(PopoverContent, { className: "builtin:w-[300px] builtin:p-0 builtin:shadow-lg", align: "start", children: ListContent })] }), _jsx(AreaRegionForm, { ref: formRef })] }));
62
+ }
@@ -0,0 +1,8 @@
1
+ import type { BusinessUnitDto } from "../../../api/business-unit/business-unit.types";
2
+ export type BusinessUnitFormRefType = {
3
+ open: () => void;
4
+ close: () => void;
5
+ setInitialData: (data: BusinessUnitDto | null) => void;
6
+ };
7
+ export declare const BusinessUnitForm: import("react").ForwardRefExoticComponent<import("react").RefAttributes<BusinessUnitFormRefType>>;
8
+ //# sourceMappingURL=business-unit-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"business-unit-form.d.ts","sourceRoot":"","sources":["../../../../src/page/partner/component/business-unit-form.tsx"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AActF,MAAM,MAAM,uBAAuB,GAAG;IAClC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,cAAc,EAAE,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC;CAC1D,CAAC;AAEF,eAAO,MAAM,gBAAgB,mGAsM3B,CAAC"}
@@ -0,0 +1,101 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Button, ConfirmDialog, DialogFooter, Form, FormControl, FormField, FormItem, FormLabel, FormMessage, Input, ResponsiveContent, ResponsiveHeader, ResponsiveTitle, Switch, UncontrolledResponsiveDialog, useLazyLocaleTranslation, } from "@quan-erp/shared-ui";
3
+ import { zodResolver } from "@hookform/resolvers/zod";
4
+ import { forwardRef, useImperativeHandle, useRef, useState } from "react";
5
+ import { useForm } from "react-hook-form";
6
+ import z from "zod";
7
+ import { useCreateBusinessUnitMutation, useDeleteBusinessUnitMutation, useUpdateBusinessUnitMutation, } from "../../../api/business-unit/business-unit.mutations";
8
+ import { PartnerLocaleLazy } from "../partner.locale";
9
+ import { BUILTIN_PLUGIN } from "../../../utils/common";
10
+ import { useBaseLocale } from "../../../locale/locale.export";
11
+ const businessUnitSchema = z.object({
12
+ id: z.number().nullable().optional(),
13
+ name: z.string().min(1, "Name is required"),
14
+ code: z.string().min(1, "Code is required"),
15
+ isActive: z.boolean(),
16
+ });
17
+ export const BusinessUnitForm = forwardRef((_, ref) => {
18
+ const dialogRef = useRef(null);
19
+ const partnerLocales = useLazyLocaleTranslation(PartnerLocaleLazy);
20
+ const baseLocale = useBaseLocale();
21
+ const [confirmDeleteOpen, setConfirmDeleteOpen] = useState(false);
22
+ const { mutateAsync: createBusinessUnit, isPending: isCreating } = useCreateBusinessUnitMutation();
23
+ const { mutateAsync: updateBusinessUnit, isPending: isUpdating } = useUpdateBusinessUnitMutation();
24
+ const { mutateAsync: deleteBusinessUnit, isPending: isDeleting } = useDeleteBusinessUnitMutation();
25
+ const isPending = isCreating || isUpdating || isDeleting;
26
+ const form = useForm({
27
+ resolver: zodResolver(businessUnitSchema),
28
+ defaultValues: {
29
+ id: null,
30
+ name: "",
31
+ code: "",
32
+ isActive: true,
33
+ },
34
+ });
35
+ const editId = form.watch("id");
36
+ const isEdit = editId != null;
37
+ useImperativeHandle(ref, () => ({
38
+ open: () => dialogRef.current?.open(),
39
+ close: () => dialogRef.current?.close(),
40
+ setInitialData: (data) => {
41
+ if (data) {
42
+ form.reset({
43
+ id: data.id,
44
+ name: data.name,
45
+ code: data.code ?? "",
46
+ isActive: data.isActive ?? true,
47
+ });
48
+ }
49
+ else {
50
+ form.reset({
51
+ id: null,
52
+ name: "",
53
+ code: "",
54
+ isActive: true,
55
+ });
56
+ }
57
+ },
58
+ }));
59
+ const onSubmit = form.handleSubmit(async (values) => {
60
+ const name = values.name.trim();
61
+ const code = values.code.trim();
62
+ if (isEdit) {
63
+ await updateBusinessUnit({
64
+ id: editId,
65
+ data: {
66
+ name,
67
+ code,
68
+ isActive: values.isActive,
69
+ },
70
+ });
71
+ }
72
+ else {
73
+ await createBusinessUnit({
74
+ name,
75
+ code,
76
+ isActive: values.isActive,
77
+ });
78
+ }
79
+ dialogRef.current?.close();
80
+ });
81
+ const onDelete = async () => {
82
+ if (editId == null)
83
+ return;
84
+ await deleteBusinessUnit(editId);
85
+ dialogRef.current?.close();
86
+ };
87
+ return (_jsxs(_Fragment, { children: [_jsx(UncontrolledResponsiveDialog, { ref: dialogRef, trackBrowserBack: false, children: _jsxs(ResponsiveContent, { pluginName: BUILTIN_PLUGIN.name, className: "builtin:w-full builtin:max-w-none builtin:md:max-w-[425px] builtin:gap-4", children: [_jsx(ResponsiveHeader, { children: _jsx(ResponsiveTitle, { children: _jsx("div", { children: isEdit
88
+ ? partnerLocales.get("edit-business-unit", "Edit business unit")
89
+ : partnerLocales.get("create-business-unit", "Create business unit") }) }) }), _jsx(Form, { ...form, children: _jsxs("form", { onSubmit: (e) => {
90
+ e.stopPropagation();
91
+ return onSubmit(e);
92
+ }, className: "builtin:flex builtin:flex-col builtin:gap-3", children: [_jsx(FormField, { control: form.control, name: "name", disabled: isPending, render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: partnerLocales.get("business-unit-name", "Name") }), _jsx(FormControl, { children: _jsx(Input, { ...field, placeholder: partnerLocales.get("business-unit-name", "Name") }) }), _jsx(FormMessage, {})] })) }), _jsx(FormField, { control: form.control, name: "code", disabled: isPending, render: ({ field }) => (_jsxs(FormItem, { children: [_jsx(FormLabel, { children: partnerLocales.get("business-unit-code", "Code") }), _jsx(FormControl, { children: _jsx(Input, { ...field, placeholder: partnerLocales.get("business-unit-code", "Code") }) }), _jsx(FormMessage, {})] })) }), _jsx(FormField, { control: form.control, name: "isActive", disabled: isPending, render: ({ field }) => (_jsxs(FormItem, { className: "builtin:flex builtin:items-center builtin:justify-between builtin:px-0 builtin:py-2", children: [_jsx(FormLabel, { children: partnerLocales.get("business-unit-active", "Active") }), _jsx(FormControl, { children: _jsx(Switch, { checked: field.value, onCheckedChange: field.onChange, disabled: isPending }) })] })) }), _jsxs(DialogFooter, { className: "builtin:flex builtin:w-full builtin:items-center builtin:justify-between builtin:gap-2 builtin:bg-(--dialog-background)", children: [isEdit ? (_jsx(Button, { type: "button", variant: "destructive", disabled: isPending, onClick: () => setConfirmDeleteOpen(true), children: baseLocale.get("delete", "Delete") })) : (_jsx("div", {})), _jsxs("div", { className: "builtin:flex builtin:items-center builtin:gap-2", children: [_jsx(Button, { type: "button", variant: "secondary", disabled: isPending, onClick: () => dialogRef.current?.close(), children: baseLocale.get("cancel", "Cancel") }), _jsx(Button, { type: "submit", disabled: isPending, children: isPending
93
+ ? partnerLocales.get("saving", "Saving...")
94
+ : partnerLocales.get("save", "Save") })] })] })] }) })] }) }), _jsx(ConfirmDialog, { open: confirmDeleteOpen, onClose: setConfirmDeleteOpen, onConfirm: onDelete, options: {
95
+ title: partnerLocales.get("delete-business-unit", "Delete business unit"),
96
+ description: partnerLocales.get("delete-business-unit-confirm", "Are you sure you want to delete this business unit?"),
97
+ confirmText: baseLocale.get("delete", "Delete"),
98
+ cancelText: baseLocale.get("cancel", "Cancel"),
99
+ variant: "destructive",
100
+ } })] }));
101
+ });
@@ -0,0 +1,16 @@
1
+ import { type ReactNode } from "react";
2
+ import type { BusinessUnitDto } from "../../../api/business-unit/business-unit.types";
3
+ import type { TakeAndPartialRest } from "../../../utils/types.utils";
4
+ export type BusinessUnitDropdownValue = number | TakeAndPartialRest<BusinessUnitDto, "id" | "name">;
5
+ export type BusinessUnitDropdownProps = {
6
+ value?: BusinessUnitDropdownValue;
7
+ trigger?: (value?: BusinessUnitDropdownValue) => ReactNode;
8
+ setValue: (v?: number, businessUnit?: BusinessUnitDto) => void;
9
+ isCompact?: boolean;
10
+ className?: string;
11
+ disabled?: boolean;
12
+ allowClear?: boolean;
13
+ placeholder?: string;
14
+ };
15
+ export declare function BusinessUnitDropdown({ value, setValue, trigger, isCompact, className, disabled, allowClear, placeholder: externalPlaceholder, }: BusinessUnitDropdownProps): import("react").JSX.Element;
16
+ //# sourceMappingURL=business-unit.dropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"business-unit.dropdown.d.ts","sourceRoot":"","sources":["../../../../src/page/partner/component/business-unit.dropdown.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAIrE,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,kBAAkB,CAAC,eAAe,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;AAEpG,MAAM,MAAM,yBAAyB,GAAG;IACpC,KAAK,CAAC,EAAE,yBAAyB,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,yBAAyB,KAAK,SAAS,CAAC;IAC3D,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAOF,wBAAgB,oBAAoB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,EACT,QAAQ,EACR,UAAU,EACV,WAAW,EAAE,mBAAmB,GACnC,EAAE,yBAAyB,+BA6K3B"}
@@ -0,0 +1,62 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Button, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, Popover, PopoverContent, PopoverTrigger, cn, useMediaQuery, useDebounceValue, Drawer, DrawerTrigger, DrawerContent, useLazyLocaleTranslation, } from "@quan-erp/shared-ui";
3
+ import { Check, Down, LoadingFour, Pencil } from "@icon-park/react";
4
+ import { Plus } from "lucide-react";
5
+ import { useMemo, useState, useRef } from "react";
6
+ import { useBusinessUnitQuery } from "../../../api/business-unit/business-unit.queries";
7
+ import { PartnerLocaleLazy } from "../partner.locale";
8
+ import { BusinessUnitForm } from "./business-unit-form";
9
+ function resolveBusinessUnitId(value) {
10
+ if (value == null)
11
+ return undefined;
12
+ return typeof value === "number" ? value : value.id;
13
+ }
14
+ export function BusinessUnitDropdown({ value, setValue, trigger, isCompact, className, disabled, allowClear, placeholder: externalPlaceholder, }) {
15
+ const t = useLazyLocaleTranslation(PartnerLocaleLazy);
16
+ const formRef = useRef(null);
17
+ const placeholder = externalPlaceholder || t.get("select-business-unit", "Select business unit...");
18
+ const [open, setOpen] = useState(false);
19
+ const [search, setSearch] = useState("");
20
+ const debouncedSearch = useDebounceValue(search, 500);
21
+ const isMobile = useMediaQuery();
22
+ const selectedId = resolveBusinessUnitId(value);
23
+ const { data: businessUnits = [], isLoading } = useBusinessUnitQuery({
24
+ currentPage: 1,
25
+ pageSize: 100,
26
+ query: debouncedSearch,
27
+ }, { enabled: open || selectedId != null });
28
+ const selectedLabel = useMemo(() => {
29
+ if (trigger)
30
+ return null;
31
+ if (selectedId == null)
32
+ return placeholder;
33
+ const found = businessUnits.find((u) => u.id === selectedId);
34
+ if (found) {
35
+ return `${found.name} (${found.code})`;
36
+ }
37
+ if (typeof value === "object" && value?.name)
38
+ return value.name;
39
+ return placeholder;
40
+ }, [selectedId, businessUnits, placeholder, trigger, value]);
41
+ const ListContent = (_jsxs(Command, { shouldFilter: false, className: cn("builtin:bg-transparent"), children: [_jsx(CommandInput, { placeholder: t.get("search-business-unit", "Search business unit..."), autoFocus: false, value: search, onValueChange: setSearch }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: isLoading ? (_jsxs("div", { className: "builtin:flex builtin:items-center builtin:gap-2", children: [_jsx(LoadingFour, { className: "builtin:h-4 builtin:w-4 builtin:animate-spin" }), _jsx("span", { children: t.get("searching", "Searching...") })] })) : (t.get("no-business-unit-found", "No business unit found.")) }), _jsxs(CommandGroup, { heading: t.get("available-business-units", "Available business units"), children: [allowClear && (_jsxs(CommandItem, { value: "all business units", onSelect: () => {
42
+ setValue(undefined, undefined);
43
+ setOpen(false);
44
+ }, className: cn("builtin:flex builtin:cursor-pointer builtin:items-center builtin:justify-between builtin:px-3 builtin:py-3 builtin:md:py-2 builtin:md:h-10 builtin:h-12 builtin:rounded-2xl", selectedId == null && "builtin:bg-accent/50"), children: [_jsx("span", { className: "builtin:text-sm builtin:leading-none builtin:font-semibold", children: placeholder }), selectedId == null && _jsx(Check, { className: "builtin:text-primary builtin:h-4 builtin:w-4" })] })), businessUnits.map((unit) => (_jsxs(CommandItem, { value: unit.name, onSelect: () => {
45
+ setValue(unit.id, unit);
46
+ setOpen(false);
47
+ }, className: cn("builtin:flex builtin:cursor-pointer builtin:items-center builtin:justify-between builtin:gap-2 builtin:px-3 builtin:py-3 builtin:md:py-2 builtin:rounded-2xl", selectedId === unit.id && "builtin:bg-accent/50"), children: [_jsxs("div", { className: "builtin:flex builtin:min-w-0 builtin:flex-1 builtin:flex-col builtin:gap-0.5", children: [_jsx("span", { className: "builtin:truncate builtin:text-sm builtin:leading-none builtin:font-semibold", children: unit.name }), _jsx("span", { className: "builtin:text-muted-foreground builtin:text-[10px]", children: unit.code })] }), _jsxs("div", { className: "builtin:flex builtin:shrink-0 builtin:items-center builtin:gap-1", children: [selectedId === unit.id && (_jsx(Check, { className: "builtin:text-primary builtin:h-4 builtin:w-4" })), _jsx(Button, { type: "button", variant: "ghost", size: "icon", className: "builtin:h-7 builtin:w-7", onClick: (e) => {
48
+ e.stopPropagation();
49
+ setOpen(false);
50
+ formRef.current?.setInitialData(unit);
51
+ formRef.current?.open();
52
+ }, children: _jsx(Pencil, { className: "builtin:h-3.5 builtin:w-3.5" }) })] })] }, unit.id)))] }), _jsx("div", { className: "builtin:border-border builtin:border-t builtin:p-1", children: _jsxs(CommandItem, { onSelect: () => {
53
+ setOpen(false);
54
+ formRef.current?.setInitialData(null);
55
+ formRef.current?.open();
56
+ }, className: "builtin:text-primary builtin:flex builtin:cursor-pointer builtin:items-center builtin:gap-2 builtin:rounded-2xl builtin:px-3 builtin:py-2", children: [_jsx(Plus, { className: "builtin:h-4 builtin:w-4" }), _jsx("span", { className: "builtin:text-sm builtin:font-semibold", children: t.get("create-business-unit", "Create business unit") })] }) })] })] }));
57
+ const defaultTrigger = (_jsxs(Button, { variant: "select", disabled: disabled, role: "combobox", "aria-expanded": open, className: cn("builtin:border-input/50 builtin:hover:bg-accent builtin:hover:text-accent-foreground builtin:w-full builtin:justify-between builtin:font-normal builtin:transition-colors", isCompact ? "builtin:h-8 builtin:px-2 builtin:text-xs" : "builtin:h-11 builtin:px-3 builtin:text-sm builtin:md:h-9", className), children: [_jsx("span", { className: "builtin:truncate", children: selectedLabel }), _jsx(Down, { className: "builtin:ml-2 builtin:h-4 builtin:w-4 builtin:shrink-0 builtin:opacity-50" })] }));
58
+ if (isMobile) {
59
+ return (_jsxs(_Fragment, { children: [_jsxs(Drawer, { open: open, onOpenChange: setOpen, children: [_jsx(DrawerTrigger, { asChild: true, children: trigger ? trigger(value) : defaultTrigger }), _jsx(DrawerContent, { className: "builtin:flex builtin:max-h-[85vh] builtin:flex-col builtin:overflow-hidden builtin:p-2", children: ListContent })] }), _jsx(BusinessUnitForm, { ref: formRef })] }));
60
+ }
61
+ return (_jsxs(_Fragment, { children: [_jsxs(Popover, { open: open, onOpenChange: setOpen, modal: true, children: [_jsx(PopoverTrigger, { asChild: true, children: trigger ? trigger(value) : defaultTrigger }), _jsx(PopoverContent, { className: "builtin:w-[300px] builtin:p-0 builtin:shadow-lg", align: "start", children: ListContent })] }), _jsx(BusinessUnitForm, { ref: formRef })] }));
62
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "create-customer": "Create new partner",
3
+ "edit-customer": "Edit partner",
4
+ "general-info": "General Info",
5
+ "first-name": "First name",
6
+ "last-name": "Last name",
7
+ "email": "Email (optional)",
8
+ "phone": "Phone (optional)",
9
+ "phone-2": "Phone 2 (optional)",
10
+ "phone-3": "Phone 3 (optional)",
11
+ "city": "City (optional)",
12
+ "area-region": "Area region",
13
+ "area-region-name": "Name",
14
+ "area-region-code": "Code (optional)",
15
+ "area-region-active": "Active",
16
+ "select-area-region": "Select area region...",
17
+ "search-area-region": "Search area region...",
18
+ "no-area-region-found": "No area region found.",
19
+ "available-area-regions": "Available area regions",
20
+ "create-area-region": "Create area region",
21
+ "edit-area-region": "Edit area region",
22
+ "delete-area-region": "Delete area region",
23
+ "delete-area-region-confirm": "Are you sure you want to delete this area region?",
24
+ "business-unit": "Business unit",
25
+ "business-unit-name": "Name",
26
+ "business-unit-code": "Code",
27
+ "business-unit-active": "Active",
28
+ "select-business-unit": "Select business unit...",
29
+ "search-business-unit": "Search business unit...",
30
+ "no-business-unit-found": "No business unit found.",
31
+ "available-business-units": "Available business units",
32
+ "create-business-unit": "Create business unit",
33
+ "edit-business-unit": "Edit business unit",
34
+ "delete-business-unit": "Delete business unit",
35
+ "delete-business-unit-confirm": "Are you sure you want to delete this business unit?",
36
+ "address": "Address (optional)",
37
+ "save": "Save",
38
+ "saving": "Saving...",
39
+ "internal-notes": "Internal notes",
40
+ "shipping-address": "Shipping address",
41
+ "shipping-addresses": "Shipping addresses",
42
+ "no-address": "There is no address list",
43
+ "country": "Country",
44
+ "state": "State",
45
+ "division": "Division",
46
+ "township": "Township",
47
+ "select-country": "Select country",
48
+ "select-state": "Select state",
49
+ "select-division": "Select division",
50
+ "select-township": "Select township",
51
+ "search-country": "Search country...",
52
+ "search-state": "Search state...",
53
+ "search-division": "Search division...",
54
+ "search-township": "Search township...",
55
+ "no-country-found": "No country found.",
56
+ "no-state-found": "No state found.",
57
+ "no-division-found": "No division found.",
58
+ "no-township-found": "No township found.",
59
+ "address-label": "Address",
60
+ "add-address": "Add address",
61
+ "edit-address": "Edit address",
62
+ "postal-code": "Postal code",
63
+ "update-address": "Update address",
64
+ "save-address": "Save address",
65
+ "latitude": "Latitude",
66
+ "longitude": "Longitude",
67
+ "is-default": "Default address",
68
+ "save-to-contacts": "Save to contacts",
69
+ "share": "Share",
70
+ "loading-partners": "Loading partners...",
71
+ "failed-to-load-partners": "Failed to load partners. Please check your connection.",
72
+ "no-customers-found": "No customers found",
73
+ "no-suppliers-found": "No suppliers found",
74
+ "no-customers-registered": "There are no customers registered yet.",
75
+ "no-suppliers-registered": "There are no suppliers registered yet.",
76
+ "select-partner": "Select Partner...",
77
+ "search-partner": "Search partner...",
78
+ "searching": "Searching...",
79
+ "no-partners-found": "No partners found.",
80
+ "available-partners": "Available Partners",
81
+ "create-partner": "Create New Partner"
82
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "create-customer": "ဖောက်သည်အသစ်ဖန်တီးမည်",
3
+ "edit-customer": "ဖောက်သည်ပြင်ဆင်မည်",
4
+ "general-info": "အထွေထွေအချက်အလက်",
5
+ "first-name": "ရှေ့နာမည်",
6
+ "last-name": "နောက်နာမည်",
7
+ "email": "အီးမေးလ်",
8
+ "phone": "ဖုန်းနံပါတ်",
9
+ "phone-2": "ဖုန်းနံပါတ် ၂ (မလိုအပ်ပါကလွတ်ထားနိုင်သည်)",
10
+ "phone-3": "ဖုန်းနံပါတ် ၃ (မလိုအပ်ပါကလွတ်ထားနိုင်သည်)",
11
+ "city": "မြို့ (မလိုအပ်ပါကလွတ်ထားနိုင်သည်)",
12
+ "area-region": "ဒေသ/နယ်မြေ",
13
+ "area-region-name": "အမည်",
14
+ "area-region-code": "ကုဒ် (မလိုအပ်ပါကလွတ်ထားနိုင်သည်)",
15
+ "area-region-active": "အသုံးပြုနေသည်",
16
+ "select-area-region": "ဒေသ/နယ်မြေရွေးပါ...",
17
+ "search-area-region": "ဒေသ/နယ်မြေရှာရန်...",
18
+ "no-area-region-found": "ဒေသ/နယ်မြေမတွေ့ပါ။",
19
+ "available-area-regions": "ရရှိနိုင်သော ဒေသ/နယ်မြေများ",
20
+ "create-area-region": "ဒေသ/နယ်မြေဖန်တီးမည်",
21
+ "edit-area-region": "ဒေသ/နယ်မြေပြင်ဆင်မည်",
22
+ "delete-area-region": "ဒေသ/နယ်မြေဖျက်မည်",
23
+ "delete-area-region-confirm": "ဤဒေသ/နယ်မြေကို ဖျက်ရန် သေချာပါသလား?",
24
+ "business-unit": "လုပ်ငန်းယူနစ်",
25
+ "business-unit-name": "အမည်",
26
+ "business-unit-code": "ကုဒ်",
27
+ "business-unit-active": "အသုံးပြုနေသည်",
28
+ "select-business-unit": "လုပ်ငန်းယူနစ်ရွေးပါ...",
29
+ "search-business-unit": "လုပ်ငန်းယူနစ်ရှာရန်...",
30
+ "no-business-unit-found": "လုပ်ငန်းယူနစ်မတွေ့ပါ။",
31
+ "available-business-units": "ရရှိနိုင်သော လုပ်ငန်းယူနစ်များ",
32
+ "create-business-unit": "လုပ်ငန်းယူနစ်ဖန်တီးမည်",
33
+ "edit-business-unit": "လုပ်ငန်းယူနစ်ပြင်ဆင်မည်",
34
+ "delete-business-unit": "လုပ်ငန်းယူနစ်ဖျက်မည်",
35
+ "delete-business-unit-confirm": "ဤလုပ်ငန်းယူနစ်ကို ဖျက်ရန် သေချာပါသလား?",
36
+ "address": "နေရပ်လိပ်စာ (မလိုအပ်ပါကလွတ်ထားနိုင်သည်)",
37
+ "save": "သိမ်းမည်",
38
+ "saving": "သိမ်းနေသည်…",
39
+ "internal-notes": "အမှတ်အသား",
40
+ "shipping-address": "ပို့ဆောင်ရေးလိပ်စာ",
41
+ "shipping-addresses": "ပို့ဆောင်ရေးလိပ်စာများ",
42
+ "no-address": "လိပ်စာစာရင်းမရှိပါ",
43
+ "country": "နိုင်ငံ",
44
+ "state": "ပြည်နယ်",
45
+ "division": "ခရိုင်",
46
+ "township": "မြို့နယ်",
47
+ "select-country": "နိုင်ငံရွေးပါ",
48
+ "select-state": "ပြည်နယ်ရွေးပါ",
49
+ "select-division": "ခရိုင်ရွေးပါ",
50
+ "select-township": "မြို့နယ်ရွေးပါ",
51
+ "search-country": "နိုင်ငံရှာရန်…",
52
+ "search-state": "ပြည်နယ်ရှာရန်…",
53
+ "search-division": "ခရိုင်ရှာရန်…",
54
+ "search-township": "မြို့နယ်ရှာရန်…",
55
+ "no-country-found": "နိုင်ငံရှာမတွေ့ပါ",
56
+ "no-state-found": "ပြည်နယ်ရှာမတွေ့ပါ",
57
+ "no-division-found": "ခရိုင်ရှာမတွေ့ပါ",
58
+ "no-township-found": "မြို့နယ်ရှာမတွေ့ပါ",
59
+ "address-label": "လိပ်စာ",
60
+ "add-address": "လိပ်စာအသစ်ထည့်မည်",
61
+ "edit-address": "လိပ်စာပြင်ဆင်မည်",
62
+ "postal-code": "စာပို့သင်္ကေတ",
63
+ "update-address": "လိပ်စာအသစ်ပြင်မည်",
64
+ "save-address": "လိပ်စာသိမ်းမည်",
65
+ "latitude": "လတ္တီတွဒ်",
66
+ "longitude": "လောင်ဂျီတွဒ်",
67
+ "is-default": "မူလလိပ်စာ",
68
+ "save-to-contacts": "အဆက်အသွယ်သို့သိမ်းမည်",
69
+ "share": "မျှဝေမည်",
70
+ "loading-partners": "ပါတနာများ ဖွင့်နေသည်...",
71
+ "failed-to-load-partners": "ပါတနာများ ဖွင့်ရန် မအောင်မြင်ပါ။ သင့်ကွန်ရက်ကို စစ်ဆေးပါ။",
72
+ "no-customers-found": "ဖောက်သည်များ မတွေ့ပါ",
73
+ "no-suppliers-found": "ပေးသွင်းသူများ မတွေ့ပါ",
74
+ "no-customers-registered": "မှတ်ပုံတင်ထားသော ဖောက်သည်များ မရှိသေးပါ။",
75
+ "no-suppliers-registered": "မှတ်ပုံတင်ထားသော ပေးသွင်းသူများ မရှိသေးပါ။",
76
+ "select-partner": "ပါတနာရွေးပါ...",
77
+ "search-partner": "ပါတနာရှာရန်...",
78
+ "searching": "ရှာဖွေနေသည်...",
79
+ "no-partners-found": "ပါတနာများ မတွေ့ပါ။",
80
+ "available-partners": "ရရှိနိုင်သော ပါတနာများ",
81
+ "create-partner": "ပါတနာအသစ်ဖန်တီးမည်"
82
+ }