@open-mercato/core 0.4.6-develop-e321a4e2a1 → 0.4.6-main-24e64eef39
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/AGENTS.md +0 -22
- package/dist/modules/api_docs/frontend/docs/api/page.js +1 -1
- package/dist/modules/api_docs/frontend/docs/api/page.js.map +2 -2
- package/dist/modules/attachments/api/library/[id]/route.js +1 -0
- package/dist/modules/attachments/api/library/[id]/route.js.map +2 -2
- package/dist/modules/attachments/components/AttachmentLibrary.js +1 -1
- package/dist/modules/attachments/components/AttachmentLibrary.js.map +2 -2
- package/dist/modules/attachments/lib/partitionEnv.js +1 -1
- package/dist/modules/attachments/lib/partitionEnv.js.map +2 -2
- package/dist/modules/auth/backend/users/page.js +1 -1
- package/dist/modules/auth/backend/users/page.js.map +2 -2
- package/dist/modules/auth/cli.js +1 -1
- package/dist/modules/auth/cli.js.map +2 -2
- package/dist/modules/auth/commands/users.js +1 -1
- package/dist/modules/auth/commands/users.js.map +2 -2
- package/dist/modules/business_rules/components/utils/formHelpers.js +1 -1
- package/dist/modules/business_rules/components/utils/formHelpers.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/create/page.js +1 -1
- package/dist/modules/catalog/backend/catalog/products/create/page.js.map +2 -2
- package/dist/modules/catalog/commands/products.js +1 -1
- package/dist/modules/catalog/commands/products.js.map +2 -2
- package/dist/modules/catalog/commands/shared.js +1 -1
- package/dist/modules/catalog/commands/shared.js.map +2 -2
- package/dist/modules/catalog/components/PriceKindSettings.js +1 -1
- package/dist/modules/catalog/components/PriceKindSettings.js.map +2 -2
- package/dist/modules/catalog/components/products/productForm.js +1 -1
- package/dist/modules/catalog/components/products/productForm.js.map +2 -2
- package/dist/modules/configs/lib/upgrade-actions.js.map +1 -1
- package/dist/modules/currencies/services/providers/raiffeisen.js +1 -1
- package/dist/modules/currencies/services/providers/raiffeisen.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies/page.js +3 -3
- package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/page.js +3 -3
- package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/people/page.js +3 -3
- package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
- package/dist/modules/customers/cli.js +2 -2
- package/dist/modules/customers/cli.js.map +2 -2
- package/dist/modules/customers/lib/detailHelpers.js +1 -1
- package/dist/modules/customers/lib/detailHelpers.js.map +2 -2
- package/dist/modules/entities/cli.js +1 -1
- package/dist/modules/entities/cli.js.map +2 -2
- package/dist/modules/entities/lib/field-definitions.js +1 -1
- package/dist/modules/entities/lib/field-definitions.js.map +2 -2
- package/dist/modules/entities/lib/install-from-ce.js +1 -1
- package/dist/modules/entities/lib/install-from-ce.js.map +2 -2
- package/dist/modules/inbox_ops/lib/emailParser.js +1 -1
- package/dist/modules/inbox_ops/lib/emailParser.js.map +2 -2
- package/dist/modules/inbox_ops/widgets/notifications/ProposalCreatedRenderer.js +0 -8
- package/dist/modules/inbox_ops/widgets/notifications/ProposalCreatedRenderer.js.map +2 -2
- package/dist/modules/perspectives/services/perspectiveService.js +1 -1
- package/dist/modules/perspectives/services/perspectiveService.js.map +2 -2
- package/dist/modules/planner/backend/planner/availability-rulesets/page.js +3 -3
- package/dist/modules/planner/backend/planner/availability-rulesets/page.js.map +2 -2
- package/dist/modules/query_index/components/QueryIndexesTable.js +7 -7
- package/dist/modules/query_index/components/QueryIndexesTable.js.map +2 -2
- package/dist/modules/query_index/lib/engine.js +1 -1
- package/dist/modules/query_index/lib/engine.js.map +2 -2
- package/dist/modules/resources/backend/resources/resource-types/page.js +2 -2
- package/dist/modules/resources/backend/resources/resource-types/page.js.map +2 -2
- package/dist/modules/resources/backend/resources/resources/page.js +3 -3
- package/dist/modules/resources/backend/resources/resources/page.js.map +2 -2
- package/dist/modules/resources/commands/resources.js +1 -1
- package/dist/modules/resources/commands/resources.js.map +2 -2
- package/dist/modules/resources/lib/seeds.js +1 -1
- package/dist/modules/resources/lib/seeds.js.map +2 -2
- package/dist/modules/sales/api/dashboard/widgets/new-orders/route.js +1 -1
- package/dist/modules/sales/api/dashboard/widgets/new-orders/route.js.map +2 -2
- package/dist/modules/sales/api/dashboard/widgets/new-quotes/route.js +1 -1
- package/dist/modules/sales/api/dashboard/widgets/new-quotes/route.js.map +2 -2
- package/dist/modules/sales/backend/sales/channels/page.js +3 -3
- package/dist/modules/sales/backend/sales/channels/page.js.map +2 -2
- package/dist/modules/sales/commands/documents.js +2 -2
- package/dist/modules/sales/commands/documents.js.map +2 -2
- package/dist/modules/sales/components/channels/offerTableUtils.js +2 -3
- package/dist/modules/sales/components/channels/offerTableUtils.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesDocumentsTable.js +4 -4
- package/dist/modules/sales/components/documents/SalesDocumentsTable.js.map +2 -2
- package/dist/modules/sales/components/documents/ShipmentDialog.js +1 -1
- package/dist/modules/sales/components/documents/ShipmentDialog.js.map +2 -2
- package/dist/modules/sales/lib/shipments/snapshots.js.map +1 -1
- package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js +0 -8
- package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js.map +2 -2
- package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js +0 -8
- package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js.map +2 -2
- package/dist/modules/staff/backend/staff/leave-requests/page.js +3 -3
- package/dist/modules/staff/backend/staff/leave-requests/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/my-leave-requests/page.js +3 -3
- package/dist/modules/staff/backend/staff/my-leave-requests/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/team-members/page.js +3 -3
- package/dist/modules/staff/backend/staff/team-members/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/team-roles/page.js +2 -2
- package/dist/modules/staff/backend/staff/team-roles/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js +3 -3
- package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/teams/page.js +2 -2
- package/dist/modules/staff/backend/staff/teams/page.js.map +2 -2
- package/dist/modules/workflows/backend/instances/page.js +2 -2
- package/dist/modules/workflows/backend/instances/page.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/page.js +1 -1
- package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js +1 -1
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +2 -2
- package/dist/modules/workflows/lib/graph-utils.js +1 -1
- package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
- package/package.json +2 -2
- package/src/modules/api_docs/frontend/docs/api/page.tsx +1 -1
- package/src/modules/attachments/api/library/[id]/route.ts +1 -0
- package/src/modules/attachments/components/AttachmentLibrary.tsx +1 -1
- package/src/modules/attachments/lib/partitionEnv.ts +1 -1
- package/src/modules/auth/backend/users/page.tsx +1 -1
- package/src/modules/auth/cli.ts +1 -1
- package/src/modules/auth/commands/users.ts +1 -1
- package/src/modules/business_rules/components/utils/formHelpers.ts +1 -1
- package/src/modules/catalog/backend/catalog/products/create/page.tsx +1 -1
- package/src/modules/catalog/commands/products.ts +1 -1
- package/src/modules/catalog/commands/shared.ts +1 -1
- package/src/modules/catalog/components/PriceKindSettings.tsx +1 -1
- package/src/modules/catalog/components/products/productForm.ts +1 -1
- package/src/modules/configs/lib/upgrade-actions.ts +1 -1
- package/src/modules/currencies/services/providers/raiffeisen.ts +1 -1
- package/src/modules/customers/backend/customers/companies/page.tsx +3 -3
- package/src/modules/customers/backend/customers/deals/page.tsx +3 -3
- package/src/modules/customers/backend/customers/people/page.tsx +3 -3
- package/src/modules/customers/cli.ts +2 -2
- package/src/modules/customers/lib/detailHelpers.ts +1 -1
- package/src/modules/entities/cli.ts +1 -1
- package/src/modules/entities/lib/field-definitions.ts +1 -1
- package/src/modules/entities/lib/install-from-ce.ts +1 -1
- package/src/modules/inbox_ops/lib/emailParser.ts +1 -1
- package/src/modules/inbox_ops/widgets/notifications/ProposalCreatedRenderer.tsx +0 -8
- package/src/modules/perspectives/services/perspectiveService.ts +1 -1
- package/src/modules/planner/backend/planner/availability-rulesets/page.tsx +4 -3
- package/src/modules/query_index/components/QueryIndexesTable.tsx +7 -7
- package/src/modules/query_index/lib/engine.ts +1 -1
- package/src/modules/resources/backend/resources/resource-types/page.tsx +3 -2
- package/src/modules/resources/backend/resources/resources/page.tsx +3 -3
- package/src/modules/resources/commands/resources.ts +1 -1
- package/src/modules/resources/lib/seeds.ts +1 -1
- package/src/modules/sales/api/dashboard/widgets/new-orders/route.ts +1 -1
- package/src/modules/sales/api/dashboard/widgets/new-quotes/route.ts +1 -1
- package/src/modules/sales/backend/sales/channels/page.tsx +3 -3
- package/src/modules/sales/commands/documents.ts +2 -2
- package/src/modules/sales/components/channels/offerTableUtils.tsx +2 -3
- package/src/modules/sales/components/documents/SalesDocumentsTable.tsx +4 -4
- package/src/modules/sales/components/documents/ShipmentDialog.tsx +1 -1
- package/src/modules/sales/lib/shipments/snapshots.ts +1 -1
- package/src/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.tsx +0 -8
- package/src/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.tsx +0 -8
- package/src/modules/staff/backend/staff/leave-requests/page.tsx +3 -3
- package/src/modules/staff/backend/staff/my-leave-requests/page.tsx +3 -3
- package/src/modules/staff/backend/staff/team-members/page.tsx +3 -3
- package/src/modules/staff/backend/staff/team-roles/page.tsx +2 -2
- package/src/modules/staff/backend/staff/teams/[id]/edit/page.tsx +4 -3
- package/src/modules/staff/backend/staff/teams/page.tsx +3 -2
- package/src/modules/workflows/backend/instances/page.tsx +2 -2
- package/src/modules/workflows/backend/tasks/page.tsx +1 -1
- package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +1 -1
- package/src/modules/workflows/lib/graph-utils.ts +1 -1
- package/dist/modules/integrations/acl.js +0 -8
- package/dist/modules/integrations/acl.js.map +0 -7
- package/dist/modules/integrations/data/enrichers.js +0 -72
- package/dist/modules/integrations/data/enrichers.js.map +0 -7
- package/dist/modules/integrations/data/entities.js +0 -63
- package/dist/modules/integrations/data/entities.js.map +0 -7
- package/dist/modules/integrations/index.js +0 -9
- package/dist/modules/integrations/index.js.map +0 -7
- package/dist/modules/integrations/setup.js +0 -13
- package/dist/modules/integrations/setup.js.map +0 -7
- package/dist/modules/integrations/widgets/injection/external-ids/widget.client.js +0 -69
- package/dist/modules/integrations/widgets/injection/external-ids/widget.client.js.map +0 -7
- package/dist/modules/integrations/widgets/injection-table.js +0 -13
- package/dist/modules/integrations/widgets/injection-table.js.map +0 -7
- package/src/modules/integrations/acl.ts +0 -4
- package/src/modules/integrations/data/enrichers.ts +0 -98
- package/src/modules/integrations/data/entities.ts +0 -46
- package/src/modules/integrations/index.ts +0 -5
- package/src/modules/integrations/setup.ts +0 -11
- package/src/modules/integrations/widgets/injection/external-ids/widget.client.tsx +0 -94
- package/src/modules/integrations/widgets/injection-table.ts +0 -17
|
@@ -41,7 +41,7 @@ export function normalizeOptionSchemaCode(value?: string | null): string {
|
|
|
41
41
|
.trim()
|
|
42
42
|
.replace(/[^a-z0-9\-_]+/g, '-')
|
|
43
43
|
.replace(/-+/g, '-')
|
|
44
|
-
.replace(
|
|
44
|
+
.replace(/^-+|-+$/g, '')
|
|
45
45
|
return slug.slice(0, OPTION_SCHEMA_CODE_MAX_LENGTH)
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -85,7 +85,7 @@ const normalizePriceKind = (input: PriceKindApiPayload | null | undefined): Pric
|
|
|
85
85
|
}
|
|
86
86
|
const toBooleanValue = (value: unknown): boolean | null => (typeof value === 'boolean' ? value : null)
|
|
87
87
|
const resolveDisplayMode = (value: string | null): PriceKind['displayMode'] =>
|
|
88
|
-
value === 'including-tax' ? 'including-tax' : 'excluding-tax'
|
|
88
|
+
value === 'including-tax' ? 'including-tax' : value === 'excluding-tax' ? 'excluding-tax' : 'excluding-tax'
|
|
89
89
|
|
|
90
90
|
const displayMode = resolveDisplayMode(
|
|
91
91
|
toStringValue(raw.displayMode) ?? toStringValue(raw.display_mode),
|
|
@@ -284,7 +284,7 @@ export const buildOptionValuesKey = (
|
|
|
284
284
|
): string => {
|
|
285
285
|
if (!optionValues) return "";
|
|
286
286
|
return Object.keys(optionValues)
|
|
287
|
-
.sort(
|
|
287
|
+
.sort()
|
|
288
288
|
.map((key) => `${key}:${optionValues[key] ?? ""}`)
|
|
289
289
|
.join("|");
|
|
290
290
|
};
|
|
@@ -40,7 +40,7 @@ export function compareVersions(a: string, b: string): number {
|
|
|
40
40
|
export const upgradeActions: UpgradeActionDefinition[] = []
|
|
41
41
|
|
|
42
42
|
export function actionsUpToVersion(version: string): UpgradeActionDefinition[] {
|
|
43
|
-
return upgradeActions
|
|
43
|
+
return upgradeActions
|
|
44
44
|
.filter((action) => compareVersions(action.version, version) <= 0)
|
|
45
45
|
.sort((a, b) => compareVersions(a.version, b.version) || a.id.localeCompare(b.id))
|
|
46
46
|
}
|
|
@@ -67,7 +67,7 @@ export class RaiffeisenPolandProvider implements RateProvider {
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
// Get FIRST time slot (opening rates)
|
|
70
|
-
const times = Object.keys(data.rates).sort(
|
|
70
|
+
const times = Object.keys(data.rates).sort()
|
|
71
71
|
const firstTime = times[0]
|
|
72
72
|
const rates = data.rates[firstTime]
|
|
73
73
|
|
|
@@ -4,7 +4,7 @@ import * as React from 'react'
|
|
|
4
4
|
import Link from 'next/link'
|
|
5
5
|
import { useRouter } from 'next/navigation'
|
|
6
6
|
import { Page, PageBody } from '@open-mercato/ui/backend/Page'
|
|
7
|
-
import { DataTable, type DataTableExportFormat
|
|
7
|
+
import { DataTable, type DataTableExportFormat } from '@open-mercato/ui/backend/DataTable'
|
|
8
8
|
import type { ColumnDef } from '@tanstack/react-table'
|
|
9
9
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
10
10
|
import { RowActions } from '@open-mercato/ui/backend/RowActions'
|
|
@@ -85,7 +85,7 @@ function mapApiItem(item: Record<string, unknown>): CompanyRow | null {
|
|
|
85
85
|
customFields[key] = value
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
-
return
|
|
88
|
+
return {
|
|
89
89
|
id,
|
|
90
90
|
name,
|
|
91
91
|
description,
|
|
@@ -100,7 +100,7 @@ function mapApiItem(item: Record<string, unknown>): CompanyRow | null {
|
|
|
100
100
|
organizationId,
|
|
101
101
|
source,
|
|
102
102
|
...customFields,
|
|
103
|
-
}
|
|
103
|
+
}
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
export default function CustomersCompaniesPage() {
|
|
@@ -6,7 +6,7 @@ import { usePathname, useRouter, useSearchParams } from 'next/navigation'
|
|
|
6
6
|
import { useQueryClient } from '@tanstack/react-query'
|
|
7
7
|
import type { ColumnDef } from '@tanstack/react-table'
|
|
8
8
|
import { Page, PageBody } from '@open-mercato/ui/backend/Page'
|
|
9
|
-
import { DataTable, type DataTableExportFormat
|
|
9
|
+
import { DataTable, type DataTableExportFormat } from '@open-mercato/ui/backend/DataTable'
|
|
10
10
|
import type { FilterDef, FilterValues } from '@open-mercato/ui/backend/FilterBar'
|
|
11
11
|
import { apiCall } from '@open-mercato/ui/backend/utils/apiCall'
|
|
12
12
|
import { buildCrudExportUrl, deleteCrud } from '@open-mercato/ui/backend/utils/crud'
|
|
@@ -1026,7 +1026,7 @@ function mapDeal(item: Record<string, unknown>): DealRow | null {
|
|
|
1026
1026
|
for (const [key, value] of Object.entries(item)) {
|
|
1027
1027
|
if (key.startsWith('cf_')) customFields[key] = value
|
|
1028
1028
|
}
|
|
1029
|
-
return
|
|
1029
|
+
return {
|
|
1030
1030
|
id,
|
|
1031
1031
|
title,
|
|
1032
1032
|
status,
|
|
@@ -1041,5 +1041,5 @@ function mapDeal(item: Record<string, unknown>): DealRow | null {
|
|
|
1041
1041
|
people,
|
|
1042
1042
|
companies,
|
|
1043
1043
|
...customFields,
|
|
1044
|
-
}
|
|
1044
|
+
}
|
|
1045
1045
|
}
|
|
@@ -4,7 +4,7 @@ import * as React from 'react'
|
|
|
4
4
|
import Link from 'next/link'
|
|
5
5
|
import { useRouter } from 'next/navigation'
|
|
6
6
|
import { Page, PageBody } from '@open-mercato/ui/backend/Page'
|
|
7
|
-
import { DataTable, type DataTableExportFormat
|
|
7
|
+
import { DataTable, type DataTableExportFormat } from '@open-mercato/ui/backend/DataTable'
|
|
8
8
|
import type { ColumnDef } from '@tanstack/react-table'
|
|
9
9
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
10
10
|
import { RowActions } from '@open-mercato/ui/backend/RowActions'
|
|
@@ -101,7 +101,7 @@ function mapApiItem(item: Record<string, unknown>): PersonRow | null {
|
|
|
101
101
|
customFields[key] = value
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
|
-
return
|
|
104
|
+
return {
|
|
105
105
|
id,
|
|
106
106
|
name,
|
|
107
107
|
description,
|
|
@@ -116,7 +116,7 @@ function mapApiItem(item: Record<string, unknown>): PersonRow | null {
|
|
|
116
116
|
organizationId,
|
|
117
117
|
source,
|
|
118
118
|
...customFields,
|
|
119
|
-
}
|
|
119
|
+
}
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
export default function CustomersPeoplePage() {
|
|
@@ -995,7 +995,7 @@ function slugifyValue(value: string): string {
|
|
|
995
995
|
return value
|
|
996
996
|
.toLowerCase()
|
|
997
997
|
.replace(/[^a-z0-9]+/g, '-')
|
|
998
|
-
.replace(
|
|
998
|
+
.replace(/^-+|-+$/g, '')
|
|
999
999
|
}
|
|
1000
1000
|
|
|
1001
1001
|
function buildPhone(index: number): string {
|
|
@@ -1171,7 +1171,7 @@ function resolveCurrencyCodes(): string[] {
|
|
|
1171
1171
|
console.warn('[customers.cli] Intl.supportedValuesOf("currency") unavailable; seeding minimal currency list.')
|
|
1172
1172
|
return normalizedPriority
|
|
1173
1173
|
}
|
|
1174
|
-
uniqueSupported.sort(
|
|
1174
|
+
uniqueSupported.sort()
|
|
1175
1175
|
return [...normalizedPriority, ...uniqueSupported]
|
|
1176
1176
|
}
|
|
1177
1177
|
|
|
@@ -30,7 +30,7 @@ export function isValidSocialUrl(
|
|
|
30
30
|
if (!pathRequired) {
|
|
31
31
|
return true
|
|
32
32
|
}
|
|
33
|
-
const normalizedPath = parsed.pathname.replace(/\/+/g, '/').replace(
|
|
33
|
+
const normalizedPath = parsed.pathname.replace(/\/+/g, '/').replace(/^\/|\/$/g, '')
|
|
34
34
|
return normalizedPath.length > 0
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -302,7 +302,7 @@ const seedEncryptionMaps: ModuleCli = {
|
|
|
302
302
|
}
|
|
303
303
|
|
|
304
304
|
function normalizeKeyInput(value: string): string {
|
|
305
|
-
return value.trim().replace(
|
|
305
|
+
return value.trim().replace(/^['"]|['"]$/g, '')
|
|
306
306
|
}
|
|
307
307
|
|
|
308
308
|
class DerivedKeyKmsService implements KmsService {
|
|
@@ -48,7 +48,7 @@ function normalizeValue(value: unknown): unknown {
|
|
|
48
48
|
if (Array.isArray(value)) return value.map((item) => normalizeValue(item))
|
|
49
49
|
if (value && typeof value === 'object') {
|
|
50
50
|
return Object.keys(value as Record<string, unknown>)
|
|
51
|
-
.sort(
|
|
51
|
+
.sort()
|
|
52
52
|
.reduce<Record<string, unknown>>((acc, key) => {
|
|
53
53
|
acc[key] = normalizeValue((value as Record<string, unknown>)[key])
|
|
54
54
|
return acc
|
|
@@ -58,7 +58,7 @@ function normalizeValue(value: unknown): unknown {
|
|
|
58
58
|
if (Array.isArray(value)) return value.map((item) => normalizeValue(item))
|
|
59
59
|
if (value && typeof value === 'object') {
|
|
60
60
|
return Object.keys(value as Record<string, unknown>)
|
|
61
|
-
.sort(
|
|
61
|
+
.sort()
|
|
62
62
|
.reduce<Record<string, unknown>>((acc, key) => {
|
|
63
63
|
acc[key] = normalizeValue((value as Record<string, unknown>)[key])
|
|
64
64
|
return acc
|
|
@@ -106,7 +106,7 @@ function parseAddressField(value: string | undefined | null): { name?: string; e
|
|
|
106
106
|
if (!value) return { email: '' }
|
|
107
107
|
const match = value.match(/^(.+?)\s*<([^>]+)>$/)
|
|
108
108
|
if (match) {
|
|
109
|
-
return { name: match[1].trim().replace(
|
|
109
|
+
return { name: match[1].trim().replace(/^["']|["']$/g, ''), email: match[2].trim().toLowerCase() }
|
|
110
110
|
}
|
|
111
111
|
return { email: value.trim().toLowerCase() }
|
|
112
112
|
}
|
|
@@ -43,14 +43,6 @@ export function ProposalCreatedRenderer({
|
|
|
43
43
|
isUnread && 'bg-amber-50/50 dark:bg-amber-950/20',
|
|
44
44
|
)}
|
|
45
45
|
onClick={handleReview}
|
|
46
|
-
onKeyDown={(e) => {
|
|
47
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
48
|
-
e.preventDefault()
|
|
49
|
-
handleReview()
|
|
50
|
-
}
|
|
51
|
-
}}
|
|
52
|
-
role="button"
|
|
53
|
-
tabIndex={0}
|
|
54
46
|
>
|
|
55
47
|
{isUnread && (
|
|
56
48
|
<div className="absolute left-1.5 top-1/2 -translate-y-1/2 h-2 w-2 rounded-full bg-primary" />
|
|
@@ -52,7 +52,7 @@ const scopeKey = (scope: PerspectiveScope) =>
|
|
|
52
52
|
`${scope.userId}:${scope.tenantId ?? 'null'}:${scope.organizationId ?? 'null'}`
|
|
53
53
|
|
|
54
54
|
const userCacheKey = (scope: PerspectiveScope, tableId: string, roleIds: string[]) =>
|
|
55
|
-
`perspectives:user-state:${scopeKey(scope)}:${tableId}:${roleIds.sort(
|
|
55
|
+
`perspectives:user-state:${scopeKey(scope)}:${tableId}:${roleIds.sort().join(',')}`
|
|
56
56
|
|
|
57
57
|
const userTag = (scope: PerspectiveScope, tableId?: string) =>
|
|
58
58
|
tableId
|
|
@@ -8,7 +8,7 @@ import type { PluggableList } from 'unified'
|
|
|
8
8
|
import ReactMarkdown from 'react-markdown'
|
|
9
9
|
import remarkGfm from 'remark-gfm'
|
|
10
10
|
import { Page, PageBody } from '@open-mercato/ui/backend/Page'
|
|
11
|
-
import { DataTable
|
|
11
|
+
import { DataTable } from '@open-mercato/ui/backend/DataTable'
|
|
12
12
|
import { RowActions } from '@open-mercato/ui/backend/RowActions'
|
|
13
13
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
14
14
|
import { readApiResultOrThrow } from '@open-mercato/ui/backend/utils/apiCall'
|
|
@@ -233,12 +233,13 @@ function mapRuleSet(item: Record<string, unknown>): RuleSetRow {
|
|
|
233
233
|
: typeof item.updated_at === 'string'
|
|
234
234
|
? item.updated_at
|
|
235
235
|
: null
|
|
236
|
-
return
|
|
236
|
+
return {
|
|
237
237
|
id,
|
|
238
238
|
name,
|
|
239
239
|
description,
|
|
240
240
|
timezone,
|
|
241
241
|
updatedAt,
|
|
242
|
-
}
|
|
242
|
+
}
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
+
|
|
@@ -376,17 +376,17 @@ export default function QueryIndexesTable() {
|
|
|
376
376
|
perspective={{ tableId: 'query_index.status.list' }}
|
|
377
377
|
rowActions={(row) => {
|
|
378
378
|
const items: Array<{ id: string; label: string; onSelect: () => void; destructive?: boolean }> = [
|
|
379
|
-
{ id: 'reindex', label: t('query_index.table.actions.reindex'), onSelect: () =>
|
|
379
|
+
{ id: 'reindex', label: t('query_index.table.actions.reindex'), onSelect: () => trigger('reindex', row.entityId) },
|
|
380
380
|
{
|
|
381
381
|
id: 'reindex-force',
|
|
382
382
|
label: t('query_index.table.actions.reindexForce'),
|
|
383
|
-
onSelect: () =>
|
|
383
|
+
onSelect: () => trigger('reindex', row.entityId, { force: true }),
|
|
384
384
|
},
|
|
385
385
|
{
|
|
386
386
|
id: 'purge',
|
|
387
387
|
label: t('query_index.table.actions.purge'),
|
|
388
388
|
destructive: true,
|
|
389
|
-
onSelect: () =>
|
|
389
|
+
onSelect: () => trigger('purge', row.entityId),
|
|
390
390
|
},
|
|
391
391
|
]
|
|
392
392
|
|
|
@@ -395,13 +395,13 @@ export default function QueryIndexesTable() {
|
|
|
395
395
|
{
|
|
396
396
|
id: 'vector-reindex',
|
|
397
397
|
label: t('query_index.table.actions.vectorReindex'),
|
|
398
|
-
onSelect: () =>
|
|
398
|
+
onSelect: () => triggerVector('reindex', row.entityId),
|
|
399
399
|
},
|
|
400
400
|
{
|
|
401
401
|
id: 'vector-purge',
|
|
402
402
|
label: t('query_index.table.actions.vectorPurge'),
|
|
403
403
|
destructive: true,
|
|
404
|
-
onSelect: () =>
|
|
404
|
+
onSelect: () => triggerVector('purge', row.entityId),
|
|
405
405
|
},
|
|
406
406
|
)
|
|
407
407
|
}
|
|
@@ -411,13 +411,13 @@ export default function QueryIndexesTable() {
|
|
|
411
411
|
{
|
|
412
412
|
id: 'fulltext-reindex',
|
|
413
413
|
label: t('query_index.table.actions.fulltextReindex'),
|
|
414
|
-
onSelect: () =>
|
|
414
|
+
onSelect: () => triggerFulltext('reindex', row.entityId),
|
|
415
415
|
},
|
|
416
416
|
{
|
|
417
417
|
id: 'fulltext-purge',
|
|
418
418
|
label: t('query_index.table.actions.fulltextPurge'),
|
|
419
419
|
destructive: true,
|
|
420
|
-
onSelect: () =>
|
|
420
|
+
onSelect: () => triggerFulltext('purge', row.entityId),
|
|
421
421
|
},
|
|
422
422
|
)
|
|
423
423
|
}
|
|
@@ -1350,7 +1350,7 @@ export class HybridQueryEngine implements QueryEngine {
|
|
|
1350
1350
|
}
|
|
1351
1351
|
|
|
1352
1352
|
private customFieldKeysCacheKey(entityIds: string[], tenantId: string | null): string {
|
|
1353
|
-
const sorted = entityIds.slice().sort(
|
|
1353
|
+
const sorted = entityIds.slice().sort().join(',')
|
|
1354
1354
|
return `${tenantId ?? '__none__'}|${sorted}`
|
|
1355
1355
|
}
|
|
1356
1356
|
|
|
@@ -8,7 +8,7 @@ import type { PluggableList } from 'unified'
|
|
|
8
8
|
import ReactMarkdown from 'react-markdown'
|
|
9
9
|
import remarkGfm from 'remark-gfm'
|
|
10
10
|
import { Page, PageBody } from '@open-mercato/ui/backend/Page'
|
|
11
|
-
import { DataTable
|
|
11
|
+
import { DataTable } from '@open-mercato/ui/backend/DataTable'
|
|
12
12
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
13
13
|
import { RowActions } from '@open-mercato/ui/backend/RowActions'
|
|
14
14
|
import { flash } from '@open-mercato/ui/backend/FlashMessages'
|
|
@@ -317,6 +317,7 @@ function mapApiResourceType(item: Record<string, unknown>): ResourceTypeRow {
|
|
|
317
317
|
: typeof item.resource_count === 'number'
|
|
318
318
|
? item.resource_count
|
|
319
319
|
: 0
|
|
320
|
-
return
|
|
320
|
+
return { id, name, description, appearanceIcon, appearanceColor, updatedAt, resourceCount }
|
|
321
321
|
}
|
|
322
322
|
|
|
323
|
+
|
|
@@ -5,7 +5,7 @@ import Link from 'next/link'
|
|
|
5
5
|
import { usePathname, useRouter, useSearchParams } from 'next/navigation'
|
|
6
6
|
import type { ColumnDef } from '@tanstack/react-table'
|
|
7
7
|
import { Page, PageBody } from '@open-mercato/ui/backend/Page'
|
|
8
|
-
import { DataTable
|
|
8
|
+
import { DataTable } from '@open-mercato/ui/backend/DataTable'
|
|
9
9
|
import { RowActions } from '@open-mercato/ui/backend/RowActions'
|
|
10
10
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
11
11
|
import { BooleanIcon } from '@open-mercato/ui/backend/ValueIcons'
|
|
@@ -534,7 +534,7 @@ function mapApiResource(item: Record<string, unknown>): ResourceRow {
|
|
|
534
534
|
? item.appearance_color
|
|
535
535
|
: null
|
|
536
536
|
const tags = Array.isArray(item.tags) ? item.tags as TagOption[] : []
|
|
537
|
-
return
|
|
537
|
+
return {
|
|
538
538
|
id,
|
|
539
539
|
name,
|
|
540
540
|
resourceTypeId,
|
|
@@ -543,5 +543,5 @@ function mapApiResource(item: Record<string, unknown>): ResourceRow {
|
|
|
543
543
|
isActive,
|
|
544
544
|
appearanceIcon,
|
|
545
545
|
appearanceColor,
|
|
546
|
-
}
|
|
546
|
+
}
|
|
547
547
|
}
|
|
@@ -134,7 +134,7 @@ async function loadResourceSnapshot(em: EntityManager, id: string): Promise<Reso
|
|
|
134
134
|
const tags = assignments
|
|
135
135
|
.map((assignment) => (assignment.tag as ResourcesResourceTag | undefined)?.id ?? null)
|
|
136
136
|
.filter((tagId): tagId is string => typeof tagId === 'string' && tagId.length > 0)
|
|
137
|
-
.sort(
|
|
137
|
+
.sort()
|
|
138
138
|
return {
|
|
139
139
|
id: resource.id,
|
|
140
140
|
tenantId: resource.tenantId,
|
|
@@ -317,7 +317,7 @@ function normalizeAssetTag(value: string): string {
|
|
|
317
317
|
const trimmed = value.trim()
|
|
318
318
|
if (!trimmed) return 'RESOURCE'
|
|
319
319
|
const upper = trimmed.toUpperCase()
|
|
320
|
-
const normalized = upper.replace(/[^A-Z0-9]+/g, '-').replace(
|
|
320
|
+
const normalized = upper.replace(/[^A-Z0-9]+/g, '-').replace(/^-+|-+$/g, '')
|
|
321
321
|
return normalized || 'RESOURCE'
|
|
322
322
|
}
|
|
323
323
|
|
|
@@ -63,7 +63,7 @@ type NewOrdersWidgetResponse = {
|
|
|
63
63
|
function normalizeOrganizationIds(organizationIds: string[] | null): string[] | null {
|
|
64
64
|
if (organizationIds === null) return null
|
|
65
65
|
const set = new Set(organizationIds)
|
|
66
|
-
return Array.from(set).sort(
|
|
66
|
+
return Array.from(set).sort()
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
function buildCacheKey(params: {
|
|
@@ -64,7 +64,7 @@ type NewQuotesWidgetResponse = {
|
|
|
64
64
|
function normalizeOrganizationIds(organizationIds: string[] | null): string[] | null {
|
|
65
65
|
if (organizationIds === null) return null
|
|
66
66
|
const set = new Set(organizationIds)
|
|
67
|
-
return Array.from(set).sort(
|
|
67
|
+
return Array.from(set).sort()
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
function buildCacheKey(params: {
|
|
@@ -5,7 +5,7 @@ import { useRouter } from 'next/navigation'
|
|
|
5
5
|
import Link from 'next/link'
|
|
6
6
|
import type { ColumnDef, SortingState } from '@tanstack/react-table'
|
|
7
7
|
import { Page, PageBody } from '@open-mercato/ui/backend/Page'
|
|
8
|
-
import { DataTable
|
|
8
|
+
import { DataTable } from '@open-mercato/ui/backend/DataTable'
|
|
9
9
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
10
10
|
import { RowActions } from '@open-mercato/ui/backend/RowActions'
|
|
11
11
|
import { BooleanIcon } from '@open-mercato/ui/backend/ValueIcons'
|
|
@@ -217,7 +217,7 @@ export default function SalesChannelsPage() {
|
|
|
217
217
|
|
|
218
218
|
function mapApiChannel(item: Record<string, unknown>): ChannelRow {
|
|
219
219
|
const id = typeof item.id === 'string' ? item.id : ''
|
|
220
|
-
return
|
|
220
|
+
return {
|
|
221
221
|
id,
|
|
222
222
|
name: typeof item.name === 'string' ? item.name : id,
|
|
223
223
|
code: typeof item.code === 'string' && item.code.length ? item.code : null,
|
|
@@ -233,5 +233,5 @@ function mapApiChannel(item: Record<string, unknown>): ChannelRow {
|
|
|
233
233
|
: typeof item.updated_at === 'string'
|
|
234
234
|
? item.updated_at
|
|
235
235
|
: null,
|
|
236
|
-
}
|
|
236
|
+
}
|
|
237
237
|
}
|
|
@@ -3216,8 +3216,8 @@ function buildTagChange(
|
|
|
3216
3216
|
): { from: string[]; to: string[] } | null {
|
|
3217
3217
|
const beforeIds = normalizeTagIds(beforeTags?.map((tag) => tag.tagId));
|
|
3218
3218
|
const afterIds = normalizeTagIds(afterTags?.map((tag) => tag.tagId));
|
|
3219
|
-
beforeIds.sort(
|
|
3220
|
-
afterIds.sort(
|
|
3219
|
+
beforeIds.sort();
|
|
3220
|
+
afterIds.sort();
|
|
3221
3221
|
if (
|
|
3222
3222
|
beforeIds.length === afterIds.length &&
|
|
3223
3223
|
beforeIds.every((id, index) => id === afterIds[index])
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as React from 'react'
|
|
2
|
-
import { withDataTableNamespaces } from '@open-mercato/ui/backend/DataTable'
|
|
3
2
|
|
|
4
3
|
type Translator = (key: string, fallback: string, vars?: Record<string, unknown>) => string
|
|
5
4
|
|
|
@@ -46,7 +45,7 @@ export function mapOfferRow(item: Record<string, unknown>): OfferRow {
|
|
|
46
45
|
: item.product_channel_price && typeof item.product_channel_price === 'object'
|
|
47
46
|
? item.product_channel_price as Record<string, unknown>
|
|
48
47
|
: null
|
|
49
|
-
return
|
|
48
|
+
return {
|
|
50
49
|
id: typeof item.id === 'string' ? item.id : '',
|
|
51
50
|
channelId: typeof item.channelId === 'string'
|
|
52
51
|
? item.channelId
|
|
@@ -81,7 +80,7 @@ export function mapOfferRow(item: Record<string, unknown>): OfferRow {
|
|
|
81
80
|
: typeof item.updated_at === 'string'
|
|
82
81
|
? item.updated_at
|
|
83
82
|
: null,
|
|
84
|
-
}
|
|
83
|
+
}
|
|
85
84
|
}
|
|
86
85
|
|
|
87
86
|
export function renderOfferPriceSummary(
|
|
@@ -5,7 +5,7 @@ import Link from 'next/link'
|
|
|
5
5
|
import { useRouter } from 'next/navigation'
|
|
6
6
|
import type { ColumnDef, SortingState } from '@tanstack/react-table'
|
|
7
7
|
import { Page, PageBody } from '@open-mercato/ui/backend/Page'
|
|
8
|
-
import { DataTable, type DataTableExportFormat
|
|
8
|
+
import { DataTable, type DataTableExportFormat } from '@open-mercato/ui/backend/DataTable'
|
|
9
9
|
import type { FilterDef, FilterValues } from '@open-mercato/ui/backend/FilterBar'
|
|
10
10
|
import { RowActions } from '@open-mercato/ui/backend/RowActions'
|
|
11
11
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
@@ -232,7 +232,7 @@ export function SalesDocumentsTable({ kind }: { kind: SalesDocumentKind }) {
|
|
|
232
232
|
? item.primary_email.trim()
|
|
233
233
|
: null
|
|
234
234
|
const label = email ? `${name} (${email})` : name
|
|
235
|
-
return { value: id, label }
|
|
235
|
+
return { value: id, label: kind === 'company' ? label : label }
|
|
236
236
|
}
|
|
237
237
|
const options = [...peopleItems.map((i) => parseOption(i, 'person')), ...companyItems.map((i) => parseOption(i, 'company'))]
|
|
238
238
|
.filter((opt): opt is FilterOption => !!opt)
|
|
@@ -449,7 +449,7 @@ export function SalesDocumentsTable({ kind }: { kind: SalesDocumentKind }) {
|
|
|
449
449
|
const validUntil = doc.validUntil ?? null
|
|
450
450
|
const createdAt = doc.createdAt ?? null
|
|
451
451
|
const date = placedAt ?? validUntil ?? createdAt ?? null
|
|
452
|
-
return
|
|
452
|
+
return {
|
|
453
453
|
id,
|
|
454
454
|
number,
|
|
455
455
|
status: doc.status ?? null,
|
|
@@ -461,7 +461,7 @@ export function SalesDocumentsTable({ kind }: { kind: SalesDocumentKind }) {
|
|
|
461
461
|
totalGross,
|
|
462
462
|
currency: doc.currencyCode ?? null,
|
|
463
463
|
date,
|
|
464
|
-
}
|
|
464
|
+
}
|
|
465
465
|
},
|
|
466
466
|
[kind]
|
|
467
467
|
)
|
|
@@ -171,7 +171,7 @@ const snapshotKey = (snapshot?: NormalizedAddressSnapshot | null): string | null
|
|
|
171
171
|
if (!snapshot || typeof snapshot !== 'object') return null
|
|
172
172
|
const normalized: Record<string, unknown> = {}
|
|
173
173
|
Object.keys(snapshot)
|
|
174
|
-
.sort(
|
|
174
|
+
.sort()
|
|
175
175
|
.forEach((key) => {
|
|
176
176
|
normalized[key] = snapshot[key]
|
|
177
177
|
})
|
|
@@ -26,7 +26,7 @@ const extractOrderLineId = (entry: SalesShipmentItem): string | null => {
|
|
|
26
26
|
return typeof raw === 'string' ? raw : null
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
const ensureLineMap = async (
|
|
29
|
+
const ensureLineMap = async (
|
|
30
30
|
em: EntityManager,
|
|
31
31
|
items: SalesShipmentItem[],
|
|
32
32
|
lineMap?: Map<string, SalesOrderLine>
|
|
@@ -63,14 +63,6 @@ export function SalesOrderCreatedRenderer({
|
|
|
63
63
|
isUnread && 'bg-blue-50/50 dark:bg-blue-950/20'
|
|
64
64
|
)}
|
|
65
65
|
onClick={handleView}
|
|
66
|
-
onKeyDown={(e) => {
|
|
67
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
68
|
-
e.preventDefault()
|
|
69
|
-
handleView()
|
|
70
|
-
}
|
|
71
|
-
}}
|
|
72
|
-
role="button"
|
|
73
|
-
tabIndex={0}
|
|
74
66
|
>
|
|
75
67
|
{isUnread && (
|
|
76
68
|
<div className="absolute left-1.5 top-1/2 -translate-y-1/2 h-2 w-2 rounded-full bg-primary" />
|
|
@@ -63,14 +63,6 @@ export function SalesQuoteCreatedRenderer({
|
|
|
63
63
|
isUnread && 'bg-amber-50/50 dark:bg-amber-950/20'
|
|
64
64
|
)}
|
|
65
65
|
onClick={handleView}
|
|
66
|
-
onKeyDown={(e) => {
|
|
67
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
68
|
-
e.preventDefault()
|
|
69
|
-
handleView()
|
|
70
|
-
}
|
|
71
|
-
}}
|
|
72
|
-
role="button"
|
|
73
|
-
tabIndex={0}
|
|
74
66
|
>
|
|
75
67
|
{isUnread && (
|
|
76
68
|
<div className="absolute left-1.5 top-1/2 -translate-y-1/2 h-2 w-2 rounded-full bg-primary" />
|
|
@@ -5,7 +5,7 @@ import Link from 'next/link'
|
|
|
5
5
|
import { useRouter } from 'next/navigation'
|
|
6
6
|
import type { ColumnDef, SortingState } from '@tanstack/react-table'
|
|
7
7
|
import { Page, PageBody } from '@open-mercato/ui/backend/Page'
|
|
8
|
-
import { DataTable
|
|
8
|
+
import { DataTable } from '@open-mercato/ui/backend/DataTable'
|
|
9
9
|
import { Badge } from '@open-mercato/ui/primitives/badge'
|
|
10
10
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
11
11
|
import { readApiResultOrThrow } from '@open-mercato/ui/backend/utils/apiCall'
|
|
@@ -209,7 +209,7 @@ function mapLeaveRequest(item: Record<string, unknown>): LeaveRequestRow {
|
|
|
209
209
|
: typeof item.updated_at === 'string'
|
|
210
210
|
? item.updated_at
|
|
211
211
|
: null
|
|
212
|
-
return
|
|
212
|
+
return {
|
|
213
213
|
id,
|
|
214
214
|
memberName,
|
|
215
215
|
startDate,
|
|
@@ -217,7 +217,7 @@ function mapLeaveRequest(item: Record<string, unknown>): LeaveRequestRow {
|
|
|
217
217
|
status,
|
|
218
218
|
reason,
|
|
219
219
|
updatedAt,
|
|
220
|
-
}
|
|
220
|
+
}
|
|
221
221
|
}
|
|
222
222
|
|
|
223
223
|
function formatDateRange(start?: string | null, end?: string | null): string {
|
|
@@ -5,7 +5,7 @@ import Link from 'next/link'
|
|
|
5
5
|
import { useRouter } from 'next/navigation'
|
|
6
6
|
import type { ColumnDef, SortingState } from '@tanstack/react-table'
|
|
7
7
|
import { Page, PageBody } from '@open-mercato/ui/backend/Page'
|
|
8
|
-
import { DataTable
|
|
8
|
+
import { DataTable } from '@open-mercato/ui/backend/DataTable'
|
|
9
9
|
import { Badge } from '@open-mercato/ui/primitives/badge'
|
|
10
10
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
11
11
|
import { readApiResultOrThrow } from '@open-mercato/ui/backend/utils/apiCall'
|
|
@@ -215,14 +215,14 @@ function mapLeaveRequest(item: Record<string, unknown>): LeaveRequestRow {
|
|
|
215
215
|
: typeof item.updated_at === 'string'
|
|
216
216
|
? item.updated_at
|
|
217
217
|
: null
|
|
218
|
-
return
|
|
218
|
+
return {
|
|
219
219
|
id,
|
|
220
220
|
startDate,
|
|
221
221
|
endDate,
|
|
222
222
|
status,
|
|
223
223
|
reason,
|
|
224
224
|
updatedAt,
|
|
225
|
-
}
|
|
225
|
+
}
|
|
226
226
|
}
|
|
227
227
|
|
|
228
228
|
function formatDateRange(start?: string | null, end?: string | null): string {
|
|
@@ -5,7 +5,7 @@ import Link from 'next/link'
|
|
|
5
5
|
import { usePathname, useRouter, useSearchParams } from 'next/navigation'
|
|
6
6
|
import type { ColumnDef, SortingFn, SortingState } from '@tanstack/react-table'
|
|
7
7
|
import { Page, PageBody } from '@open-mercato/ui/backend/Page'
|
|
8
|
-
import { DataTable
|
|
8
|
+
import { DataTable } from '@open-mercato/ui/backend/DataTable'
|
|
9
9
|
import { RowActions } from '@open-mercato/ui/backend/RowActions'
|
|
10
10
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
11
11
|
import { BooleanIcon } from '@open-mercato/ui/backend/ValueIcons'
|
|
@@ -505,7 +505,7 @@ function mapApiTeamMember(item: Record<string, unknown>): TeamMemberApiRow {
|
|
|
505
505
|
: null
|
|
506
506
|
const team = item.team && typeof item.team === 'object' ? item.team as { name?: unknown } : null
|
|
507
507
|
const teamName = typeof team?.name === 'string' ? team.name : null
|
|
508
|
-
return
|
|
508
|
+
return {
|
|
509
509
|
id,
|
|
510
510
|
displayName,
|
|
511
511
|
description,
|
|
@@ -517,7 +517,7 @@ function mapApiTeamMember(item: Record<string, unknown>): TeamMemberApiRow {
|
|
|
517
517
|
updatedAt,
|
|
518
518
|
teamId,
|
|
519
519
|
teamName,
|
|
520
|
-
}
|
|
520
|
+
}
|
|
521
521
|
}
|
|
522
522
|
|
|
523
523
|
function compareGroupedRows(
|