@vendure/dashboard 3.7.2-master-202607180305 → 3.7.2-master-202607220305

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 (46) hide show
  1. package/dist/bundle/chunks/{2SSKDMRQ-DlWAmBpQ.js → 2SSKDMRQ-BYUZEDFM.js} +2 -2
  2. package/dist/bundle/chunks/{AP7HFJJL-CcAoLsul.js → AP7HFJJL-C9ElHHxz.js} +1 -1
  3. package/dist/bundle/chunks/{WDYDFRGG-Cvm1r2UU.js → WDYDFRGG-Bfnowo_y.js} +2 -2
  4. package/dist/bundle/chunks/{locale-Dhjo0zFV.js → locale-M7cbtrsA.js} +1 -1
  5. package/dist/bundle/chunks/{main-BHusMbtB.js → main-B51h5LxL.js} +12 -4
  6. package/dist/bundle/chunks/{use-job-queue-polling-DKUd4UP0.js → use-job-queue-polling-Dhe9AG6q.js} +28 -10
  7. package/dist/bundle/lib.js +2 -2
  8. package/dist/bundle/main.js +2 -2
  9. package/package.json +3 -3
  10. package/src/app/routes/_authenticated/_customers/components/customer-history/use-customer-history.ts +7 -3
  11. package/src/app/routes/_authenticated/_customers/customers_.$id.tsx +5 -1
  12. package/src/lib/components/data-input/configurable-operation-list-input.tsx +9 -1
  13. package/src/lib/framework/form-engine/form-control-adapter.tsx +19 -19
  14. package/src/lib/framework/form-engine/list-input-selection.ts +26 -0
  15. /package/dist/vite/.vendure-dashboard-temp/compiler/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/dev-config.js +0 -0
  16. /package/dist/vite/.vendure-dashboard-temp/compiler/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/package.json +0 -0
  17. /package/dist/vite/.vendure-dashboard-temp/compiler/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/test-plugins/nav-modifier-plugin/nav-modifier-plugin.js +0 -0
  18. /package/dist/vite/.vendure-dashboard-temp/compiler/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/test-plugins/reviews/api/api-extensions.js +0 -0
  19. /package/dist/vite/.vendure-dashboard-temp/compiler/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/test-plugins/reviews/api/product-entity.resolver.js +0 -0
  20. /package/dist/vite/.vendure-dashboard-temp/compiler/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/test-plugins/reviews/api/product-review-admin.resolver.js +0 -0
  21. /package/dist/vite/.vendure-dashboard-temp/compiler/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/test-plugins/reviews/api/product-review-entity.resolver.js +0 -0
  22. /package/dist/vite/.vendure-dashboard-temp/compiler/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/test-plugins/reviews/api/product-review-shop.resolver.js +0 -0
  23. /package/dist/vite/.vendure-dashboard-temp/compiler/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/test-plugins/reviews/entities/product-review-translation.entity.js +0 -0
  24. /package/dist/vite/.vendure-dashboard-temp/compiler/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/test-plugins/reviews/entities/product-review.entity.js +0 -0
  25. /package/dist/vite/.vendure-dashboard-temp/compiler/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/test-plugins/reviews/generated-admin-types.js +0 -0
  26. /package/dist/vite/.vendure-dashboard-temp/compiler/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/test-plugins/reviews/generated-shop-types.js +0 -0
  27. /package/dist/vite/.vendure-dashboard-temp/compiler/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/test-plugins/reviews/reviews-plugin.js +0 -0
  28. /package/dist/vite/.vendure-dashboard-temp/compiler/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/test-plugins/reviews/types.js +0 -0
  29. /package/dist/vite/.vendure-dashboard-temp/compiler/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/dev-config.js +0 -0
  30. /package/dist/vite/.vendure-dashboard-temp/compiler/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/package.json +0 -0
  31. /package/dist/vite/.vendure-dashboard-temp/compiler/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/test-plugins/nav-modifier-plugin/nav-modifier-plugin.js +0 -0
  32. /package/dist/vite/.vendure-dashboard-temp/compiler/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/test-plugins/reviews/api/api-extensions.js +0 -0
  33. /package/dist/vite/.vendure-dashboard-temp/compiler/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/test-plugins/reviews/api/product-entity.resolver.js +0 -0
  34. /package/dist/vite/.vendure-dashboard-temp/compiler/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/test-plugins/reviews/api/product-review-admin.resolver.js +0 -0
  35. /package/dist/vite/.vendure-dashboard-temp/compiler/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/test-plugins/reviews/api/product-review-entity.resolver.js +0 -0
  36. /package/dist/vite/.vendure-dashboard-temp/compiler/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/test-plugins/reviews/api/product-review-shop.resolver.js +0 -0
  37. /package/dist/vite/.vendure-dashboard-temp/compiler/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/test-plugins/reviews/entities/product-review-translation.entity.js +0 -0
  38. /package/dist/vite/.vendure-dashboard-temp/compiler/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/test-plugins/reviews/entities/product-review.entity.js +0 -0
  39. /package/dist/vite/.vendure-dashboard-temp/compiler/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/test-plugins/reviews/generated-admin-types.js +0 -0
  40. /package/dist/vite/.vendure-dashboard-temp/compiler/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/test-plugins/reviews/generated-shop-types.js +0 -0
  41. /package/dist/vite/.vendure-dashboard-temp/compiler/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/test-plugins/reviews/reviews-plugin.js +0 -0
  42. /package/dist/vite/.vendure-dashboard-temp/compiler/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/test-plugins/reviews/types.js +0 -0
  43. /package/dist/vite/.vendure-dashboard-temp/gql-tada/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/schema.graphql +0 -0
  44. /package/dist/vite/.vendure-dashboard-temp/gql-tada/{4053-d06e1a0e-f4b3-4b2f-a8bc-71c69c8b79a6 → 3166-bc154fe9-9702-405a-90f5-1d05d7b6883a}/tsconfig.json +0 -0
  45. /package/dist/vite/.vendure-dashboard-temp/gql-tada/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/schema.graphql +0 -0
  46. /package/dist/vite/.vendure-dashboard-temp/gql-tada/{4985-6bda4df3-a17a-46c9-9338-842214222507 → 4123-4e97be61-5f56-4e62-9209-73d66356817b}/tsconfig.json +0 -0
@@ -1,5 +1,5 @@
1
- import { c as createLocalStorage, T as THEME_PREFERENCE, P as PiPProvider, a as ThemeContext, b as ParentPanel, C as ContentView, Q as QueryDevtoolsContext } from "./AP7HFJJL-CcAoLsul.js";
2
- import { g as getPreferredColorScheme, c as createMemo, a as createComponent } from "./main-BHusMbtB.js";
1
+ import { c as createLocalStorage, T as THEME_PREFERENCE, P as PiPProvider, a as ThemeContext, b as ParentPanel, C as ContentView, Q as QueryDevtoolsContext } from "./AP7HFJJL-C9ElHHxz.js";
2
+ import { g as getPreferredColorScheme, c as createMemo, a as createComponent } from "./main-B51h5LxL.js";
3
3
  var DevtoolsPanelComponent = (props) => {
4
4
  const [localStore, setLocalStore] = createLocalStorage({
5
5
  prefix: "TanstackQueryDevtools"
@@ -1,4 +1,4 @@
1
- import { b as createContext, d as createSignal, o as onMount, e as createEffect, c as createMemo, a as createComponent, P as Portal, m as memo, S as Show, t as template, i as insert, f as createRenderEffect, h as className, j as clearDelegatedEvents, k as delegateEvents, u as useContext, l as onCleanup, s as sortFns, n as mutationSortFns, p as on, q as setAttribute, r as getSidedProp, v as use, w as convertRemToPixels, x as createUniqueId, y as batch, z as getQueryStatusLabel, A as getMutationStatusColor, B as getQueryStatusColor, C as getQueryStatusColorByLabel, D as displayValue, F as For, E as untrack, $ as $TRACK, G as useTransition, H as spread, I as mergeProps, J as createRoot, K as serialize, L as Index, M as updateNestedDataByPath, N as addEventListener, O as stringify, Q as Match, R as Switch, T as deleteNestedDataByPath, U as splitProps, V as Dynamic, W as createComputed } from "./main-BHusMbtB.js";
1
+ import { b as createContext, d as createSignal, o as onMount, e as createEffect, c as createMemo, a as createComponent, P as Portal, m as memo, S as Show, t as template, i as insert, f as createRenderEffect, h as className, j as clearDelegatedEvents, k as delegateEvents, u as useContext, l as onCleanup, s as sortFns, n as mutationSortFns, p as on, q as setAttribute, r as getSidedProp, v as use, w as convertRemToPixels, x as createUniqueId, y as batch, z as getQueryStatusLabel, A as getMutationStatusColor, B as getQueryStatusColor, C as getQueryStatusColorByLabel, D as displayValue, F as For, E as untrack, $ as $TRACK, G as useTransition, H as spread, I as mergeProps, J as createRoot, K as serialize, L as Index, M as updateNestedDataByPath, N as addEventListener, O as stringify, Q as Match, R as Switch, T as deleteNestedDataByPath, U as splitProps, V as Dynamic, W as createComputed } from "./main-B51h5LxL.js";
2
2
  var isNonNullable = (i2) => i2 != null;
3
3
  var filterNonNullable = (arr) => arr.filter(isNonNullable);
4
4
  function chain(callbacks) {
@@ -1,5 +1,5 @@
1
- import { c as createLocalStorage, T as THEME_PREFERENCE, P as PiPProvider, a as ThemeContext, D as Devtools, Q as QueryDevtoolsContext } from "./AP7HFJJL-CcAoLsul.js";
2
- import { g as getPreferredColorScheme, c as createMemo, a as createComponent } from "./main-BHusMbtB.js";
1
+ import { c as createLocalStorage, T as THEME_PREFERENCE, P as PiPProvider, a as ThemeContext, D as Devtools, Q as QueryDevtoolsContext } from "./AP7HFJJL-C9ElHHxz.js";
2
+ import { g as getPreferredColorScheme, c as createMemo, a as createComponent } from "./main-B51h5LxL.js";
3
3
  var DevtoolsComponent = (props) => {
4
4
  const [localStore, setLocalStore] = createLocalStorage({
5
5
  prefix: "TanstackQueryDevtools"
@@ -1,4 +1,4 @@
1
- import { om as normalizeDates$1, on as startOfWeek$1, oo as buildFormatLongFn$1, op as buildLocalizeFn$1, oq as buildMatchFn$1, or as buildMatchPatternFn$1, os as toDate$1, ot as match$1l, ou as localize$1n, ov as formatRelative$1n, ow as formatDistance$1n, ox as DateLib, oy as enUS$1 } from "./use-job-queue-polling-DKUd4UP0.js";
1
+ import { om as normalizeDates$1, on as startOfWeek$1, oo as buildFormatLongFn$1, op as buildLocalizeFn$1, oq as buildMatchFn$1, or as buildMatchPatternFn$1, os as toDate$1, ot as match$1l, ou as localize$1n, ov as formatRelative$1n, ow as formatDistance$1n, ox as DateLib, oy as enUS$1 } from "./use-job-queue-polling-Dhe9AG6q.js";
2
2
  function isSameWeek$1(laterDate, earlierDate, options2) {
3
3
  const [laterDate_, earlierDate_] = normalizeDates$1(
4
4
  options2?.in,
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import { c as createLucideIcon, nt as loadI18nMessages, nD as UserSettingsProvider, nE as ThemeProvider, nF as AuthProvider, nG as ServerConfigProvider, nH as ChannelProvider, nI as AlertsProvider, l5 as CustomProviders, df as objectType, du as stringType, mU as useAuth, gv as LoginForm, hq as LoginBranding, gk as AppLayout, nJ as endOfDay, nK as startOfMonth, bD as useUserSettings, nb as usePermissions, kx as getDashboardWidgetRegistry, eL as Page, eM as PageTitle, eN as PageActionBar, md as ActionBarItem, gi as DateRangePicker, dP as Button, eP as PageLayout, mo as FullWidthPageBlock, kA as WidgetFiltersProvider, i$ as GridLayout, ky as getDashboardWidget, na as usePaginatedList, mE as api, kV as getMutationName, fA as DataTableBulkActionItem, nL as Trash, mM as graphql, gf as useGeneratedColumns, fU as DataTable, gY as CountrySelector, jt as Sheet, jA as SheetTrigger, jv as SheetContent, jy as SheetHeader, jz as SheetTitle, jw as SheetDescription, jm as ScrollArea, mw as ListPage, dQ as Plus, h3 as DetailPageButton, eX as BooleanDisplayBadge, dR as Badge, mR as setSettingsStoreValueDocument, nM as createColumnHelper, gX as CopyableText, jV as Switch$1, iE as Dialog, iM as DialogTrigger, iG as DialogContent, iJ as DialogHeader, iD as DialogTitle, iH as DialogDescription, eZ as JsonViewer, iI as DialogFooter, dO as Input, n6 as useLocalFormat, bR as DropdownMenu, bS as DropdownMenuTrigger, bT as Ellipsis, bV as DropdownMenuContent, bW as DropdownMenuItem, nN as Clock, nO as Check, nP as RefreshCw, nQ as ChevronDown, nR as EllipsisVertical, gJ as AssignToChannelBulkAction, mV as useChannel, hs as RemoveFromChannelBulkAction, mI as configurableOperationFragment, np as LS_KEY_SHIPPING_TEST_ADDRESS, hR as AccordionItem, hS as AccordionTrigger, hQ as AccordionContent, i_ as Form, eS as FormFieldWrapper, bF as Select, bG as SelectTrigger, bI as SelectValue, bJ as SelectContent, bK as SelectItem, nq as LS_KEY_SHIPPING_TEST_ORDER, nS as useReactTable, nT as getCoreRowModel, jW as Table, k0 as TableHeader, k1 as TableRow, j$ as TableHead, nU as flexRender, jX as TableBody, jZ as TableCell, hr as ProductVariantSelector, hJ as VendureImage, bZ as Trash2, e$ as Money, ij as Card, ip as CardHeader, iq as CardTitle, il as CardContent, i3 as Alert, i4 as AlertDescription, hP as Accordion, hG as RichTextDescriptionCell, ns as SUPER_ADMIN_ROLE_CODE, nk as CUSTOMER_ROLE_CODE, nV as Layers, gP as ChannelCodeLabel, hz as RoleCodeLabel, mG as getEntityDuplicatorsDocument, nW as getInitialConfigArgValue, gS as ConfigurableOperationInput, mF as duplicateEntityDocument, nX as Copy, h5 as ErrorPage, kI as extendDetailFormQuery, kP as addCustomFields, mz as getDetailQueryOptions, eJ as useDetailPage, eQ as PageBlock, eR as DetailFormGrid, jd as PasswordInput, eU as CustomFieldsPageBlock, mH as assetFragment, h7 as FacetValueSelector, h6 as FacetValueChip, gL as usePriceFactor, fF as FacetValueFacetedFilter, hC as StockLevelLabel, mL as errorResultFragment, mK as configurableOperationDefFragment, bC as useServerConfig, hD as CustomerCell, hE as OrderStateCell, hF as OrderMoneyCell, eH as NEW_ENTITY_PATH, hh as LanguageSelector, mO as schemaLanguageCodes, fb as NumberInput, hn as PaginatedListDataTable, hm as PaginatedListDataTableKey, h2 as CustomerSelector, nY as useDebounce, bX as Folder, nZ as Search, n_ as ChevronRight, n$ as getExpandedRowModel, fO as getItemParentId, fR as calculateDragTargetPosition, fQ as isCircularReference, fS as calculateSiblingIndex, o0 as deleteAssetsDocument, cW as enumType, cP as coerce, gD as AssetGallery, mv as detailPageRouteLoader, hH as TaxCategorySelector, hO as ZoneSelector, k7 as Textarea, gV as ConfigurableOperationSelector, eT as TranslatableFormFieldWrapper, fq as RichTextInput, n4 as useGroupedPermissions, ke as TooltipProvider, kc as Tooltip, kf as TooltipTrigger, o1 as Info, kd as TooltipContent, gQ as ChannelSelector, gU as ConfigurableOperationMultiSelector, f7 as DateTimeInput, dS as X, cM as arrayType, nC as a, k2 as Tabs, k4 as TabsList, k5 as TabsTrigger, o2 as Link$1, k3 as TabsContent, iu as Command, iy as CommandInput, iA as CommandList, iw as CommandEmpty, iz as CommandItem, cO as booleanType, cl as ZodIssueCode, dq as recordType, C as Checkbox, iQ as Field, iT as FieldError, fa as MoneyInput, gW as ConfirmationDialog, hU as AlertDialog, hX as AlertDialogContent, h_ as AlertDialogHeader, hT as AlertDialogTitle, hY as AlertDialogDescription, hZ as AlertDialogFooter, hW as AlertDialogCancel, hV as AlertDialogAction, ho as PermissionGuard, n9 as usePage, fs as SlugInput, gN as AssignedFacetValues, gM as AssignedChannels, h4 as EntityAssets, dV as Separator, g_ as CustomFieldsForm, iV as FieldLabel, m_ as useDynamicTranslations, o3 as getTypeForState, bH as cn, nm as DEFAULT_CHANNEL_CODE, fp as createRelationSelectorConfig, fo as RelationSelector, j5 as Label, o4 as CircleAlert, mW as useCustomFieldConfig, gj as LabeledData, ir as Collapsible, is as CollapsibleTrigger, it as CollapsibleContent, o5 as Globe, mc as HistoryEntry, o6 as SquarePen, hf as useHistoryNoteEditor, hd as HistoryTimelineWithGrouping, hc as HistoryNoteInput, ha as HistoryNoteEditor, hb as HistoryNoteEntry, jS as Skeleton, kR as getFieldsFromDocumentNode, fL as getColumnVisibility, o7 as Pencil, o8 as stateTypeToBadgeVariant, o9 as ChevronLeft, g$ as CustomerAddressForm$1, oa as Users, h0 as CustomerGroupChip, h1 as CustomerGroupSelector, ob as Eye, i5 as AlertTitle, n5 as useJobQueuePolling, hB as SellerSelector, gZ as CurrencySelector, oc as tagListDocument, od as updateTagDocument, oe as deleteTagDocument, of as createTagDocument, je as Popover, jj as PopoverTrigger, og as ChevronsUpDown, jf as PopoverContent, ix as CommandGroup, oh as Settings2, oi as assetDetailDocument, oj as assetUpdateDocument, gB as AssetFocalPointEditor, gI as AssetProperties, gG as AssetPreviewSelector, ok as Focus, hA as RoleSelector, hj as MultiSelect, ol as useRedirectToListOnNotFound, fh as SingleRelationInput, lD as useGeneratedForm, de as numberType, f0 as AffixedInput, iF as DialogClose, jU as Spinner, lq as useDashboardExtensions, kH as registerDefaults, l7 as executeDashboardExtensionCallbacks, jT as Toaster, mA as useExtendedRouter, mY as useDisplayLocale, ng as useUiLanguageLoader, kL as setCustomFieldsMap, iN as DirectionProvider, kM as clearCustomFieldsMap } from "./use-job-queue-polling-DKUd4UP0.js";
2
+ import { c as createLucideIcon, nt as loadI18nMessages, nD as UserSettingsProvider, nE as ThemeProvider, nF as AuthProvider, nG as ServerConfigProvider, nH as ChannelProvider, nI as AlertsProvider, l5 as CustomProviders, df as objectType, du as stringType, mU as useAuth, gv as LoginForm, hq as LoginBranding, gk as AppLayout, nJ as endOfDay, nK as startOfMonth, bD as useUserSettings, nb as usePermissions, kx as getDashboardWidgetRegistry, eL as Page, eM as PageTitle, eN as PageActionBar, md as ActionBarItem, gi as DateRangePicker, dP as Button, eP as PageLayout, mo as FullWidthPageBlock, kA as WidgetFiltersProvider, i$ as GridLayout, ky as getDashboardWidget, na as usePaginatedList, mE as api, kV as getMutationName, fA as DataTableBulkActionItem, nL as Trash, mM as graphql, gf as useGeneratedColumns, fU as DataTable, gY as CountrySelector, jt as Sheet, jA as SheetTrigger, jv as SheetContent, jy as SheetHeader, jz as SheetTitle, jw as SheetDescription, jm as ScrollArea, mw as ListPage, dQ as Plus, h3 as DetailPageButton, eX as BooleanDisplayBadge, dR as Badge, mR as setSettingsStoreValueDocument, nM as createColumnHelper, gX as CopyableText, jV as Switch$1, iE as Dialog, iM as DialogTrigger, iG as DialogContent, iJ as DialogHeader, iD as DialogTitle, iH as DialogDescription, eZ as JsonViewer, iI as DialogFooter, dO as Input, n6 as useLocalFormat, bR as DropdownMenu, bS as DropdownMenuTrigger, bT as Ellipsis, bV as DropdownMenuContent, bW as DropdownMenuItem, nN as Clock, nO as Check, nP as RefreshCw, nQ as ChevronDown, nR as EllipsisVertical, gJ as AssignToChannelBulkAction, mV as useChannel, hs as RemoveFromChannelBulkAction, mI as configurableOperationFragment, np as LS_KEY_SHIPPING_TEST_ADDRESS, hR as AccordionItem, hS as AccordionTrigger, hQ as AccordionContent, i_ as Form, eS as FormFieldWrapper, bF as Select, bG as SelectTrigger, bI as SelectValue, bJ as SelectContent, bK as SelectItem, nq as LS_KEY_SHIPPING_TEST_ORDER, nS as useReactTable, nT as getCoreRowModel, jW as Table, k0 as TableHeader, k1 as TableRow, j$ as TableHead, nU as flexRender, jX as TableBody, jZ as TableCell, hr as ProductVariantSelector, hJ as VendureImage, bZ as Trash2, e$ as Money, ij as Card, ip as CardHeader, iq as CardTitle, il as CardContent, i3 as Alert, i4 as AlertDescription, hP as Accordion, hG as RichTextDescriptionCell, ns as SUPER_ADMIN_ROLE_CODE, nk as CUSTOMER_ROLE_CODE, nV as Layers, gP as ChannelCodeLabel, hz as RoleCodeLabel, mG as getEntityDuplicatorsDocument, nW as getInitialConfigArgValue, gS as ConfigurableOperationInput, mF as duplicateEntityDocument, nX as Copy, h5 as ErrorPage, kI as extendDetailFormQuery, kP as addCustomFields, mz as getDetailQueryOptions, eJ as useDetailPage, eQ as PageBlock, eR as DetailFormGrid, jd as PasswordInput, eU as CustomFieldsPageBlock, mH as assetFragment, h7 as FacetValueSelector, h6 as FacetValueChip, gL as usePriceFactor, fF as FacetValueFacetedFilter, hC as StockLevelLabel, mL as errorResultFragment, mK as configurableOperationDefFragment, bC as useServerConfig, hD as CustomerCell, hE as OrderStateCell, hF as OrderMoneyCell, eH as NEW_ENTITY_PATH, hh as LanguageSelector, mO as schemaLanguageCodes, fb as NumberInput, hn as PaginatedListDataTable, hm as PaginatedListDataTableKey, h2 as CustomerSelector, nY as useDebounce, bX as Folder, nZ as Search, n_ as ChevronRight, n$ as getExpandedRowModel, fO as getItemParentId, fR as calculateDragTargetPosition, fQ as isCircularReference, fS as calculateSiblingIndex, o0 as deleteAssetsDocument, cW as enumType, cP as coerce, gD as AssetGallery, mv as detailPageRouteLoader, hH as TaxCategorySelector, hO as ZoneSelector, k7 as Textarea, gV as ConfigurableOperationSelector, eT as TranslatableFormFieldWrapper, fq as RichTextInput, n4 as useGroupedPermissions, ke as TooltipProvider, kc as Tooltip, kf as TooltipTrigger, o1 as Info, kd as TooltipContent, gQ as ChannelSelector, gU as ConfigurableOperationMultiSelector, f7 as DateTimeInput, dS as X, cM as arrayType, nC as a, k2 as Tabs, k4 as TabsList, k5 as TabsTrigger, o2 as Link$1, k3 as TabsContent, iu as Command, iy as CommandInput, iA as CommandList, iw as CommandEmpty, iz as CommandItem, cO as booleanType, cl as ZodIssueCode, dq as recordType, C as Checkbox, iQ as Field, iT as FieldError, fa as MoneyInput, gW as ConfirmationDialog, hU as AlertDialog, hX as AlertDialogContent, h_ as AlertDialogHeader, hT as AlertDialogTitle, hY as AlertDialogDescription, hZ as AlertDialogFooter, hW as AlertDialogCancel, hV as AlertDialogAction, ho as PermissionGuard, n9 as usePage, fs as SlugInput, gN as AssignedFacetValues, gM as AssignedChannels, h4 as EntityAssets, dV as Separator, g_ as CustomFieldsForm, iV as FieldLabel, m_ as useDynamicTranslations, o3 as getTypeForState, bH as cn, nm as DEFAULT_CHANNEL_CODE, fp as createRelationSelectorConfig, fo as RelationSelector, j5 as Label, o4 as CircleAlert, mW as useCustomFieldConfig, gj as LabeledData, ir as Collapsible, is as CollapsibleTrigger, it as CollapsibleContent, o5 as Globe, mc as HistoryEntry, o6 as SquarePen, hf as useHistoryNoteEditor, hd as HistoryTimelineWithGrouping, hc as HistoryNoteInput, ha as HistoryNoteEditor, hb as HistoryNoteEntry, jS as Skeleton, kR as getFieldsFromDocumentNode, fL as getColumnVisibility, o7 as Pencil, o8 as stateTypeToBadgeVariant, o9 as ChevronLeft, g$ as CustomerAddressForm$1, oa as Users, h0 as CustomerGroupChip, h1 as CustomerGroupSelector, ob as Eye, i5 as AlertTitle, n5 as useJobQueuePolling, hB as SellerSelector, gZ as CurrencySelector, oc as tagListDocument, od as updateTagDocument, oe as deleteTagDocument, of as createTagDocument, je as Popover, jj as PopoverTrigger, og as ChevronsUpDown, jf as PopoverContent, ix as CommandGroup, oh as Settings2, oi as assetDetailDocument, oj as assetUpdateDocument, gB as AssetFocalPointEditor, gI as AssetProperties, gG as AssetPreviewSelector, ok as Focus, hA as RoleSelector, hj as MultiSelect, ol as useRedirectToListOnNotFound, fh as SingleRelationInput, lD as useGeneratedForm, de as numberType, f0 as AffixedInput, iF as DialogClose, jU as Spinner, lq as useDashboardExtensions, kH as registerDefaults, l7 as executeDashboardExtensionCallbacks, jT as Toaster, mA as useExtendedRouter, mY as useDisplayLocale, ng as useUiLanguageLoader, kL as setCustomFieldsMap, iN as DirectionProvider, kM as clearCustomFieldsMap } from "./use-job-queue-polling-Dhe9AG6q.js";
3
3
  import { toast } from "sonner";
4
4
  import { i18n } from "@lingui/core";
5
5
  import { I18nProvider as I18nProvider$1, useLingui, Trans } from "@lingui/react";
@@ -2932,7 +2932,7 @@ var TanstackQueryDevtools = class {
2932
2932
  if (this.#Component) {
2933
2933
  Devtools = this.#Component;
2934
2934
  } else {
2935
- Devtools = lazy(() => import("./WDYDFRGG-Cvm1r2UU.js"));
2935
+ Devtools = lazy(() => import("./WDYDFRGG-Bfnowo_y.js"));
2936
2936
  this.#Component = Devtools;
2937
2937
  }
2938
2938
  setupStyleSheet(this.#styleNonce, this.#shadowDOMTarget);
@@ -3070,7 +3070,7 @@ var TanstackQueryDevtoolsPanel = class {
3070
3070
  if (this.#Component) {
3071
3071
  Devtools = this.#Component;
3072
3072
  } else {
3073
- Devtools = lazy(() => import("./2SSKDMRQ-DlWAmBpQ.js"));
3073
+ Devtools = lazy(() => import("./2SSKDMRQ-BYUZEDFM.js"));
3074
3074
  this.#Component = Devtools;
3075
3075
  }
3076
3076
  setupStyleSheet(this.#styleNonce, this.#shadowDOMTarget);
@@ -20278,6 +20278,9 @@ const deleteCustomerNoteDocument = graphql(`
20278
20278
  }
20279
20279
  }
20280
20280
  `);
20281
+ function customerHistoryQueryKey(customerId) {
20282
+ return ["CustomerHistory", customerId];
20283
+ }
20281
20284
  function useCustomerHistory({
20282
20285
  customerId,
20283
20286
  pageSize = 10
@@ -20306,7 +20309,7 @@ function useCustomerHistory({
20306
20309
  take: pageSize
20307
20310
  }
20308
20311
  }),
20309
- queryKey: ["CustomerHistory", customerId],
20312
+ queryKey: customerHistoryQueryKey(customerId),
20310
20313
  initialPageParam: 0,
20311
20314
  getNextPageParam: (lastPage, pages, lastPageParam) => {
20312
20315
  const totalItems = lastPage.customer?.history?.totalItems ?? 0;
@@ -20549,6 +20552,7 @@ function CustomerDetailPage() {
20549
20552
  const {
20550
20553
  _: _t
20551
20554
  } = useLingui();
20555
+ const queryClient2 = useQueryClient();
20552
20556
  const [newAddressOpen, setNewAddressOpen] = useState(false);
20553
20557
  const {
20554
20558
  form,
@@ -20600,6 +20604,10 @@ function CustomerDetailPage() {
20600
20604
  id: data.id
20601
20605
  }
20602
20606
  });
20607
+ } else {
20608
+ await queryClient2.invalidateQueries({
20609
+ queryKey: customerHistoryQueryKey(data.id)
20610
+ });
20603
20611
  }
20604
20612
  } else {
20605
20613
  toast.error(creatingNewEntity ? _t(
@@ -39245,7 +39245,7 @@ function useDayPickerLocale() {
39245
39245
  } = useDisplayLocale();
39246
39246
  const [calendarLocale, setCalendarLocale] = useState(void 0);
39247
39247
  useEffect(() => {
39248
- import("./locale-Dhjo0zFV.js").then((mod) => {
39248
+ import("./locale-M7cbtrsA.js").then((mod) => {
39249
39249
  setCalendarLocale(bcpTagToDatePickerLocale(bcp47Tag, mod));
39250
39250
  });
39251
39251
  }, [bcp47Tag]);
@@ -78361,6 +78361,18 @@ const renderStructFieldInput = (structField, inputField, isReadonly = false) =>
78361
78361
  }
78362
78362
  return renderSingleStructInput(inputField);
78363
78363
  };
78364
+ function selectListInputComponent(fieldDef, valueMode) {
78365
+ if (fieldDef.type === "string") {
78366
+ return "string";
78367
+ }
78368
+ if (valueMode === "json-string") {
78369
+ return "configurable-operation";
78370
+ }
78371
+ if (fieldDef.type === "relation") {
78372
+ return "relation";
78373
+ }
78374
+ return "custom-field";
78375
+ }
78364
78376
  const nativeValueTransformer = {
78365
78377
  parse: (value2, fieldDef) => {
78366
78378
  return value2;
@@ -78498,16 +78510,16 @@ function renderStructField(fieldDef, field, fieldWithTransform, isList2, isReado
78498
78510
  return /* @__PURE__ */ jsx(StructFormInput, { ...fieldWithTransform, fieldDef });
78499
78511
  }
78500
78512
  function renderListField(fieldDef, field, fieldWithTransform, valueMode, isReadonly) {
78501
- if (valueMode === "json-string") {
78502
- return /* @__PURE__ */ jsx(ConfigurableOperationListInput, { ...fieldWithTransform, fieldDef });
78503
- }
78504
- if (fieldDef.type === "relation") {
78505
- return /* @__PURE__ */ jsx(DefaultInputForType, { ...fieldWithTransform, fieldDef });
78506
- }
78507
- if (fieldDef.type === "string") {
78508
- return /* @__PURE__ */ jsx(StringListInput, { ...fieldWithTransform, fieldDef });
78513
+ switch (selectListInputComponent(fieldDef, valueMode)) {
78514
+ case "string":
78515
+ return /* @__PURE__ */ jsx(StringListInput, { ...fieldWithTransform, fieldDef });
78516
+ case "configurable-operation":
78517
+ return /* @__PURE__ */ jsx(ConfigurableOperationListInput, { ...fieldWithTransform, fieldDef });
78518
+ case "relation":
78519
+ return /* @__PURE__ */ jsx(DefaultInputForType, { ...fieldWithTransform, fieldDef });
78520
+ case "custom-field":
78521
+ return /* @__PURE__ */ jsx(CustomFieldListInput, { ...field, disabled: isReadonly, renderInput: (index2, inputField) => /* @__PURE__ */ jsx(DefaultInputForType, { ...inputField, fieldDef }), defaultValue: getDefaultValueForType(fieldDef.type) });
78509
78522
  }
78510
- return /* @__PURE__ */ jsx(CustomFieldListInput, { ...field, disabled: isReadonly, renderInput: (index2, inputField) => /* @__PURE__ */ jsx(DefaultInputForType, { ...inputField, fieldDef }), defaultValue: getDefaultValueForType(fieldDef.type) });
78511
78523
  }
78512
78524
  function FormControlAdapter({
78513
78525
  fieldDef,
@@ -78570,7 +78582,13 @@ function ConfigurableOperationListInput({
78570
78582
  }) });
78571
78583
  }
78572
78584
  function parseArrayValue(value2) {
78585
+ if (Array.isArray(value2)) {
78586
+ return value2.map(String);
78587
+ }
78573
78588
  if (!value2) return [];
78589
+ if (typeof value2 !== "string") {
78590
+ return [String(value2)];
78591
+ }
78574
78592
  try {
78575
78593
  const parsed = JSON.parse(value2);
78576
78594
  return Array.isArray(parsed) ? parsed.map(String) : [String(parsed)];
@@ -1,5 +1,5 @@
1
- import { c as createLucideIcon, g as getComputedStyle$1, i as isHTMLElement, r as round, a as createLucideIcon$1, b as isFieldDisabled, C as Checkbox, u as useBaseUiId, d as useIsoLayoutEffect, f as formatErrorMessage, e as useRenderElement, N as NOOP, h as useTransitionStatus, j as useStableCallback, k as useOpenChangeComplete, t as transitionStatusMapping, l as useTimeout, m as createSelector, n as compareItemEquality, o as hasNullItemLabel, s as stringifyAsLabel, p as defaultItemEquality, q as useFormContext, v as useFieldRootContext, w as useLabelableId, x as useControlled, E as EMPTY_ARRAY, y as useRefWithInit, z as isGroupedItems, S as Store, A as EMPTY_OBJECT, B as stringifyAsValue, D as useStore, F as useValueAsRef, G as useOpenInteractionType, H as useField, I as createGenericEventDetails, J as inputClear, K as inputChange, L as createChangeEventDetails, M as focusOut, O as outsidePress, P as getTarget, Q as itemPress, R as selectedValueIncludes, T as removeItem, U as none, V as findItemIndex, W as useValueChanged, X as useFloatingRootContext, Y as useClick, Z as inputPress, _ as useDismiss, $ as contains, a0 as useListNavigation, a1 as useInteractions, a2 as useOnFirstRender, a3 as useMergedRefs, a4 as visuallyHiddenInput, a5 as visuallyHidden, a6 as resolveMultipleLabels, a7 as resolveSelectedLabel, a8 as fieldValidityMapping, a9 as pressableTriggerOpenStateMapping, aa as useButton, ab as closePress, ac as useLabelableContext, ad as useDirection, ae as DEFAULT_FIELD_STATE_ATTRIBUTES, af as resolveAriaLabelledBy, ag as stopEvent, ah as isFirefox, ai as escapeKey, aj as isAndroid, ak as useTypeahead, al as listNavigation, am as ownerDocument, an as getPseudoElementBounds, ao as CompositeList, ap as FloatingPortal, aq as DROPDOWN_COLLISION_AVOIDANCE, ar as useAnchorPositioning, as as useScrollLock, at as InternalBackdrop, au as inertValue, av as getDisabledMountTransitionStyles, aw as popupStateMapping, ax as FloatingFocusManager, ay as useCompositeListItem, az as IndexGuessBehavior, aA as chipRemovePress, aB as triggerOpenStateMapping, aC as clearPress, aD as useId, aE as ContextMenuRootContext, aF as MenuRootContext, aG as MenuRoot, aH as useContextMenuRootContext, aI as useMenuRootContext, aJ as findRootOwnerId, aK as cancelOpen, aL as triggerPress, aM as MenubarContext, aN as FloatingTree, aO as CompositeRoot, aP as useFloatingNodeId, aQ as useFloatingTree, aR as useMenubarContext, aS as FloatingNode, aT as useFloatingParentNodeId, aU as linkPress, aV as activeElement, aW as triggerHover, aX as getEmptyRootContext, aY as useHoverFloatingInteraction, aZ as getNodeChildren, a_ as useAnimationFrame, a$ as useAnimationsFinished, b0 as getWindow, b1 as TransitionStatusDataAttributes, b2 as useHoverInteractionSharedState, b3 as clearSafePolygonPointerEventsMutation, b4 as useHoverReferenceInteraction, b5 as safePolygon, b6 as isWebKit, b7 as CompositeItem, b8 as FocusGuard, b9 as isOutsideEvent, ba as getPreviousTabbable, bb as ownerVisuallyHidden, bc as isTabbable, bd as getNextTabbable, be as getTabbableAfterElement, bf as applySafePolygonPointerEventsMutation, bg as PATIENT_CLICK_THRESHOLD, bh as POPUP_COLLISION_AVOIDANCE, bi as adaptiveOrigin, bj as enableFocusInside, bk as disableFocusInside, bl as clamp, bm as warn, bn as getDefaultLabelId, bo as keyboard, bp as isElement, bq as drag, br as trackPress, bs as useCSPContext, bt as useOnMount, bu as mergeProps, bv as COMPOSITE_KEYS, bw as HOME, bx as END, by as ARROW_LEFT, bz as ARROW_DOWN, bA as ARROW_RIGHT, bB as ARROW_UP, bC as useServerConfig, bD as useUserSettings, bE as useSortedLanguages, bF as Select, bG as SelectTrigger, bH as cn, bI as SelectValue, bJ as SelectContent, bK as SelectItem, bL as useSidebar, bM as SidebarGroup, bN as SidebarGroupLabel, bO as SidebarMenu, bP as SidebarMenuItem, bQ as SidebarMenuButton, bR as DropdownMenu, bS as DropdownMenuTrigger, bT as Ellipsis, bU as SidebarMenuAction, bV as DropdownMenuContent, bW as DropdownMenuItem, bX as Folder, bY as DropdownMenuSeparator, bZ as Trash2, b_ as BRAND, b$ as DIRTY, c0 as EMPTY_PATH, c1 as INVALID, c2 as NEVER, c3 as OK, c4 as ParseStatus, c5 as ZodType, c6 as ZodAny, c7 as ZodArray, c8 as ZodBigInt, c9 as ZodBoolean, ca as ZodBranded, cb as ZodCatch, cc as ZodDate, cd as ZodDefault, ce as ZodDiscriminatedUnion, cf as ZodEffects, cg as ZodEnum, ch as ZodError, ci as ZodFirstPartyTypeKind, cj as ZodFunction, ck as ZodIntersection, cl as ZodIssueCode, cm as ZodLazy, cn as ZodLiteral, co as ZodMap, cp as ZodNaN, cq as ZodNativeEnum, cr as ZodNever, cs as ZodNull, ct as ZodNullable, cu as ZodNumber, cv as ZodObject, cw as ZodOptional, cx as ZodParsedType, cy as ZodPipeline, cz as ZodPromise, cA as ZodReadonly, cB as ZodRecord, cC as ZodSet, cD as ZodString, cE as ZodSymbol, cF as ZodTuple, cG as ZodUndefined, cH as ZodUnion, cI as ZodUnknown, cJ as ZodVoid, cK as addIssueToContext, cL as anyType, cM as arrayType, cN as bigIntType, cO as booleanType, cP as coerce, cQ as custom, cR as dateType, cS as datetimeRegex, cT as errorMap, cU as discriminatedUnionType, cV as effectsType, cW as enumType, cX as functionType, cY as getErrorMap, cZ as getParsedType, c_ as instanceOfType, c$ as intersectionType, d0 as isAborted, d1 as isAsync, d2 as isDirty, d3 as isValid, d4 as late, d5 as lazyType, d6 as literalType, d7 as makeIssue, d8 as mapType, d9 as nanType, da as nativeEnumType, db as neverType, dc as nullType, dd as nullableType, de as numberType, df as objectType, dg as objectUtil, dh as oboolean, di as onumber, dj as optionalType, dk as ostring, dl as pipelineType, dm as preprocessType, dn as promiseType, dp as quotelessJson, dq as recordType, dr as setType, ds as setErrorMap, dt as strictObjectType, du as stringType, dv as symbolType, dw as tupleType, dx as undefinedType, dy as unionType, dz as unknownType, dA as util, dB as voidType, dC as MotionConfigContext, dD as isHTMLElement$1, dE as useConstant, dF as PresenceContext, dG as usePresence, dH as useIsomorphicLayoutEffect$1, dI as LayoutGroupContext, dJ as frame, dK as animateVisualElement, dL as setTarget, dM as invariant, dN as resolveElements, dO as Input, dP as Button, dQ as Plus, dR as Badge, dS as X, dT as cn$1, dU as cva, dV as Separator, dW as useRender, dX as Button$1, dY as ChevronLeft, dZ as ChevronRight, d_ as throttle, d$ as warn$1, e0 as isPercent, e1 as getDisplayName, e2 as clsx, e3 as Tooltip, e4 as Legend, e5 as X$1, e6 as InputGroup, e7 as InputGroupInput, e8 as InputGroupAddon, e9 as InputGroupButton, ea as Check, eb as Separator$1, ec as ChevronDown, ed as MenuCheckboxItem, ee as MenuCheckboxItemIndicator, ef as MenuPortal, eg as MenuPositioner, eh as MenuPopup, ei as MenuGroup, ej as MenuItem, ek as MenuGroupLabel, el as MenuRadioGroup, em as MenuRadioItem, en as MenuRadioItemIndicator, eo as MenuSubmenuRoot, ep as MenuSubmenuTrigger, eq as Close, er as Description, es as Title, et as Trigger, eu as Root$1, ev as Content$1, ew as Overlay$1, ex as Portal$1, ey as DropdownMenuContent$1, ez as DropdownMenuGroup, eA as DropdownMenuLabel, eB as DropdownMenuPortal, eC as DropdownMenuRadioGroup, eD as DropdownMenuShortcut, eE as DropdownMenuSub, eF as DropdownMenuSubContent, eG as DropdownMenuSubTrigger, eH as NEW_ENTITY_PATH, eI as getEntityName, eJ as useDetailPage, eK as getOperationVariablesFields, eL as Page, eM as PageTitle, eN as PageActionBar, eO as PageActionBarRight, eP as PageLayout, eQ as PageBlock, eR as DetailFormGrid, eS as FormFieldWrapper, eT as TranslatableFormFieldWrapper, eU as CustomFieldsPageBlock, eV as DefaultInputForType } from "./chunks/use-job-queue-polling-DKUd4UP0.js";
2
- import { nj, hP, hQ, hR, hS, md, me, fz, fx, f0, i3, i6, i4, hU, hV, hW, hX, hY, hZ, h_, h$, i0, i1, hT, i2, kj, i5, gw, kk, gy, gx, gk, gl, gA, gB, gD, gE, gH, gF, gG, gI, gJ, gK, gM, gN, fV, eX, eW, f1, i8, i9, ia, ib, ic, id, ie, nk, ih, ii, ij, ik, il, im, io, ip, iq, gO, gP, gQ, gm, ir, it, is, fy, f2, iu, iv, iw, ix, iy, iz, iA, iB, iC, gR, gS, f3, gU, gV, gW, gX, gY, hM, nl, gZ, f4, g_, lu, l5, g$, hD, h0, f5, h1, h2, fX, nm, kq, fU, fW, fA, fB, fC, fD, f_, fG, fI, fH, fJ, g0, g2, fK, fE, g4, fT, gi, eY, f7, f8, h3, mf, gn, gu, iE, iF, iG, iH, iI, iJ, iK, iL, iD, iM, iN, ko, iO, iP, h4, h5, h6, fF, f9, h7, iQ, iR, iS, iT, iU, iV, iW, iX, iY, iZ, i_, lv, mo, go, g5, g6, i$, mc, h8, h9, ha, hb, hc, he, hd, j0, j1, j2, g7, f$, hg, ht, j3, j4, e_, eZ, nn, no, np, nq, nr, j5, gj, gp, hh, hu, mw, mk, hq, gv, hi, g8, gq, hp, kt, e$, fa, fi, hj, g9, g1, gr, gs, gt, hk, fb, hF, hE, lC, mn, ml, mm, mq, hl, hn, hm, j6, j7, j8, j9, ja, jb, jc, fc, jd, ho, hK, je, jf, jg, jh, ji, jj, fg, ff, hr, jk, jl, ga, fo, fm, hs, hN, hv, hG, hw, fq, hz, hA, g3, ns, gb, gc, jm, jn, jo, jp, jq, jr, js, fr, hB, jt, ju, jv, jw, jx, jy, jz, jA, jB, jC, jD, jE, jF, jG, jH, jI, jJ, jK, jL, jM, jN, jO, jP, jQ, jR, fh, jS, fs, jU, hC, ft, fu, jV, jW, jX, jY, jZ, hx, hy, j_, j$, k0, k1, k2, k3, k4, k5, hH, fv, k7, fw, hL, jT, ka, k8, k9, kc, kd, ke, kf, hI, gg, hJ, gh, kp, kz, kA, hO, kC, lf, kP, kO, lt, lb, le, kE, mt, mu, kG, mE, gz, ly, mH, i7, fZ, ig, fR, fS, ny, kM, fl, mJ, mK, mI, lG, gC, lw, fp, fk, l8, mv, mF, mL, l7, kI, kJ, mx, lY, nz, la, ld, ki, kh, kB, fL, kN, mb, mh, l1, mj, ky, kx, lz, lx, ls, mz, l9, mG, k_, n1, kR, lB, lc, fO, fP, kD, kQ, kV, mr, kU, kW, kS, kT, mQ, fN, mD, kX, m9, kF, lA, mB, kK, mM, m6, m3, l0, gT, lP, l$, fQ, lJ, lI, lS, m0, kZ, m5, lR, l_, lQ, lZ, m1, lM, lO, m4, mp, m2, lT, kY, lK, lL, lW, lX, lU, lV, lN, m8, kr, ks, nt, fd, fe, nu, m7, gd, nA, l6, ku, kv, fY, fM, fj, mN, kg, lg, mg, l2, l3, mi, kw, lh, kH, li, lj, lk, ll, lm, ln, my, lo, mC, lp, lF, nB, l4, kl, mP, mO, km, kL, ms, mR, lH, k6, kb, lE, ma, mT, mS, ge, mU, mV, kn, mW, lq, mX, f6, mY, mZ, m_, m$, n0, mA, n2, n3, gf, lD, n4, hf, n7, nd, n5, k$, n6, lr, nv, n9, n8, na, nb, gL, fn, nf, nc, nw, ne, nx, ng, nh, ni, nC } from "./chunks/use-job-queue-polling-DKUd4UP0.js";
1
+ import { c as createLucideIcon, g as getComputedStyle$1, i as isHTMLElement, r as round, a as createLucideIcon$1, b as isFieldDisabled, C as Checkbox, u as useBaseUiId, d as useIsoLayoutEffect, f as formatErrorMessage, e as useRenderElement, N as NOOP, h as useTransitionStatus, j as useStableCallback, k as useOpenChangeComplete, t as transitionStatusMapping, l as useTimeout, m as createSelector, n as compareItemEquality, o as hasNullItemLabel, s as stringifyAsLabel, p as defaultItemEquality, q as useFormContext, v as useFieldRootContext, w as useLabelableId, x as useControlled, E as EMPTY_ARRAY, y as useRefWithInit, z as isGroupedItems, S as Store, A as EMPTY_OBJECT, B as stringifyAsValue, D as useStore, F as useValueAsRef, G as useOpenInteractionType, H as useField, I as createGenericEventDetails, J as inputClear, K as inputChange, L as createChangeEventDetails, M as focusOut, O as outsidePress, P as getTarget, Q as itemPress, R as selectedValueIncludes, T as removeItem, U as none, V as findItemIndex, W as useValueChanged, X as useFloatingRootContext, Y as useClick, Z as inputPress, _ as useDismiss, $ as contains, a0 as useListNavigation, a1 as useInteractions, a2 as useOnFirstRender, a3 as useMergedRefs, a4 as visuallyHiddenInput, a5 as visuallyHidden, a6 as resolveMultipleLabels, a7 as resolveSelectedLabel, a8 as fieldValidityMapping, a9 as pressableTriggerOpenStateMapping, aa as useButton, ab as closePress, ac as useLabelableContext, ad as useDirection, ae as DEFAULT_FIELD_STATE_ATTRIBUTES, af as resolveAriaLabelledBy, ag as stopEvent, ah as isFirefox, ai as escapeKey, aj as isAndroid, ak as useTypeahead, al as listNavigation, am as ownerDocument, an as getPseudoElementBounds, ao as CompositeList, ap as FloatingPortal, aq as DROPDOWN_COLLISION_AVOIDANCE, ar as useAnchorPositioning, as as useScrollLock, at as InternalBackdrop, au as inertValue, av as getDisabledMountTransitionStyles, aw as popupStateMapping, ax as FloatingFocusManager, ay as useCompositeListItem, az as IndexGuessBehavior, aA as chipRemovePress, aB as triggerOpenStateMapping, aC as clearPress, aD as useId, aE as ContextMenuRootContext, aF as MenuRootContext, aG as MenuRoot, aH as useContextMenuRootContext, aI as useMenuRootContext, aJ as findRootOwnerId, aK as cancelOpen, aL as triggerPress, aM as MenubarContext, aN as FloatingTree, aO as CompositeRoot, aP as useFloatingNodeId, aQ as useFloatingTree, aR as useMenubarContext, aS as FloatingNode, aT as useFloatingParentNodeId, aU as linkPress, aV as activeElement, aW as triggerHover, aX as getEmptyRootContext, aY as useHoverFloatingInteraction, aZ as getNodeChildren, a_ as useAnimationFrame, a$ as useAnimationsFinished, b0 as getWindow, b1 as TransitionStatusDataAttributes, b2 as useHoverInteractionSharedState, b3 as clearSafePolygonPointerEventsMutation, b4 as useHoverReferenceInteraction, b5 as safePolygon, b6 as isWebKit, b7 as CompositeItem, b8 as FocusGuard, b9 as isOutsideEvent, ba as getPreviousTabbable, bb as ownerVisuallyHidden, bc as isTabbable, bd as getNextTabbable, be as getTabbableAfterElement, bf as applySafePolygonPointerEventsMutation, bg as PATIENT_CLICK_THRESHOLD, bh as POPUP_COLLISION_AVOIDANCE, bi as adaptiveOrigin, bj as enableFocusInside, bk as disableFocusInside, bl as clamp, bm as warn, bn as getDefaultLabelId, bo as keyboard, bp as isElement, bq as drag, br as trackPress, bs as useCSPContext, bt as useOnMount, bu as mergeProps, bv as COMPOSITE_KEYS, bw as HOME, bx as END, by as ARROW_LEFT, bz as ARROW_DOWN, bA as ARROW_RIGHT, bB as ARROW_UP, bC as useServerConfig, bD as useUserSettings, bE as useSortedLanguages, bF as Select, bG as SelectTrigger, bH as cn, bI as SelectValue, bJ as SelectContent, bK as SelectItem, bL as useSidebar, bM as SidebarGroup, bN as SidebarGroupLabel, bO as SidebarMenu, bP as SidebarMenuItem, bQ as SidebarMenuButton, bR as DropdownMenu, bS as DropdownMenuTrigger, bT as Ellipsis, bU as SidebarMenuAction, bV as DropdownMenuContent, bW as DropdownMenuItem, bX as Folder, bY as DropdownMenuSeparator, bZ as Trash2, b_ as BRAND, b$ as DIRTY, c0 as EMPTY_PATH, c1 as INVALID, c2 as NEVER, c3 as OK, c4 as ParseStatus, c5 as ZodType, c6 as ZodAny, c7 as ZodArray, c8 as ZodBigInt, c9 as ZodBoolean, ca as ZodBranded, cb as ZodCatch, cc as ZodDate, cd as ZodDefault, ce as ZodDiscriminatedUnion, cf as ZodEffects, cg as ZodEnum, ch as ZodError, ci as ZodFirstPartyTypeKind, cj as ZodFunction, ck as ZodIntersection, cl as ZodIssueCode, cm as ZodLazy, cn as ZodLiteral, co as ZodMap, cp as ZodNaN, cq as ZodNativeEnum, cr as ZodNever, cs as ZodNull, ct as ZodNullable, cu as ZodNumber, cv as ZodObject, cw as ZodOptional, cx as ZodParsedType, cy as ZodPipeline, cz as ZodPromise, cA as ZodReadonly, cB as ZodRecord, cC as ZodSet, cD as ZodString, cE as ZodSymbol, cF as ZodTuple, cG as ZodUndefined, cH as ZodUnion, cI as ZodUnknown, cJ as ZodVoid, cK as addIssueToContext, cL as anyType, cM as arrayType, cN as bigIntType, cO as booleanType, cP as coerce, cQ as custom, cR as dateType, cS as datetimeRegex, cT as errorMap, cU as discriminatedUnionType, cV as effectsType, cW as enumType, cX as functionType, cY as getErrorMap, cZ as getParsedType, c_ as instanceOfType, c$ as intersectionType, d0 as isAborted, d1 as isAsync, d2 as isDirty, d3 as isValid, d4 as late, d5 as lazyType, d6 as literalType, d7 as makeIssue, d8 as mapType, d9 as nanType, da as nativeEnumType, db as neverType, dc as nullType, dd as nullableType, de as numberType, df as objectType, dg as objectUtil, dh as oboolean, di as onumber, dj as optionalType, dk as ostring, dl as pipelineType, dm as preprocessType, dn as promiseType, dp as quotelessJson, dq as recordType, dr as setType, ds as setErrorMap, dt as strictObjectType, du as stringType, dv as symbolType, dw as tupleType, dx as undefinedType, dy as unionType, dz as unknownType, dA as util, dB as voidType, dC as MotionConfigContext, dD as isHTMLElement$1, dE as useConstant, dF as PresenceContext, dG as usePresence, dH as useIsomorphicLayoutEffect$1, dI as LayoutGroupContext, dJ as frame, dK as animateVisualElement, dL as setTarget, dM as invariant, dN as resolveElements, dO as Input, dP as Button, dQ as Plus, dR as Badge, dS as X, dT as cn$1, dU as cva, dV as Separator, dW as useRender, dX as Button$1, dY as ChevronLeft, dZ as ChevronRight, d_ as throttle, d$ as warn$1, e0 as isPercent, e1 as getDisplayName, e2 as clsx, e3 as Tooltip, e4 as Legend, e5 as X$1, e6 as InputGroup, e7 as InputGroupInput, e8 as InputGroupAddon, e9 as InputGroupButton, ea as Check, eb as Separator$1, ec as ChevronDown, ed as MenuCheckboxItem, ee as MenuCheckboxItemIndicator, ef as MenuPortal, eg as MenuPositioner, eh as MenuPopup, ei as MenuGroup, ej as MenuItem, ek as MenuGroupLabel, el as MenuRadioGroup, em as MenuRadioItem, en as MenuRadioItemIndicator, eo as MenuSubmenuRoot, ep as MenuSubmenuTrigger, eq as Close, er as Description, es as Title, et as Trigger, eu as Root$1, ev as Content$1, ew as Overlay$1, ex as Portal$1, ey as DropdownMenuContent$1, ez as DropdownMenuGroup, eA as DropdownMenuLabel, eB as DropdownMenuPortal, eC as DropdownMenuRadioGroup, eD as DropdownMenuShortcut, eE as DropdownMenuSub, eF as DropdownMenuSubContent, eG as DropdownMenuSubTrigger, eH as NEW_ENTITY_PATH, eI as getEntityName, eJ as useDetailPage, eK as getOperationVariablesFields, eL as Page, eM as PageTitle, eN as PageActionBar, eO as PageActionBarRight, eP as PageLayout, eQ as PageBlock, eR as DetailFormGrid, eS as FormFieldWrapper, eT as TranslatableFormFieldWrapper, eU as CustomFieldsPageBlock, eV as DefaultInputForType } from "./chunks/use-job-queue-polling-Dhe9AG6q.js";
2
+ import { nj, hP, hQ, hR, hS, md, me, fz, fx, f0, i3, i6, i4, hU, hV, hW, hX, hY, hZ, h_, h$, i0, i1, hT, i2, kj, i5, gw, kk, gy, gx, gk, gl, gA, gB, gD, gE, gH, gF, gG, gI, gJ, gK, gM, gN, fV, eX, eW, f1, i8, i9, ia, ib, ic, id, ie, nk, ih, ii, ij, ik, il, im, io, ip, iq, gO, gP, gQ, gm, ir, it, is, fy, f2, iu, iv, iw, ix, iy, iz, iA, iB, iC, gR, gS, f3, gU, gV, gW, gX, gY, hM, nl, gZ, f4, g_, lu, l5, g$, hD, h0, f5, h1, h2, fX, nm, kq, fU, fW, fA, fB, fC, fD, f_, fG, fI, fH, fJ, g0, g2, fK, fE, g4, fT, gi, eY, f7, f8, h3, mf, gn, gu, iE, iF, iG, iH, iI, iJ, iK, iL, iD, iM, iN, ko, iO, iP, h4, h5, h6, fF, f9, h7, iQ, iR, iS, iT, iU, iV, iW, iX, iY, iZ, i_, lv, mo, go, g5, g6, i$, mc, h8, h9, ha, hb, hc, he, hd, j0, j1, j2, g7, f$, hg, ht, j3, j4, e_, eZ, nn, no, np, nq, nr, j5, gj, gp, hh, hu, mw, mk, hq, gv, hi, g8, gq, hp, kt, e$, fa, fi, hj, g9, g1, gr, gs, gt, hk, fb, hF, hE, lC, mn, ml, mm, mq, hl, hn, hm, j6, j7, j8, j9, ja, jb, jc, fc, jd, ho, hK, je, jf, jg, jh, ji, jj, fg, ff, hr, jk, jl, ga, fo, fm, hs, hN, hv, hG, hw, fq, hz, hA, g3, ns, gb, gc, jm, jn, jo, jp, jq, jr, js, fr, hB, jt, ju, jv, jw, jx, jy, jz, jA, jB, jC, jD, jE, jF, jG, jH, jI, jJ, jK, jL, jM, jN, jO, jP, jQ, jR, fh, jS, fs, jU, hC, ft, fu, jV, jW, jX, jY, jZ, hx, hy, j_, j$, k0, k1, k2, k3, k4, k5, hH, fv, k7, fw, hL, jT, ka, k8, k9, kc, kd, ke, kf, hI, gg, hJ, gh, kp, kz, kA, hO, kC, lf, kP, kO, lt, lb, le, kE, mt, mu, kG, mE, gz, ly, mH, i7, fZ, ig, fR, fS, ny, kM, fl, mJ, mK, mI, lG, gC, lw, fp, fk, l8, mv, mF, mL, l7, kI, kJ, mx, lY, nz, la, ld, ki, kh, kB, fL, kN, mb, mh, l1, mj, ky, kx, lz, lx, ls, mz, l9, mG, k_, n1, kR, lB, lc, fO, fP, kD, kQ, kV, mr, kU, kW, kS, kT, mQ, fN, mD, kX, m9, kF, lA, mB, kK, mM, m6, m3, l0, gT, lP, l$, fQ, lJ, lI, lS, m0, kZ, m5, lR, l_, lQ, lZ, m1, lM, lO, m4, mp, m2, lT, kY, lK, lL, lW, lX, lU, lV, lN, m8, kr, ks, nt, fd, fe, nu, m7, gd, nA, l6, ku, kv, fY, fM, fj, mN, kg, lg, mg, l2, l3, mi, kw, lh, kH, li, lj, lk, ll, lm, ln, my, lo, mC, lp, lF, nB, l4, kl, mP, mO, km, kL, ms, mR, lH, k6, kb, lE, ma, mT, mS, ge, mU, mV, kn, mW, lq, mX, f6, mY, mZ, m_, m$, n0, mA, n2, n3, gf, lD, n4, hf, n7, nd, n5, k$, n6, lr, nv, n9, n8, na, nb, gL, fn, nf, nc, nw, ne, nx, ng, nh, ni, nC } from "./chunks/use-job-queue-polling-Dhe9AG6q.js";
3
3
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
4
4
  import * as React from "react";
5
5
  import React__default, { useId as useId$1, useRef, useContext, useInsertionEffect, useMemo, Children, isValidElement, useState, createContext, useCallback, useEffect, forwardRef, useImperativeHandle, cloneElement, useLayoutEffect, useSyncExternalStore } from "react";
@@ -1,7 +1,7 @@
1
1
  import "react/jsx-runtime";
2
- import "./chunks/use-job-queue-polling-DKUd4UP0.js";
2
+ import "./chunks/use-job-queue-polling-Dhe9AG6q.js";
3
3
  import "sonner";
4
- import "./chunks/main-BHusMbtB.js";
4
+ import "./chunks/main-B51h5LxL.js";
5
5
  import "@tanstack/react-router";
6
6
  import "react";
7
7
  import "react-dom";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vendure/dashboard",
3
3
  "private": false,
4
- "version": "3.7.2-master-202607180305",
4
+ "version": "3.7.2-master-202607220305",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
@@ -139,8 +139,8 @@
139
139
  "@storybook/addon-vitest": "^10.3.1",
140
140
  "@storybook/react-vite": "^10.3.1",
141
141
  "@types/node": "^22.19.0",
142
- "@vendure/common": "^3.7.2-master-202607180305",
143
- "@vendure/core": "^3.7.2-master-202607180305",
142
+ "@vendure/common": "^3.7.2-master-202607220305",
143
+ "@vendure/core": "^3.7.2-master-202607220305",
144
144
  "@vitest/browser": "^3.2.4",
145
145
  "@vitest/coverage-v8": "^3.2.4",
146
146
  "eslint": "^9.39.0",
@@ -1,7 +1,7 @@
1
1
  import { api } from '@/vdb/graphql/api.js';
2
2
  import { graphql, ResultOf } from '@/vdb/graphql/graphql.js';
3
3
  import { useLingui } from '@lingui/react/macro';
4
- import { useInfiniteQuery, useMutation } from '@tanstack/react-query';
4
+ import { QueryKey, useInfiniteQuery, useMutation } from '@tanstack/react-query';
5
5
  import { useState } from 'react';
6
6
  import { toast } from 'sonner';
7
7
 
@@ -54,6 +54,10 @@ export interface UseCustomerHistoryResult {
54
54
  hasNextPage: boolean;
55
55
  }
56
56
 
57
+ export function customerHistoryQueryKey(customerId: string): QueryKey {
58
+ return ['CustomerHistory', customerId];
59
+ }
60
+
57
61
  export function useCustomerHistory({
58
62
  customerId,
59
63
  pageSize = 10,
@@ -64,7 +68,7 @@ export function useCustomerHistory({
64
68
  const [isLoading, setIsLoading] = useState(false);
65
69
  const { i18n } = useLingui();
66
70
 
67
- // Fetch order history
71
+ // Fetch customer history
68
72
  const {
69
73
  data,
70
74
  isLoading: isLoadingQuery,
@@ -82,7 +86,7 @@ export function useCustomerHistory({
82
86
  take: pageSize,
83
87
  },
84
88
  }),
85
- queryKey: ['CustomerHistory', customerId],
89
+ queryKey: customerHistoryQueryKey(customerId),
86
90
  initialPageParam: 0,
87
91
  getNextPageParam: (lastPage, pages, lastPageParam) => {
88
92
  const totalItems = lastPage.customer?.history?.totalItems ?? 0;
@@ -28,7 +28,7 @@ import { detailPageRouteLoader } from '@/vdb/framework/page/detail-page-route-lo
28
28
  import { useDetailPage } from '@/vdb/framework/page/use-detail-page.js';
29
29
  import { api } from '@/vdb/graphql/api.js';
30
30
  import { Trans, useLingui } from '@lingui/react/macro';
31
- import { useMutation } from '@tanstack/react-query';
31
+ import { useMutation, useQueryClient } from '@tanstack/react-query';
32
32
  import { createFileRoute, useNavigate } from '@tanstack/react-router';
33
33
  import { Plus } from 'lucide-react';
34
34
  import { useState } from 'react';
@@ -36,6 +36,7 @@ import { toast } from 'sonner';
36
36
  import { CustomerAddressCard } from './components/customer-address-card.js';
37
37
  import { CustomerAddressForm } from './components/customer-address-form.js';
38
38
  import { CustomerHistoryContainer } from './components/customer-history/customer-history-container.js';
39
+ import { customerHistoryQueryKey } from './components/customer-history/use-customer-history.js';
39
40
  import { CustomerOrderTable } from './components/customer-order-table.js';
40
41
  import { CustomerStatusBadge } from './components/customer-status-badge.js';
41
42
  import {
@@ -70,6 +71,7 @@ function CustomerDetailPage() {
70
71
  const navigate = useNavigate();
71
72
  const creatingNewEntity = params.id === NEW_ENTITY_PATH;
72
73
  const { t } = useLingui();
74
+ const queryClient = useQueryClient();
73
75
  const [newAddressOpen, setNewAddressOpen] = useState(false);
74
76
 
75
77
  const { form, submitHandler, entity, isPending, refreshEntity, resetForm } = useDetailPage({
@@ -100,6 +102,8 @@ function CustomerDetailPage() {
100
102
  resetForm();
101
103
  if (creatingNewEntity) {
102
104
  await navigate({ to: `../$id`, params: { id: data.id } });
105
+ } else {
106
+ await queryClient.invalidateQueries({ queryKey: customerHistoryQueryKey(data.id) });
103
107
  }
104
108
  } else {
105
109
  toast.error(creatingNewEntity ? t`Failed to create customer` : t`Failed to update customer`, {
@@ -39,8 +39,16 @@ export function ConfigurableOperationListInput({
39
39
  );
40
40
  }
41
41
 
42
- function parseArrayValue(value: string): string[] {
42
+ function parseArrayValue(value: unknown): string[] {
43
+ // FormControlAdapter passes list values already parsed into an array. Serializing
44
+ // and re-parsing them here dropped numeric-looking entries, so return them as-is.
45
+ if (Array.isArray(value)) {
46
+ return value.map(String);
47
+ }
43
48
  if (!value) return [];
49
+ if (typeof value !== 'string') {
50
+ return [String(value)];
51
+ }
44
52
 
45
53
  try {
46
54
  const parsed = JSON.parse(value);
@@ -13,6 +13,7 @@ import {
13
13
  } from '@/vdb/framework/form-engine/form-engine-types.js';
14
14
  import { isCustomFieldConfig } from '@/vdb/framework/form-engine/utils.js';
15
15
  import { DefaultInputForType } from './default-input-for-type.js';
16
+ import { selectListInputComponent } from './list-input-selection.js';
16
17
  import { transformValue, ValueMode } from './value-transformers.js';
17
18
 
18
19
  export interface FormControlAdapterProps {
@@ -116,26 +117,25 @@ function renderListField(
116
117
  valueMode: ValueMode,
117
118
  isReadonly: boolean,
118
119
  ): JSX.Element {
119
- if (valueMode === 'json-string') {
120
- return <ConfigurableOperationListInput {...fieldWithTransform} fieldDef={fieldDef} />;
121
- }
122
-
123
- if (fieldDef.type === 'relation') {
124
- return <DefaultInputForType {...fieldWithTransform} fieldDef={fieldDef} />;
125
- }
126
-
127
- if (fieldDef.type === 'string') {
128
- return <StringListInput {...fieldWithTransform} fieldDef={fieldDef} />;
120
+ switch (selectListInputComponent(fieldDef, valueMode)) {
121
+ case 'string':
122
+ return <StringListInput {...fieldWithTransform} fieldDef={fieldDef} />;
123
+ case 'configurable-operation':
124
+ return <ConfigurableOperationListInput {...fieldWithTransform} fieldDef={fieldDef} />;
125
+ case 'relation':
126
+ return <DefaultInputForType {...fieldWithTransform} fieldDef={fieldDef} />;
127
+ case 'custom-field':
128
+ return (
129
+ <CustomFieldListInput
130
+ {...field}
131
+ disabled={isReadonly}
132
+ renderInput={(index, inputField) => (
133
+ <DefaultInputForType {...inputField} fieldDef={fieldDef} />
134
+ )}
135
+ defaultValue={getDefaultValueForType(fieldDef.type)}
136
+ />
137
+ );
129
138
  }
130
-
131
- return (
132
- <CustomFieldListInput
133
- {...field}
134
- disabled={isReadonly}
135
- renderInput={(index, inputField) => <DefaultInputForType {...inputField} fieldDef={fieldDef} />}
136
- defaultValue={getDefaultValueForType(fieldDef.type)}
137
- />
138
- );
139
139
  }
140
140
 
141
141
  /**
@@ -0,0 +1,26 @@
1
+ import { ConfigurableFieldDef } from '@/vdb/framework/form-engine/form-engine-types.js';
2
+
3
+ import { ValueMode } from './value-transformers.js';
4
+
5
+ export type ListInputComponentKind = 'string' | 'configurable-operation' | 'relation' | 'custom-field';
6
+
7
+ /**
8
+ * String lists are checked before the json-string mode so they always reach the
9
+ * tag-style StringListInput, which owns the entire array. ConfigurableOperationListInput
10
+ * splits the array into one input per element and loses numeric-looking values.
11
+ */
12
+ export function selectListInputComponent(
13
+ fieldDef: ConfigurableFieldDef,
14
+ valueMode: ValueMode,
15
+ ): ListInputComponentKind {
16
+ if (fieldDef.type === 'string') {
17
+ return 'string';
18
+ }
19
+ if (valueMode === 'json-string') {
20
+ return 'configurable-operation';
21
+ }
22
+ if (fieldDef.type === 'relation') {
23
+ return 'relation';
24
+ }
25
+ return 'custom-field';
26
+ }