@open-mercato/core 0.6.8-develop.7096.1.97319f09f6 → 0.6.8-develop.7100.1.fbf66fca35
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/.turbo/turbo-build.log +1 -1
- package/dist/modules/auth/api/users/route.js +13 -5
- package/dist/modules/auth/api/users/route.js.map +2 -2
- package/dist/modules/auth/lib/userIdFilter.js +16 -0
- package/dist/modules/auth/lib/userIdFilter.js.map +7 -0
- package/dist/modules/devices/acl.js +9 -1
- package/dist/modules/devices/acl.js.map +2 -2
- package/dist/modules/devices/backend/devices/[id]/page.js +4 -20
- package/dist/modules/devices/backend/devices/[id]/page.js.map +2 -2
- package/dist/modules/devices/backend/devices/create/page.js +17 -1
- package/dist/modules/devices/backend/devices/create/page.js.map +2 -2
- package/dist/modules/devices/backend/devices/page.js +13 -21
- package/dist/modules/devices/backend/devices/page.js.map +2 -2
- package/dist/modules/devices/backend/devices/useDeviceUserLabels.js +34 -0
- package/dist/modules/devices/backend/devices/useDeviceUserLabels.js.map +7 -0
- package/dist/modules/devices/backend/devices/userOptions.js +52 -0
- package/dist/modules/devices/backend/devices/userOptions.js.map +7 -0
- package/dist/modules/devices/setup.js +6 -2
- package/dist/modules/devices/setup.js.map +2 -2
- package/dist/modules/wms/api/warehouseSearch.js +21 -0
- package/dist/modules/wms/api/warehouseSearch.js.map +7 -0
- package/dist/modules/wms/api/warehouses/route.js +13 -9
- package/dist/modules/wms/api/warehouses/route.js.map +2 -2
- package/dist/modules/wms/commands/configuration.js +59 -5
- package/dist/modules/wms/commands/configuration.js.map +2 -2
- package/dist/modules/wms/commands/shared.js +4 -0
- package/dist/modules/wms/commands/shared.js.map +2 -2
- package/dist/modules/wms/components/backend/WarehouseEditDialog.js +158 -0
- package/dist/modules/wms/components/backend/WarehouseEditDialog.js.map +7 -0
- package/dist/modules/wms/components/backend/WmsConfigurationPage.js +29 -103
- package/dist/modules/wms/components/backend/WmsConfigurationPage.js.map +2 -2
- package/dist/modules/wms/components/backend/warehouseFormOptions.js +66 -0
- package/dist/modules/wms/components/backend/warehouseFormOptions.js.map +7 -0
- package/package.json +7 -7
- package/src/modules/auth/api/users/route.ts +18 -5
- package/src/modules/auth/lib/userIdFilter.ts +31 -0
- package/src/modules/devices/AGENTS.md +12 -1
- package/src/modules/devices/acl.ts +9 -1
- package/src/modules/devices/backend/devices/[id]/page.tsx +5 -19
- package/src/modules/devices/backend/devices/create/page.tsx +17 -1
- package/src/modules/devices/backend/devices/page.tsx +20 -24
- package/src/modules/devices/backend/devices/useDeviceUserLabels.ts +45 -0
- package/src/modules/devices/backend/devices/userOptions.ts +99 -0
- package/src/modules/devices/i18n/de.json +3 -2
- package/src/modules/devices/i18n/en.json +3 -2
- package/src/modules/devices/i18n/es.json +3 -2
- package/src/modules/devices/i18n/ko.json +3 -2
- package/src/modules/devices/i18n/pl.json +3 -2
- package/src/modules/devices/setup.ts +6 -2
- package/src/modules/wms/api/warehouseSearch.ts +23 -0
- package/src/modules/wms/api/warehouses/route.ts +13 -9
- package/src/modules/wms/commands/configuration.ts +73 -7
- package/src/modules/wms/commands/shared.ts +9 -0
- package/src/modules/wms/components/backend/WarehouseEditDialog.tsx +216 -0
- package/src/modules/wms/components/backend/WmsConfigurationPage.tsx +31 -139
- package/src/modules/wms/components/backend/warehouseFormOptions.ts +72 -0
- package/src/modules/wms/i18n/de.json +2 -0
- package/src/modules/wms/i18n/en.json +2 -0
- package/src/modules/wms/i18n/es.json +2 -0
- package/src/modules/wms/i18n/ko.json +2 -0
- package/src/modules/wms/i18n/pl.json +2 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { CrudFieldOption } from '@open-mercato/ui/backend/CrudForm'
|
|
2
|
+
import { buildCountryOptions, resolveCountryName } from '@open-mercato/shared/lib/location/countries'
|
|
3
|
+
|
|
4
|
+
const OPTION_LIMIT = 100
|
|
5
|
+
|
|
6
|
+
function matchesQuery(haystack: string, query: string): boolean {
|
|
7
|
+
return haystack.toLowerCase().includes(query.toLowerCase())
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function countryOptionFromStored(value: string, locale?: string): CrudFieldOption {
|
|
11
|
+
const trimmed = value.trim()
|
|
12
|
+
const code = trimmed.toUpperCase()
|
|
13
|
+
const label = resolveCountryName(code, { locale })
|
|
14
|
+
if (label && label !== code) {
|
|
15
|
+
return { value: code, label }
|
|
16
|
+
}
|
|
17
|
+
return { value: trimmed, label: trimmed }
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function formatWarehouseCountryLabel(value: string | null | undefined, locale?: string): string {
|
|
21
|
+
const trimmed = value?.trim()
|
|
22
|
+
if (!trimmed) return '—'
|
|
23
|
+
return countryOptionFromStored(trimmed, locale).label
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function timezoneOptionFromStored(value: string): CrudFieldOption {
|
|
27
|
+
const trimmed = value.trim()
|
|
28
|
+
return { value: trimmed, label: trimmed }
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export async function loadCountryOptions(query?: string, locale?: string): Promise<CrudFieldOption[]> {
|
|
32
|
+
const options = buildCountryOptions({ locale }).map((entry) => ({
|
|
33
|
+
value: entry.code,
|
|
34
|
+
label: entry.label,
|
|
35
|
+
}))
|
|
36
|
+
const term = query?.trim()
|
|
37
|
+
const filtered = term
|
|
38
|
+
? options.filter((option) => matchesQuery(option.label, term) || matchesQuery(option.value, term))
|
|
39
|
+
: options
|
|
40
|
+
return filtered.slice(0, OPTION_LIMIT)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function resolveLocalTimeZone(): string | undefined {
|
|
44
|
+
try {
|
|
45
|
+
return Intl.DateTimeFormat().resolvedOptions().timeZone || undefined
|
|
46
|
+
} catch {
|
|
47
|
+
return undefined
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function listSupportedTimeZones(): string[] {
|
|
52
|
+
try {
|
|
53
|
+
const intlWithSupportedValues = Intl as typeof Intl & { supportedValuesOf?: (input: 'timeZone') => string[] }
|
|
54
|
+
if (typeof intlWithSupportedValues.supportedValuesOf !== 'function') return []
|
|
55
|
+
return intlWithSupportedValues.supportedValuesOf('timeZone').filter(Boolean)
|
|
56
|
+
} catch {
|
|
57
|
+
return []
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export async function loadTimezoneOptions(query?: string): Promise<CrudFieldOption[]> {
|
|
62
|
+
const localZone = resolveLocalTimeZone()
|
|
63
|
+
const preferred = localZone && localZone !== 'UTC' ? ['UTC', localZone] : ['UTC']
|
|
64
|
+
const zones = new Set<string>([...preferred, ...listSupportedTimeZones()])
|
|
65
|
+
const rest = Array.from(zones).filter((tz) => !preferred.includes(tz))
|
|
66
|
+
const allTz = [...preferred, ...rest]
|
|
67
|
+
const term = query?.trim()
|
|
68
|
+
const filtered = term
|
|
69
|
+
? allTz.filter((tz) => matchesQuery(tz, term))
|
|
70
|
+
: allTz
|
|
71
|
+
return filtered.slice(0, OPTION_LIMIT).map((tz) => ({ value: tz, label: tz }))
|
|
72
|
+
}
|
|
@@ -95,9 +95,11 @@
|
|
|
95
95
|
"wms.backend.config.warehouses.form.city": "Stadt",
|
|
96
96
|
"wms.backend.config.warehouses.form.code": "Code",
|
|
97
97
|
"wms.backend.config.warehouses.form.country": "Land",
|
|
98
|
+
"wms.backend.config.warehouses.form.countryPlaceholder": "Land suchen",
|
|
98
99
|
"wms.backend.config.warehouses.form.name": "Name",
|
|
99
100
|
"wms.backend.config.warehouses.form.primary": "Hauptlager",
|
|
100
101
|
"wms.backend.config.warehouses.form.timezone": "Zeitzone",
|
|
102
|
+
"wms.backend.config.warehouses.form.timezonePlaceholder": "Zeitzone suchen",
|
|
101
103
|
"wms.backend.config.warehouses.primary.yes": "Primär",
|
|
102
104
|
"wms.backend.config.warehouses.search": "Lager suchen",
|
|
103
105
|
"wms.backend.config.warehouses.title": "Lager",
|
|
@@ -95,9 +95,11 @@
|
|
|
95
95
|
"wms.backend.config.warehouses.form.city": "City",
|
|
96
96
|
"wms.backend.config.warehouses.form.code": "Code",
|
|
97
97
|
"wms.backend.config.warehouses.form.country": "Country",
|
|
98
|
+
"wms.backend.config.warehouses.form.countryPlaceholder": "Search country",
|
|
98
99
|
"wms.backend.config.warehouses.form.name": "Name",
|
|
99
100
|
"wms.backend.config.warehouses.form.primary": "Primary warehouse",
|
|
100
101
|
"wms.backend.config.warehouses.form.timezone": "Timezone",
|
|
102
|
+
"wms.backend.config.warehouses.form.timezonePlaceholder": "Search timezone",
|
|
101
103
|
"wms.backend.config.warehouses.primary.yes": "Primary",
|
|
102
104
|
"wms.backend.config.warehouses.search": "Search warehouses",
|
|
103
105
|
"wms.backend.config.warehouses.title": "Warehouses",
|
|
@@ -95,9 +95,11 @@
|
|
|
95
95
|
"wms.backend.config.warehouses.form.city": "Ciudad",
|
|
96
96
|
"wms.backend.config.warehouses.form.code": "Código",
|
|
97
97
|
"wms.backend.config.warehouses.form.country": "País",
|
|
98
|
+
"wms.backend.config.warehouses.form.countryPlaceholder": "Buscar país",
|
|
98
99
|
"wms.backend.config.warehouses.form.name": "Nombre",
|
|
99
100
|
"wms.backend.config.warehouses.form.primary": "Almacén principal",
|
|
100
101
|
"wms.backend.config.warehouses.form.timezone": "Zona horaria",
|
|
102
|
+
"wms.backend.config.warehouses.form.timezonePlaceholder": "Buscar zona horaria",
|
|
101
103
|
"wms.backend.config.warehouses.primary.yes": "Principal",
|
|
102
104
|
"wms.backend.config.warehouses.search": "Buscar almacenes",
|
|
103
105
|
"wms.backend.config.warehouses.title": "Almacenes",
|
|
@@ -95,9 +95,11 @@
|
|
|
95
95
|
"wms.backend.config.warehouses.form.city": "도시",
|
|
96
96
|
"wms.backend.config.warehouses.form.code": "암호",
|
|
97
97
|
"wms.backend.config.warehouses.form.country": "국가",
|
|
98
|
+
"wms.backend.config.warehouses.form.countryPlaceholder": "국가 검색",
|
|
98
99
|
"wms.backend.config.warehouses.form.name": "이름",
|
|
99
100
|
"wms.backend.config.warehouses.form.primary": "1차 창고",
|
|
100
101
|
"wms.backend.config.warehouses.form.timezone": "시간대",
|
|
102
|
+
"wms.backend.config.warehouses.form.timezonePlaceholder": "시간대 검색",
|
|
101
103
|
"wms.backend.config.warehouses.primary.yes": "주요한",
|
|
102
104
|
"wms.backend.config.warehouses.search": "창고 검색",
|
|
103
105
|
"wms.backend.config.warehouses.title": "창고",
|
|
@@ -95,9 +95,11 @@
|
|
|
95
95
|
"wms.backend.config.warehouses.form.city": "Miasto",
|
|
96
96
|
"wms.backend.config.warehouses.form.code": "Kod",
|
|
97
97
|
"wms.backend.config.warehouses.form.country": "Kraj",
|
|
98
|
+
"wms.backend.config.warehouses.form.countryPlaceholder": "Szukaj kraju",
|
|
98
99
|
"wms.backend.config.warehouses.form.name": "Nazwa",
|
|
99
100
|
"wms.backend.config.warehouses.form.primary": "Magazyn główny",
|
|
100
101
|
"wms.backend.config.warehouses.form.timezone": "Strefa czasowa",
|
|
102
|
+
"wms.backend.config.warehouses.form.timezonePlaceholder": "Szukaj strefy czasowej",
|
|
101
103
|
"wms.backend.config.warehouses.primary.yes": "Główny",
|
|
102
104
|
"wms.backend.config.warehouses.search": "Szukaj magazynów",
|
|
103
105
|
"wms.backend.config.warehouses.title": "Magazyny",
|